]> git.lyx.org Git - lyx.git/blobdiff - src/lyxfind.C
another fix
[lyx.git] / src / lyxfind.C
index 78dd3b416b66e44fa983e51123b91641cf41881a..597df35b6a3622b2c8e0695f04b86106ebc66b39 100644 (file)
@@ -6,6 +6,7 @@
 
 #include "lyxtext.h"
 #include "lyxfind.h"
+#include "paragraph.h"
 #include "frontends/LyXView.h"
 #include "frontends/Alert.h"
 #include "support/textutils.h"
@@ -14,6 +15,7 @@
 #include "buffer.h"
 #include "debug.h"
 #include "gettext.h"
+#include "insets/insettext.h"
 
 using lyx::pos_type;
 
@@ -85,20 +87,27 @@ int LyXReplace(BufferView * bv,
        int replace_count = 0;
        do {
                text = bv->getLyXText();
-               bv->hideCursor();
-               bv->update(text, BufferView::SELECT|BufferView::FITCUR);
-               bv->toggleSelection(false);
-               text->replaceSelectionWithString(bv, replacestr);
-               text->setSelectionOverString(bv, replacestr);
-               bv->update(text, BufferView::SELECT|BufferView::FITCUR|BufferView::CHANGE);
-               ++replace_count;
+               // We have to do this check only because mathed insets don't
+               // return their own LyXText but the LyXText of it's parent!
+               if (!bv->theLockingInset() ||
+                       ((text != bv->text) &&
+                        (text->inset_owner == text->inset_owner->getLockingInset())))
+               {
+                       bv->hideCursor();
+                       bv->update(text, BufferView::SELECT|BufferView::FITCUR);
+                       bv->toggleSelection(false);
+                       text->replaceSelectionWithString(bv, replacestr);
+                       text->setSelectionOverString(bv, replacestr);
+                       bv->update(text, BufferView::SELECT|BufferView::FITCUR|BufferView::CHANGE);
+                       ++replace_count;
+               }
                if (!once)
                        found = LyXFind(bv, searchstr, fw, casesens, matchwrd);
        } while (!once && replaceall && found);
 
        return replace_count;
 }
+
 
 bool LyXFind(BufferView * bv,
             string const & searchstr, bool forward,
@@ -135,7 +144,7 @@ bool LyXFind(BufferView * bv,
 
        bv->toggleSelection();
        text->clearSelection();
-       
+
        SearchResult result = forward ?
                SearchForward(bv, text, searchstr, casesens, matchwrd) :
                SearchBackward(bv, text, searchstr, casesens, matchwrd);
@@ -158,7 +167,7 @@ bool LyXFind(BufferView * bv,
 
        return found;
 }
+
 
 SearchResult LyXFind(BufferView * bv, LyXText * text,
                     string const & searchstr, bool forward,