#include "paragraph.h"
#include "paragraph_funcs.h"
#include "ParagraphParameters.h"
-#include "ParagraphList_fwd.h"
#include "pariterator.h"
#include "undo.h"
#include "frontends/Clipboard.h"
#include "frontends/Selection.h"
+#include <boost/current_function.hpp>
#include <boost/tuple/tuple.hpp>
#include <string>
void putClipboard(ParagraphList const & paragraphs, textclass_type textclass,
docstring const & plaintext)
{
- Buffer buffer(string(), false);
+ // For some strange reason gcc 3.2 and 3.3 do not accept
+ // Buffer buffer(string(), false);
+ Buffer buffer("", false);
buffer.setUnnamed(true);
buffer.paragraphs() = paragraphs;
buffer.params().textclass = textclass;
ParagraphList & pars = text->paragraphs();
pos_type pos = cur.selBegin().pos();
pit_type par = cur.selBegin().pit();
- while (pos < pars[par].size()
- && pars[par].isLineSeparator(pos)
- && (par != cur.selEnd().pit() || pos < cur.selEnd().pos()))
+ while (pos < pars[par].size() &&
+ pars[par].isLineSeparator(pos) &&
+ (par != cur.selEnd().pit() || pos < cur.selEnd().pos()))
++pos;
copySelectionHelper(cur.buffer(), pars, par, cur.selEnd().pit(),
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);
void saveSelection(LCursor & cur)
{
- lyxerr[Debug::ACTION] << "cap::saveSelection: `"
- << to_utf8(cur.selectionAsString(true)) << "'." << endl;
+ LYXERR(Debug::ACTION) << BOOST_CURRENT_FUNCTION << ": `"
+ << to_utf8(cur.selectionAsString(true)) << "'."
+ << endl;
if (cur.selection())
copySelectionToStack(cur, selectionBuffer);
{
// Use internal clipboard if it is the most recent one
if (theClipboard().isInternal()) {
- pasteClipboard(cur, errorList, 0);
+ pasteFromStack(cur, errorList, 0);
return;
}
if (theClipboard().hasLyXContents()) {
string lyx = theClipboard().getAsLyX();
if (!lyx.empty()) {
- Buffer buffer(string(), false);
+ // For some strange reason gcc 3.2 and 3.3 do not accept
+ // Buffer buffer(string(), false);
+ Buffer buffer("", false);
buffer.setUnnamed(true);
if (buffer.readString(lyx)) {
recordUndo(cur);