src/insets/insettabular (doDispatch, insertAsciiString): fix insertion of \t- and \n-separated content from external clipboard (bug 2394)

git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@13518 a592a061-630c-0410-9148-cb99ea01b6c8
This commit is contained in:
Jürgen Spitzmüller 2006-03-28 14:04:14 +00:00
parent 2129ed9082
commit 149c83d35d

View File

@ -46,6 +46,7 @@
#include <iostream> #include <iostream>
#include <limits> #include <limits>
using lyx::cap::dirtyTabularStack;
using lyx::cap::tabularStackDirty; using lyx::cap::tabularStackDirty;
using lyx::graphics::PreviewLoader; using lyx::graphics::PreviewLoader;
@ -467,10 +468,8 @@ void InsetTabular::doDispatch(LCursor & cur, FuncRequest & cmd)
} }
if (cmd.button() == mouse_button::button2) { if (cmd.button() == mouse_button::button2) {
// FIXME: pasting multiple cells (with insettabular's own
// LFUN_PASTESELECTION still does not work! (jspitzm)
cmd = FuncRequest(LFUN_PASTESELECTION, "paragraph"); cmd = FuncRequest(LFUN_PASTESELECTION, "paragraph");
cell(cur.idx())->dispatch(cur, cmd); doDispatch(cur, cmd);
break; break;
} }
@ -726,11 +725,15 @@ void InsetTabular::doDispatch(LCursor & cur, FuncRequest & cmd)
if (cell < cells && op < len) if (cell < cells && op < len)
paste_tabular->getCellInset(cell)-> paste_tabular->getCellInset(cell)->
setText(clip.substr(op, len - op), font); setText(clip.substr(op, len - op), font);
} else if (!insertAsciiString(cur.bv(), clip, true)) { dirtyTabularStack(true);
} else if (insertAsciiString(cur.bv(), clip, false))
break;
else {
// so that the clipboard is used and it goes on // so that the clipboard is used and it goes on
// to default // to default
// and executes LFUN_PASTESELECTION in insettext! // and executes LFUN_PASTESELECTION in insettext!
paste_tabular.reset(); paste_tabular.reset();
dirtyTabularStack(false);
} }
// fall through // fall through
} }
@ -1885,6 +1888,7 @@ bool InsetTabular::insertAsciiString(BufferView & bv, string const & buf,
new LyXTabular(bv.buffer()->params(), rows, maxCols, &bv)); new LyXTabular(bv.buffer()->params(), rows, maxCols, &bv));
loctab = paste_tabular.get(); loctab = paste_tabular.get();
cols = 0; cols = 0;
dirtyTabularStack(true);
} else { } else {
loctab = &tabular; loctab = &tabular;
cell = bv.cursor().idx(); cell = bv.cursor().idx();