summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sw/uiconfig/swriter/ui/linenumbering.ui1
-rw-r--r--vcl/inc/vcl/edit.hxx7
-rw-r--r--vcl/source/control/edit.cxx22
-rw-r--r--vcl/source/window/builder.cxx11
4 files changed, 39 insertions, 2 deletions
diff --git a/sw/uiconfig/swriter/ui/linenumbering.ui b/sw/uiconfig/swriter/ui/linenumbering.ui
index e4d3edfcd761..f664a6bc145b 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 947aeca5de13..20ed5b869ba9 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,
@@ -198,6 +199,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;
@@ -249,6 +253,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 019cca649e95..0f54b2debce0 100644
--- a/vcl/source/control/edit.cxx
+++ b/vcl/source/control/edit.cxx
@@ -219,6 +219,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())
@@ -238,6 +256,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;
@@ -312,6 +331,7 @@ void Edit::ImplInitEditData()
mnXOffset = 0;
mnAlign = EDIT_ALIGN_LEFT;
mnMaxTextLen = EDIT_NOLIMIT;
+ mnMinWidthInChars = 3;
meAutocompleteAction = AUTOCOMPLETE_KEYINPUT;
mbModified = sal_False;
mbInternModified = sal_False;
@@ -2873,7 +2893,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 d85966fd464b..7eb5d442006b 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")))