commit 89342f2946abd5d01b019a729d1f160b0c9d3d50
Author: Guillaume Munch <[email protected]>
Date:   Sat Aug 29 01:51:38 2015 +0100

    Fix bugs #6078 and #9364
    
    Remove unwanted clearSelection()s in MathData::updateMacros(). These calls 
broke
    text selection with keyboard and mouse, search-and-replace, restoring 
selection
    after Undo, etc. in a document with math macros since 1.6.0. (Regression at
    6aa54673 and 12314897)
    
    I do not know the purpose of these calls, but the selection code has been 
worked
    on since, and I cannot produce undesired behaviour after removing
    them.

diff --git a/src/mathed/MathData.cpp b/src/mathed/MathData.cpp
index bcc9895..f5fb3b1 100644
--- a/src/mathed/MathData.cpp
+++ b/src/mathed/MathData.cpp
@@ -433,13 +433,8 @@ void MathData::updateMacros(Cursor * cur, MacroContext 
const & mc,
                if (oldDisplayMode == MathMacro::DISPLAY_NORMAL
                    && (macroInset->arity() != macroNumArgs
                        || macroInset->optionals() != macroOptionals
-                       || newDisplayMode == MathMacro::DISPLAY_UNFOLDED)) {
-
+                       || newDisplayMode == MathMacro::DISPLAY_UNFOLDED))
                        detachMacroParameters(cur, i);
-                       // FIXME: proper anchor handling, this removes the 
selection
-                       if (cur)
-                               cur->clearSelection();
-               }
 
                // the macro could have been copied while resizing this
                macroInset = operator[](i).nucleus()->asMacro();
@@ -478,11 +473,8 @@ void MathData::updateMacros(Cursor * cur, MacroContext 
const & mc,
                        attachMacroParameters(cur, i, macroNumArgs, 
macroOptionals,
                                fromInitToNormalMode, interactive, appetite);
 
-                       if (cur) {
-                               // FIXME: proper anchor handling, this removes 
the selection
+                       if (cur)
                                cur->updateInsets(&cur->bottom().inset());
-                               cur->clearSelection();
-                       }
                }
 
                // Give macro the chance to adapt to new situation.

Reply via email to