mirror of
https://git.lyx.org/repos/lyx.git
synced 2024-12-28 06:49:43 +00:00
Let LFUN_PASTE always paste the most recent clipboard (internal or system)
* src/insets/insettabular.C (InsetTabular::doDispatch): Only paste the tabular clipboard if the system clipboard is not newer, else let the current cell paste the system clipboard (InsetTabular::getStatus): Only decide whether to enable LFUN_PASTE if the tabular clipboard is not empty and the system clipboard is not newer, else let the current cell decide. * src/mathed/InsetMathGrid.C (InsetMathGrid::doDispatch): Use the system clipboard for LFUN_PASTE if it is newer. * src/mathed/InsetMathNest.C (InsetMathNest::doDispatch): Use the system clipboard for LFUN_PASTE if it is newer. * src/text3.C (doInsertInset): Add a "0" argument to LFUN_PASTE, because we always want to use the internal clipboard here (LyXText::dispatch): ditto (when handling mouse button 2 press) (LyXText::dispatch): Use the system clipboard for LFUN_PASTE if it is newer. (LyXText::getStatus): Also enable LFUN_PASTE if the system clipboard is owned by another application git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@16498 a592a061-630c-0410-9148-cb99ea01b6c8
This commit is contained in:
parent
9d1dbb6f61
commit
8f2243819a
@ -723,7 +723,7 @@ void InsetTabular::doDispatch(LCursor & cur, FuncRequest & cmd)
|
||||
}
|
||||
|
||||
case LFUN_PASTE:
|
||||
if (tabularStackDirty()) {
|
||||
if (tabularStackDirty() && theClipboard().isInternal()) {
|
||||
recordUndoInset(cur, Undo::INSERT);
|
||||
pasteSelection(cur);
|
||||
break;
|
||||
@ -1033,7 +1033,7 @@ bool InsetTabular::getStatus(LCursor & cur, FuncRequest const & cmd,
|
||||
}
|
||||
|
||||
case LFUN_PASTE:
|
||||
if (tabularStackDirty()) {
|
||||
if (tabularStackDirty() && theClipboard().isInternal()) {
|
||||
status.enabled(true);
|
||||
return true;
|
||||
} else
|
||||
|
@ -25,6 +25,7 @@
|
||||
#include "gettext.h"
|
||||
#include "undo.h"
|
||||
|
||||
#include "frontends/Clipboard.h"
|
||||
#include "frontends/Painter.h"
|
||||
|
||||
#include "insets/mailinset.h"
|
||||
@ -1210,11 +1211,19 @@ void InsetMathGrid::doDispatch(LCursor & cur, FuncRequest & cmd)
|
||||
case LFUN_PASTE: {
|
||||
cur.message(_("Paste"));
|
||||
cap::replaceSelection(cur);
|
||||
istringstream is(to_utf8(cmd.argument()));
|
||||
int n = 0;
|
||||
is >> n;
|
||||
docstring topaste;
|
||||
if (cmd.argument().empty() && !theClipboard().isInternal())
|
||||
topaste = theClipboard().get();
|
||||
else {
|
||||
idocstringstream is(cmd.argument());
|
||||
int n = 0;
|
||||
is >> n;
|
||||
topaste = cap::getSelection(cur.buffer(), n);
|
||||
}
|
||||
InsetMathGrid grid(1, 1);
|
||||
mathed_parse_normal(grid, cap::getSelection(cur.buffer(), n));
|
||||
if (!topaste.empty())
|
||||
mathed_parse_normal(grid, topaste);
|
||||
|
||||
if (grid.nargs() == 1) {
|
||||
// single cell/part of cell
|
||||
recordUndo(cur);
|
||||
|
@ -50,6 +50,7 @@
|
||||
|
||||
#include "support/lstrings.h"
|
||||
|
||||
#include "frontends/Clipboard.h"
|
||||
#include "frontends/Painter.h"
|
||||
#include "frontends/Selection.h"
|
||||
|
||||
@ -437,11 +438,16 @@ void InsetMathNest::doDispatch(LCursor & cur, FuncRequest & cmd)
|
||||
recordUndo(cur);
|
||||
cur.message(_("Paste"));
|
||||
replaceSelection(cur);
|
||||
size_t n = 0;
|
||||
istringstream is(to_utf8(cmd.argument()));
|
||||
is >> n;
|
||||
docstring const selection = cap::getSelection(cur.buffer(), n);
|
||||
cur.niceInsert(selection);
|
||||
docstring topaste;
|
||||
if (cmd.argument().empty() && !theClipboard().isInternal())
|
||||
topaste = theClipboard().get();
|
||||
else {
|
||||
size_t n = 0;
|
||||
idocstringstream is(cmd.argument());
|
||||
is >> n;
|
||||
topaste = cap::getSelection(cur.buffer(), n);
|
||||
}
|
||||
cur.niceInsert(topaste);
|
||||
cur.clearSelection(); // bug 393
|
||||
cur.bv().switchKeyMap();
|
||||
finishUndo();
|
||||
|
37
src/text3.C
37
src/text3.C
@ -267,7 +267,7 @@ bool doInsertInset(LCursor & cur, LyXText * text,
|
||||
inset->edit(cur, true);
|
||||
|
||||
if (gotsel && pastesel) {
|
||||
lyx::dispatch(FuncRequest(LFUN_PASTE));
|
||||
lyx::dispatch(FuncRequest(LFUN_PASTE, "0"));
|
||||
// reset first par to default
|
||||
if (cur.lastpit() != 0 || cur.lastpos() != 0) {
|
||||
LyXLayout_ptr const layout =
|
||||
@ -756,13 +756,16 @@ void LyXText::dispatch(LCursor & cur, FuncRequest & cmd)
|
||||
case LFUN_PASTE:
|
||||
cur.message(_("Paste"));
|
||||
cap::replaceSelection(cur);
|
||||
if (isStrUnsignedInt(to_utf8(cmd.argument())))
|
||||
if (cmd.argument().empty() && !theClipboard().isInternal())
|
||||
pasteString(cur, theClipboard().get(), docstring());
|
||||
else {
|
||||
string const arg(to_utf8(cmd.argument()));
|
||||
pasteSelection(cur, bv->buffer()->errorList("Paste"),
|
||||
convert<unsigned int>(to_utf8(cmd.argument())));
|
||||
else
|
||||
pasteSelection(cur, bv->buffer()->errorList("Paste"),
|
||||
0);
|
||||
bv->buffer()->errors("Paste");
|
||||
isStrUnsignedInt(arg) ?
|
||||
convert<unsigned int>(arg) :
|
||||
0);
|
||||
bv->buffer()->errors("Paste");
|
||||
}
|
||||
cur.clearSelection(); // bug 393
|
||||
bv->switchKeyMap();
|
||||
finishUndo();
|
||||
@ -968,7 +971,7 @@ void LyXText::dispatch(LCursor & cur, FuncRequest & cmd)
|
||||
// insert this
|
||||
if (cmd.button() == mouse_button::button2) {
|
||||
if (paste_internally)
|
||||
lyx::dispatch(FuncRequest(LFUN_PASTE));
|
||||
lyx::dispatch(FuncRequest(LFUN_PASTE, "0"));
|
||||
else
|
||||
lyx::dispatch(FuncRequest(LFUN_PRIMARY_SELECTION_PASTE, "paragraph"));
|
||||
}
|
||||
@ -1721,7 +1724,23 @@ bool LyXText::getStatus(LCursor & cur, FuncRequest const & cmd,
|
||||
break;
|
||||
|
||||
case LFUN_PASTE:
|
||||
enable = cap::numberOfSelections() > 0;
|
||||
// FIXME: This is not correct, but the correct code below is
|
||||
// expensive
|
||||
enable = cap::numberOfSelections() > 0 ||
|
||||
!theClipboard().isInternal();
|
||||
#if 0
|
||||
if (cmd.argument().empty()) {
|
||||
if (theClipboard().isInternal())
|
||||
enable = cap::numberOfSelections() > 0;
|
||||
else
|
||||
enable = !theClipboard().get().empty();
|
||||
} else if (isStrUnsignedInt(to_utf8(cmd.argument()))) {
|
||||
int n = convert<unsigned int>(to_utf8(cmd.argument()));
|
||||
enable = cap::numberOfSelections() > n;
|
||||
} else
|
||||
// unknown argument
|
||||
enable = false;
|
||||
#endif
|
||||
break;
|
||||
|
||||
case LFUN_PARAGRAPH_MOVE_UP:
|
||||
|
Loading…
Reference in New Issue
Block a user