[Libreoffice-commits] core.git: Branch 'libreoffice-4-3' - svx/source

Eike Rathke erack at redhat.com
Fri Feb 13 01:58:08 PST 2015


 svx/source/dialog/langbox.cxx |   24 ++++++++++++++++--------
 1 file changed, 16 insertions(+), 8 deletions(-)

New commits:
commit dd8a5ecbc0afd7646583fa56b8e6efc3f040012c
Author: Eike Rathke <erack at redhat.com>
Date:   Thu Feb 12 23:47:21 2015 +0100

    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 at redhat.com>
    Tested-by: Caolán McNamara <caolanm at redhat.com>

diff --git a/svx/source/dialog/langbox.cxx b/svx/source/dialog/langbox.cxx
index 533ae4e..312fe6e 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


More information about the Libreoffice-commits mailing list