]> git.lyx.org Git - lyx.git/blobdiff - src/text2.C
reduce number of calls to LyXText::getFont
[lyx.git] / src / text2.C
index 858116590dda2bd8ad39d37905188a33082c3eb9..7b51412d69a4f22cb796d5eb09fc8748e1cc73a6 100644 (file)
@@ -527,31 +527,27 @@ void LyXText::toggleFree(LCursor & cur, LyXFont const & font, bool toggleall)
 }
 
 
-string LyXText::getStringToIndex(LCursor & cur)
+string LyXText::getStringToIndex(LCursor const & cur)
 {
        BOOST_ASSERT(this == cur.text());
-       // Try implicit word selection
-       // If there is a change in the language the implicit word selection
-       // is disabled.
-       CursorSlice const reset_cursor = cur.top();
-       bool const implicitSelection =
-               selectWordWhenUnderCursor(cur, lyx::PREVIOUS_WORD);
 
        string idxstring;
-       if (!cur.selection())
-               cur.message(_("Nothing to index!"));
-       else if (cur.selBegin().pit() != cur.selEnd().pit())
-               cur.message(_("Cannot index more than one paragraph!"));
-       else
+       if (cur.selection()) {
                idxstring = cur.selectionAsString(false);
-
-       // Reset cursors to their original position.
-       cur.top() = reset_cursor;
-       cur.resetAnchor();
-
-       // Clear the implicit selection.
-       if (implicitSelection)
-               cur.clearSelection();
+       } else {
+               // Try implicit word selection. If there is a change
+               // in the language the implicit word selection is
+               // disabled.
+               LCursor tmpcur = cur;
+               selectWord(tmpcur, lyx::PREVIOUS_WORD);
+
+               if (!tmpcur.selection())
+                       cur.message(_("Nothing to index!"));
+               else if (tmpcur.selBegin().pit() != tmpcur.selEnd().pit())
+                       cur.message(_("Cannot index more than one paragraph!"));
+               else
+                       idxstring = tmpcur.selectionAsString(false);
+       }
 
        return idxstring;
 }