using cap::dirtyTabularStack;
using cap::tabularStackDirty;
+using cap::saveSelection;
using graphics::PreviewLoader;
}
if (cmd.button() == mouse_button::button2) {
- if (bvcur.selection()) {
+ if (cap::selection()) {
// See comment in LyXText::dispatch why we
// do this
// FIXME This does not use paste_tabular,
// another reason why paste_tabular should go.
- cap::copySelectionToStack(bvcur);
+ cap::copySelectionToStack();
cmd = FuncRequest(LFUN_PASTE, "0");
} else {
cmd = FuncRequest(LFUN_PRIMARY_SELECTION_PASTE,
case LFUN_MOUSE_RELEASE:
//lyxerr << "# InsetTabular::MouseRelease\n" << bvcur << endl;
if (cmd.button() == mouse_button::button1) {
- if (bvcur.selection())
- theSelection().haveSelection(true);
+ if (bvcur.selection()) {
+ // Bug3238: disable persistent selection for table cells for now
+ if (tablemode(bvcur))
+ theSelection().haveSelection(true);
+ else
+ saveSelection(bvcur);
+ }
} else if (cmd.button() == mouse_button::button3)
InsetTabularMailer(*this).showDialog(&cur.bv());
break;
case LFUN_CELL_BACKWARD:
movePrevCell(cur);
cur.selection() = false;
+ saveSelection(cur);
break;
case LFUN_CELL_FORWARD:
moveNextCell(cur);
cur.selection() = false;
+ saveSelection(cur);
break;
case LFUN_CHAR_FORWARD_SELECT:
if (!cur.result().dispatched()) {
isRightToLeft(cur) ? movePrevCell(cur) : moveNextCell(cur);
if (cmd.action == LFUN_CHAR_FORWARD_SELECT)
- theSelection().haveSelection(cur.selection());
+ saveSelection(cur);
if (sl == cur.top())
cmd = FuncRequest(LFUN_FINISHED_RIGHT);
else
if (!cur.result().dispatched()) {
isRightToLeft(cur) ? moveNextCell(cur) : movePrevCell(cur);
if (cmd.action == LFUN_CHAR_BACKWARD_SELECT)
- theSelection().haveSelection(cur.selection());
+ saveSelection(cur);
if (sl == cur.top())
cmd = FuncRequest(LFUN_FINISHED_LEFT);
else
TextMetrics const & tm =
cur.bv().textMetrics(cell(cur.idx())->getText(0));
cur.pos() = tm.x2pos(cur.pit(), 0, cur.targetX());
- if (cmd.action == LFUN_DOWN_SELECT)
- theSelection().haveSelection(cur.selection());
+ if (cmd.action == LFUN_DOWN_SELECT) {
+ // Bug3238: disable persistent selection for table cells for now
+ if (tablemode(cur))
+ theSelection().haveSelection(true);
+ else
+ saveSelection(cur);
+ }
}
if (sl == cur.top()) {
// we trick it to go to the RIGHT after leaving the
ParagraphMetrics const & pm =
tm.parMetrics(cur.lastpit());
cur.pos() = tm.x2pos(cur.pit(), pm.rows().size()-1, cur.targetX());
- if (cmd.action == LFUN_UP_SELECT)
- theSelection().haveSelection(cur.selection());
+ if (cmd.action == LFUN_UP_SELECT) {
+ // Bug3238: disable persistent selection for table cells for now
+ if (tablemode(cur))
+ theSelection().haveSelection(true);
+ else
+ saveSelection(cur);
+ }
}
if (sl == cur.top()) {
cmd = FuncRequest(LFUN_FINISHED_UP);
case LFUN_PASTE:
if (tabularStackDirty() && theClipboard().isInternal()) {
recordUndoInset(cur, Undo::INSERT);
- pasteSelection(cur);
+ pasteClipboard(cur);
break;
}
cell(cur.idx())->dispatch(cur, cmd);
int InsetTabular::latex(Buffer const & buf, odocstream & os,
- OutputParams const & runparams) const
+ OutputParams const & runparams) const
{
return tabular.latex(buf, os, runparams);
}
int InsetTabular::plaintext(Buffer const & buf, odocstream & os,
- OutputParams const & runparams) const
+ OutputParams const & runparams) const
{
- int const dp = runparams.linelen ? runparams.depth : 0;
- return tabular.plaintext(buf, os, runparams, dp, false, 0);
+ os << '\n'; // output table on a new line
+ int const dp = runparams.linelen > 0 ? runparams.depth : 0;
+ tabular.plaintext(buf, os, runparams, dp, false, 0);
+ return PLAINTEXT_NEWLINE;
}
int InsetTabular::docbook(Buffer const & buf, odocstream & os,
- OutputParams const & runparams) const
+ OutputParams const & runparams) const
{
int ret = 0;
InsetBase * master = 0;
true, true);
odocstringstream os;
- OutputParams const runparams;
+ OutputParams const runparams(0);
paste_tabular->plaintext(cur.buffer(), os, runparams, 0, true, '\t');
// Needed for the "Edit->Paste recent" menu and the system clipboard.
cap::copySelection(cur, os.str());
}
-bool InsetTabular::pasteSelection(LCursor & cur)
+bool InsetTabular::pasteClipboard(LCursor & cur)
{
if (!paste_tabular)
return false;