diff options
author | Caolán McNamara <caolanm@redhat.com> | 2013-06-24 12:42:39 +0100 |
---|---|---|
committer | Fridrich Strba <fridrich@documentfoundation.org> | 2013-06-24 16:41:22 +0000 |
commit | 112ce9b1dc1cbf34bb6378ff2e61dba6144782c9 (patch) | |
tree | 254585093955b646e35279ba270827ef4a616291 | |
parent | 002c79346c69c0b7f4953daec7377e71660ae306 (diff) |
Resolves: fdo#66105 set max growth width for labels/edits which take paths
Change-Id: I12220821f76550baacdc8ce604f2e612d260c1a1
(cherry picked from commit 9495e912797f67897a4a658d20137bb94f39e9ab)
Reviewed-on: https://gerrit.libreoffice.org/4481
Reviewed-by: Fridrich Strba <fridrich@documentfoundation.org>
Tested-by: Fridrich Strba <fridrich@documentfoundation.org>
-rw-r--r-- | cui/uiconfig/ui/pastespecial.ui | 1 | ||||
-rw-r--r-- | include/vcl/edit.hxx | 3 | ||||
-rw-r--r-- | sfx2/uiconfig/ui/documentinfopage.ui | 2 | ||||
-rw-r--r-- | vcl/source/control/edit.cxx | 20 |
4 files changed, 25 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 eeccbd04ec58..f25a95a478da 100644 --- a/sfx2/uiconfig/ui/documentinfopage.ui +++ b/sfx2/uiconfig/ui/documentinfopage.ui @@ -275,6 +275,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> @@ -336,6 +337,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 20323b35ffa2..e8798a295380 100644 --- a/vcl/source/control/edit.cxx +++ b/vcl/source/control/edit.cxx @@ -214,10 +214,21 @@ void Edit::SetWidthInChars(sal_Int32 nWidthInChars) } } +void Edit::setMaxWidthChars(sal_Int32 nWidth) +{ + if (nWidth != mnMaxWidthChars) + { + mnMaxWidthChars = 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 +306,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 +2898,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 |