]> git.lyx.org Git - lyx.git/blobdiff - src/CutAndPaste.C
src/support/unlink.C: Fix an #include error
[lyx.git] / src / CutAndPaste.C
index da644856b9e3bb06563eca21ce621699e131d7b3..e561f591c35b04bd82701c1ec4c5e10440c675dd 100644 (file)
@@ -74,7 +74,7 @@ CutStack theCuts(10);
 // store whether the tabular stack is newer than the normal copy stack
 // FIXME: this is a workaround for bug 1919. Should be removed for 1.5,
 // when we (hopefully) have a one-for-all paste mechanism.
-bool dirty_tabular_stack_;
+bool dirty_tabular_stack_ = false;
 
 
 void region(CursorSlice const & i1, CursorSlice const & i2,
@@ -493,15 +493,8 @@ void cutSelection(LCursor & cur, bool doclear, bool realcut)
                LyXText * text = cur.text();
                BOOST_ASSERT(text);
                // Stuff what we got on the clipboard. Even if there is no selection.
-
-               // There is a problem with having the stuffing here in that the
-               // larger the selection the slower LyX will get. This can be
-               // solved by running the line below only when the selection has
-               // finished. The solution used currently just works, to make it
-               // faster we need to be more clever and probably also have more
-               // calls to theSelection().put. (Lgb)
-//             theSelection().put(cur.selectionAsString(true));
-
+               if (realcut)
+                       theClipboard().put(cur.selectionAsString(true));
 
                // make sure that the depth behind the selection are restored, too
                recordUndoSelection(cur);
@@ -566,6 +559,12 @@ void copySelection(LCursor & cur)
        // stuff the selection onto the X clipboard, from an explicit copy request
        theClipboard().put(cur.selectionAsString(true));
 
+       copySelectionToStack(cur);
+}
+
+
+void copySelectionToStack(LCursor & cur)
+{
        // this doesn't make sense, if there is no selection
        if (!cur.selection())
                return;
@@ -648,7 +647,6 @@ void pasteSelection(LCursor & cur, ErrorList & errorList, size_t sel_index)
 }
 
 
-// simple replacing. The font of the first selected character is used
 void replaceSelectionWithString(LCursor & cur, docstring const & str, bool backwards)
 {
        recordUndo(cur);
@@ -687,7 +685,7 @@ void replaceSelection(LCursor & cur)
 
 void eraseSelection(LCursor & cur)
 {
-       //lyxerr << "LCursor::eraseSelection begin: " << cur << endl;
+       //lyxerr << "cap::eraseSelection begin: " << cur << endl;
        CursorSlice const & i1 = cur.selBegin();
        CursorSlice const & i2 = cur.selEnd();
        if (i1.inset().asInsetMath()) {
@@ -714,13 +712,13 @@ void eraseSelection(LCursor & cur)
        } else {
                lyxerr << "can't erase this selection 1" << endl;
        }
-       //lyxerr << "LCursor::eraseSelection end: " << cur << endl;
+       //lyxerr << "cap::eraseSelection end: " << cur << endl;
 }
 
 
 void selDel(LCursor & cur)
 {
-       //lyxerr << "LCursor::selDel" << endl;
+       //lyxerr << "cap::selDel" << endl;
        if (cur.selection())
                eraseSelection(cur);
 }
@@ -728,7 +726,7 @@ void selDel(LCursor & cur)
 
 void selClearOrDel(LCursor & cur)
 {
-       //lyxerr << "LCursor::selClearOrDel" << endl;
+       //lyxerr << "cap::selClearOrDel" << endl;
        if (lyxrc.auto_region_delete)
                selDel(cur);
        else