summaryrefslogtreecommitdiff
path: root/svx
diff options
context:
space:
mode:
authorEike Rathke <erack@redhat.com>2015-02-12 23:47:21 +0100
committerAndras Timar <andras.timar@collabora.com>2015-02-23 10:34:22 +0100
commit5c8a3f2aba8c1f5a5d0573e9369119e321c55564 (patch)
tree93093fddfadcce9fd89d9b3b9cb8cb60efba5923 /svx
parentd110b7e8de1d811fe5b34c41c94a65d4f2de0fba (diff)
Resolves: tdf#81429 select corresponding listbox entry if not current
Change-Id: Ib475a43601ee22d33677ac45cd6ef9dba7e7c431 (cherry picked from commit a448f1bb9221f30f73574c580b506e00bf2ae61a) Reviewed-on: https://gerrit.libreoffice.org/14458 Reviewed-by: Caolán McNamara <caolanm@redhat.com> Tested-by: Caolán McNamara <caolanm@redhat.com> (cherry picked from commit dd8a5ecbc0afd7646583fa56b8e6efc3f040012c)
Diffstat (limited to 'svx')
-rw-r--r--svx/source/dialog/langbox.cxx24
1 files changed, 16 insertions, 8 deletions
diff --git a/svx/source/dialog/langbox.cxx b/svx/source/dialog/langbox.cxx
index 533ae4eb7fb3..312fe6e9e1cc 100644
--- a/svx/source/dialog/langbox.cxx
+++ b/svx/source/dialog/langbox.cxx
@@ -713,21 +713,29 @@ IMPL_LINK( SvxLanguageComboBox, EditModifyHdl, SvxLanguageComboBox*, /*pEd*/ )
const sal_Int32 nPos = GetEntryPos( aStr);
if (nPos != COMBOBOX_ENTRY_NOTFOUND)
{
- // Advance start of full selection by one so the next character
- // will already continue the string instead of having to type the
- // same character again to start a new string. The selection
- // includes formatting characters and is reverse when obtained from
- // the Edit control.
Selection aSel( GetSelection());
+
+ // Select the corresponding listbox entry if not current. This
+ // invalidates the Edit Selection thus has to happen between
+ // obtaining the Selection and setting the new Selection.
+ sal_Int32 nSelPos = ImplGetSelectEntryPos();
+ if (nSelPos != nPos)
+ ImplSelectEntryPos( nPos, true);
+
+ // If typing into the Edit control led us here, advance start of a
+ // full selection by one so the next character will already
+ // continue the string instead of having to type the same character
+ // again to start a new string. The selection includes formatting
+ // characters and is reverse when obtained from the Edit control.
if (aSel.Max() == 1)
{
OUString aText( GetText());
if (aSel.Min() == aText.getLength())
- {
++aSel.Max();
- SetSelection( aSel);
- }
}
+
+ SetSelection( aSel);
+
meEditedAndValid = EDITED_NO;
}
else