[Libreoffice-commits] .: Branch 'feature/cmclayouttrans' - sw/uiconfig vcl/inc vcl/source

Libreoffice Gerrit user logerrit at kemper.freedesktop.org
Tue Sep 4 06:15:47 PDT 2012


 sw/uiconfig/swriter/ui/linenumbering.ui |    1 +
 vcl/inc/vcl/edit.hxx                    |    7 ++++++-
 vcl/source/control/edit.cxx             |   22 +++++++++++++++++++++-
 vcl/source/window/builder.cxx           |   11 +++++++++++
 4 files changed, 39 insertions(+), 2 deletions(-)

New commits:
commit ada3c1e8b898873e2bd070cc5abe3d6226e56d50
Author: Caolán McNamara <caolanm at redhat.com>
Date:   Tue Sep 4 14:14:55 2012 +0100

    support GtkEntry width-chars property
    
    Change-Id: I5a3bdf6058b0d786923a9543a064bddcc84f001a

diff --git a/sw/uiconfig/swriter/ui/linenumbering.ui b/sw/uiconfig/swriter/ui/linenumbering.ui
index e4d3edf..f664a6b 100644
--- a/sw/uiconfig/swriter/ui/linenumbering.ui
+++ b/sw/uiconfig/swriter/ui/linenumbering.ui
@@ -363,6 +363,7 @@
                                     <property name="visible">True</property>
                                     <property name="can_focus">True</property>
                                     <property name="invisible_char">●</property>
+                                    <property name="width_chars">3</property>
                                     <property name="invisible_char_set">True</property>
                                   </object>
                                   <packing>
diff --git a/vcl/inc/vcl/edit.hxx b/vcl/inc/vcl/edit.hxx
index 42b9718..12314a6 100644
--- a/vcl/inc/vcl/edit.hxx
+++ b/vcl/inc/vcl/edit.hxx
@@ -76,8 +76,9 @@ private:
     XubString           maRedoText;
     long                mnXOffset;
     Selection           maSelection;
-    sal_uInt16              mnAlign;
+    sal_uInt16          mnAlign;
     xub_StrLen          mnMaxTextLen;
+    sal_Int32           mnMinWidthInChars;
     AutocompleteAction  meAutocompleteAction;
     xub_Unicode         mcEchoChar;
     sal_Bool                mbModified:1,
@@ -197,6 +198,9 @@ public:
     virtual void        SetMaxTextLen( xub_StrLen nMaxLen = EDIT_NOLIMIT );
     virtual xub_StrLen  GetMaxTextLen() const { return mnMaxTextLen; }
 
+    void                SetMaxWidthInChars(sal_Int32 nMinWidthInChars);
+    sal_Int32           GetMinWidthInChars() const { return mnMinWidthInChars; }
+
     virtual void        SetSelection( const Selection& rSelection );
     virtual const Selection&    GetSelection() const;
 
@@ -248,6 +252,7 @@ public:
     virtual rtl::OUString GetSurroundingText() const;
     virtual Selection GetSurroundingTextSelection() const;
     virtual void take_properties(Window &rOther);
+    virtual bool set_property(const rtl::OString &rKey, const rtl::OString &rValue);
 
     // returns the minimum size a bordered Edit should have given the current
     // global style settings (needed by sc's inputwin.cxx)
diff --git a/vcl/source/control/edit.cxx b/vcl/source/control/edit.cxx
index 6dd30d5..dcbacdb 100644
--- a/vcl/source/control/edit.cxx
+++ b/vcl/source/control/edit.cxx
@@ -220,6 +220,24 @@ Edit::Edit( Window* pParent, const ResId& rResId ) :
         Show();
 }
 
+void Edit::SetMaxWidthInChars(sal_Int32 nMinWidthInChars)
+{
+    if (mnMinWidthInChars != nMinWidthInChars)
+    {
+        mnMinWidthInChars = nMinWidthInChars;
+        queue_resize();
+    }
+}
+
+bool Edit::set_property(const rtl::OString &rKey, const rtl::OString &rValue)
+{
+    if (rKey.equalsL(RTL_CONSTASCII_STRINGPARAM("width-chars")))
+        SetMaxWidthInChars(rValue.toInt32());
+    else
+        return Control::set_property(rKey, rValue);
+    return true;
+}
+
 void Edit::take_properties(Window &rOther)
 {
     if (!GetParent())
@@ -239,6 +257,7 @@ void Edit::take_properties(Window &rOther)
     maSelection = rOtherEdit.maSelection;
     mnAlign = rOtherEdit.mnAlign;
     mnMaxTextLen = rOtherEdit.mnMaxTextLen;
+    mnMinWidthInChars = rOtherEdit.mnMinWidthInChars;
     meAutocompleteAction = rOtherEdit.meAutocompleteAction;
     mcEchoChar = rOtherEdit.mcEchoChar;
     mbModified = rOtherEdit.mbModified;
@@ -313,6 +332,7 @@ void Edit::ImplInitEditData()
     mnXOffset               = 0;
     mnAlign                 = EDIT_ALIGN_LEFT;
     mnMaxTextLen            = EDIT_NOLIMIT;
+    mnMinWidthInChars       = 3;
     meAutocompleteAction    = AUTOCOMPLETE_KEYINPUT;
     mbModified              = sal_False;
     mbInternModified        = sal_False;
@@ -2865,7 +2885,7 @@ Size Edit::CalcMinimumSizeForText(const rtl::OUString &rString) const
     Size aSize ( GetTextWidth( rString ), GetTextHeight() );
     // do not create edit fields in which one cannot enter anything
     // a default minimum width should exist for at least 3 characters
-    Size aMinSize ( CalcSize( 3 ) );
+    Size aMinSize ( CalcSize( mnMinWidthInChars ) );
     if( aSize.Width() < aMinSize.Width() )
         aSize.Width() = aMinSize.Width();
     // add some space between text entry and border
diff --git a/vcl/source/window/builder.cxx b/vcl/source/window/builder.cxx
index d85966f..7eb5d44 100644
--- a/vcl/source/window/builder.cxx
+++ b/vcl/source/window/builder.cxx
@@ -304,6 +304,14 @@ namespace
 
         return eUnit;
     }
+
+    void ensureDefaultWidthChars(VclBuilder::stringmap &rMap)
+    {
+        rtl::OString sWidthChars(RTL_CONSTASCII_STRINGPARAM("width-chars"));
+        VclBuilder::stringmap::iterator aFind = rMap.find(sWidthChars);
+        if (aFind == rMap.end())
+            rMap[sWidthChars] = "25";
+    }
 }
 
 bool VclBuilder::extractGroup(const rtl::OString &id, stringmap &rMap)
@@ -469,7 +477,10 @@ Window *VclBuilder::makeObject(Window *pParent, const rtl::OString &name, const
             pWindow = new FixedLine(pParent, WB_HORZ);
     }
     else if (name.equalsL(RTL_CONSTASCII_STRINGPARAM("GtkEntry")))
+    {
         pWindow = new Edit(pParent, WB_LEFT|WB_VCENTER|WB_BORDER|WB_3DLOOK);
+        ensureDefaultWidthChars(rMap);
+    }
     else if (name.equalsL(RTL_CONSTASCII_STRINGPARAM("GtkNotebook")))
         pWindow = new TabControl(pParent, WB_STDTABCONTROL|WB_3DLOOK);
     else if (name.equalsL(RTL_CONSTASCII_STRINGPARAM("GtkDrawingArea")))


More information about the Libreoffice-commits mailing list