]> git.lyx.org Git - lyx.git/blobdiff - src/CutAndPaste.C
add config.h
[lyx.git] / src / CutAndPaste.C
index 1557a98b9e2f6ab439b7a3518a8f37b000d58594..e554ac6311098839dcff14ca605c8e4445001370 100644 (file)
@@ -33,7 +33,6 @@
 #include "paragraph.h"
 #include "paragraph_funcs.h"
 #include "ParagraphParameters.h"
-#include "ParagraphList_fwd.h"
 #include "pariterator.h"
 #include "undo.h"
 
@@ -49,6 +48,7 @@
 #include "frontends/Clipboard.h"
 #include "frontends/Selection.h"
 
+#include <boost/current_function.hpp>
 #include <boost/tuple/tuple.hpp>
 
 #include <string>
@@ -642,7 +642,20 @@ void copySelectionToStack()
 
 void copySelection(LCursor & cur, docstring const & plaintext)
 {
-       copySelectionToStack(cur, theCuts);
+       // In tablemode, because copy and paste actually use special table stack
+       // we do not attemp to get selected paragraphs under cursor. Instead, a 
+       // paragraph with the plain text version is generated so that table cells
+       // can be pasted as pure text somewhere else.
+       if (cur.selBegin().idx() != cur.selEnd().idx()) {
+               ParagraphList pars;
+               Paragraph par;
+               BufferParams const & bp = cur.buffer().params();
+               par.layout(bp.getLyXTextClass().defaultLayout());
+               par.insert(0, plaintext, LyXFont(), Change(Change::UNCHANGED));
+               pars.push_back(par);
+               theCuts.push(make_pair(pars, bp.textclass));
+       } else
+               copySelectionToStack(cur, theCuts);
 
        // stuff the selection onto the X clipboard, from an explicit copy request
        putClipboard(theCuts[0].first, theCuts[0].second, plaintext);
@@ -652,7 +665,7 @@ void copySelection(LCursor & cur, docstring const & plaintext)
 void saveSelection(LCursor & cur)
 {
        if (lyxerr.debugging(Debug::ACTION))
-               lyxerr << "cap::saveSelection: `"
+               lyxerr << BOOST_CURRENT_FUNCTION << ": `"
                       << to_utf8(cur.selectionAsString(true)) << "'."
                       << endl;
        
@@ -724,7 +737,7 @@ void pasteClipboard(LCursor & cur, ErrorList & errorList, bool asParagraphs)
 {
        // Use internal clipboard if it is the most recent one
        if (theClipboard().isInternal()) {
-               pasteClipboard(cur, errorList, 0);
+               pasteFromStack(cur, errorList, 0);
                return;
        }