summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCaolán McNamara <caolanm@redhat.com>2013-06-24 12:42:39 +0100
committerCaolán McNamara <caolanm@redhat.com>2013-06-24 14:40:40 +0100
commit9495e912797f67897a4a658d20137bb94f39e9ab (patch)
tree6359cf3194cfd6ed41a8dfd1571f5309f1c3231c
parent97f71c5f8be85f47d7978259a2d82708412043fd (diff)
Resolves: fdo#66105 set max growth width for labels/edits which take paths
Change-Id: I12220821f76550baacdc8ce604f2e612d260c1a1
-rw-r--r--cui/uiconfig/ui/pastespecial.ui1
-rw-r--r--include/vcl/edit.hxx3
-rw-r--r--sfx2/uiconfig/ui/documentinfopage.ui2
-rw-r--r--vcl/source/control/edit.cxx21
4 files changed, 26 insertions, 1 deletions
diff --git a/cui/uiconfig/ui/pastespecial.ui b/cui/uiconfig/ui/pastespecial.ui
index fb08b9ecd4e7..3eb4e7da440f 100644
--- a/cui/uiconfig/ui/pastespecial.ui
+++ b/cui/uiconfig/ui/pastespecial.ui
@@ -97,6 +97,7 @@
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="wrap">True</property>
+ <property name="max_width_chars">72</property>
</object>
<packing>
<property name="expand">False</property>
diff --git a/include/vcl/edit.hxx b/include/vcl/edit.hxx
index 11c1ae8c1d6b..6df1f7b8fd25 100644
--- a/include/vcl/edit.hxx
+++ b/include/vcl/edit.hxx
@@ -71,6 +71,7 @@ private:
sal_uInt16 mnAlign;
xub_StrLen mnMaxTextLen;
sal_Int32 mnWidthInChars;
+ sal_Int32 mnMaxWidthChars;
AutocompleteAction meAutocompleteAction;
sal_Unicode mcEchoChar;
sal_Bool mbModified:1,
@@ -193,6 +194,8 @@ public:
void SetWidthInChars(sal_Int32 nWidthInChars);
sal_Int32 GetWidthInChars() const { return mnWidthInChars; }
+ void setMaxWidthChars(sal_Int32 nWidth);
+
virtual void SetSelection( const Selection& rSelection );
virtual const Selection& GetSelection() const;
diff --git a/sfx2/uiconfig/ui/documentinfopage.ui b/sfx2/uiconfig/ui/documentinfopage.ui
index 280997969608..7770b7650d0f 100644
--- a/sfx2/uiconfig/ui/documentinfopage.ui
+++ b/sfx2/uiconfig/ui/documentinfopage.ui
@@ -277,6 +277,7 @@
<property name="can_focus">False</property>
<property name="xalign">0</property>
<property name="selectable">True</property>
+ <property name="max_width_chars">56</property>
</object>
<packing>
<property name="left_attach">1</property>
@@ -338,6 +339,7 @@
<property name="can_focus">False</property>
<property name="xalign">0</property>
<property name="selectable">True</property>
+ <property name="max_width_chars">56</property>
</object>
<packing>
<property name="left_attach">1</property>
diff --git a/vcl/source/control/edit.cxx b/vcl/source/control/edit.cxx
index cfd4d3353541..70f19f9004ec 100644
--- a/vcl/source/control/edit.cxx
+++ b/vcl/source/control/edit.cxx
@@ -214,10 +214,22 @@ void Edit::SetWidthInChars(sal_Int32 nWidthInChars)
}
}
+void Edit::setMaxWidthChars(sal_Int32 nWidth)
+{
+ if (nWidth != mnMaxWidthChars)
+ {
+ mnMaxWidthChars = nWidth;
+ fprintf(stderr, "setMaxWidthChars of %d\n", nWidth);
+ queue_resize();
+ }
+}
+
bool Edit::set_property(const OString &rKey, const OString &rValue)
{
if (rKey == "width-chars")
SetWidthInChars(rValue.toInt32());
+ else if (rKey == "max-width-chars")
+ setMaxWidthChars(rValue.toInt32());
else if (rKey == "max-length")
{
sal_Int32 nTextLen = rValue.toInt32();
@@ -295,6 +307,7 @@ void Edit::ImplInitEditData()
mnAlign = EDIT_ALIGN_LEFT;
mnMaxTextLen = EDIT_NOLIMIT;
mnWidthInChars = -1;
+ mnMaxWidthChars = -1;
meAutocompleteAction = AUTOCOMPLETE_KEYINPUT;
mbModified = sal_False;
mbInternModified = sal_False;
@@ -2886,8 +2899,14 @@ Size Edit::CalcMinimumSizeForText(const OUString &rString) const
}
else
{
+ OUString aString;
+ if (mnMaxWidthChars != -1 && mnMaxWidthChars < rString.getLength())
+ aString = rString.copy(0, mnMaxWidthChars);
+ else
+ aString = rString;
+
aSize.Height() = GetTextHeight();
- aSize.Width() = GetTextWidth(rString);
+ aSize.Width() = GetTextWidth(aString);
aSize.Width() += ImplGetExtraOffset() * 2;
// do not create edit fields in which one cannot enter anything
// a default minimum width should exist for at least 3 characters