Fix bug #5948: Copy as reference for equation labels.

git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@29678 a592a061-630c-0410-9148-cb99ea01b6c8
This commit is contained in:
Vincent van Ravesteijn 2009-05-15 20:54:15 +00:00
parent 831b74c236
commit 3c976db90b
2 changed files with 27 additions and 1 deletions

View File

@ -1357,9 +1357,12 @@ bool BufferView::dispatch(FuncRequest const & cmd)
// turn compression on/off // turn compression on/off
buffer_.params().compressed = !buffer_.params().compressed; buffer_.params().compressed = !buffer_.params().compressed;
break; break;
case LFUN_COPY_LABEL_AS_REF: { case LFUN_COPY_LABEL_AS_REF: {
// if there is an inset at cursor, try to copy it // if there is an inset at cursor, try to copy it
Inset * inset = cur.nextInset(); Inset * inset = &cur.inset();
if (!inset || !inset->asInsetMath())
inset = cur.nextInset();
if (inset) { if (inset) {
FuncRequest tmpcmd = cmd; FuncRequest tmpcmd = cmd;
inset->dispatch(cur, tmpcmd); inset->dispatch(cur, tmpcmd);
@ -1371,6 +1374,7 @@ bool BufferView::dispatch(FuncRequest const & cmd)
processUpdateFlags(Update::SinglePar | Update::FitCursor); processUpdateFlags(Update::SinglePar | Update::FitCursor);
break; break;
} }
case LFUN_NEXT_INSET_MODIFY: { case LFUN_NEXT_INSET_MODIFY: {
// create the the real function we want to invoke // create the the real function we want to invoke
FuncRequest tmpcmd = cmd; FuncRequest tmpcmd = cmd;

View File

@ -46,6 +46,7 @@
#include "insets/RenderPreview.h" #include "insets/RenderPreview.h"
#include "insets/InsetLabel.h" #include "insets/InsetLabel.h"
#include "insets/InsetRef.h"
#include "graphics/PreviewImage.h" #include "graphics/PreviewImage.h"
#include "graphics/PreviewLoader.h" #include "graphics/PreviewLoader.h"
@ -1227,6 +1228,15 @@ void InsetMathHull::doDispatch(Cursor & cur, FuncRequest & cmd)
break; break;
} }
case LFUN_COPY_LABEL_AS_REF: {
row_type row = (type_ == hullMultline) ? nrows() - 1 : cur.row();
InsetCommandParams p(REF_CODE, "ref");
p["reference"] = label(row);
cap::clearSelection();
cap::copyInset(cur, new InsetRef(*cur.buffer(), p), label(row));
break;
}
case LFUN_WORD_DELETE_FORWARD: case LFUN_WORD_DELETE_FORWARD:
case LFUN_CHAR_DELETE_FORWARD: case LFUN_CHAR_DELETE_FORWARD:
if (col(cur.idx()) + 1 == ncols() if (col(cur.idx()) + 1 == ncols()
@ -1335,12 +1345,14 @@ bool InsetMathHull::getStatus(Cursor & cur, FuncRequest const & cmd,
// we handle these // we handle these
status.setEnabled(true); status.setEnabled(true);
return true; return true;
case LFUN_MATH_NUMBER_TOGGLE: case LFUN_MATH_NUMBER_TOGGLE:
// FIXME: what is the right test, this or the one of // FIXME: what is the right test, this or the one of
// LABEL_INSERT? // LABEL_INSERT?
status.setEnabled(display()); status.setEnabled(display());
status.setOnOff(numberedType()); status.setOnOff(numberedType());
return true; return true;
case LFUN_MATH_NUMBER_LINE_TOGGLE: { case LFUN_MATH_NUMBER_LINE_TOGGLE: {
// FIXME: what is the right test, this or the one of // FIXME: what is the right test, this or the one of
// LABEL_INSERT? // LABEL_INSERT?
@ -1352,15 +1364,24 @@ bool InsetMathHull::getStatus(Cursor & cur, FuncRequest const & cmd,
status.setOnOff(numbered(r)); status.setOnOff(numbered(r));
return true; return true;
} }
case LFUN_LABEL_INSERT: case LFUN_LABEL_INSERT:
status.setEnabled(type_ != hullSimple); status.setEnabled(type_ != hullSimple);
return true; return true;
case LFUN_COPY_LABEL_AS_REF: {
row_type const row = (type_ == hullMultline) ? nrows() - 1 : cur.row();
status.setEnabled(numberedType() && label_[row] && !nonum_[row]);
return true;
}
case LFUN_INSET_INSERT: case LFUN_INSET_INSERT:
if (cmd.getArg(0) == "label") { if (cmd.getArg(0) == "label") {
status.setEnabled(type_ != hullSimple); status.setEnabled(type_ != hullSimple);
return true; return true;
} }
return InsetMathGrid::getStatus(cur, cmd, status); return InsetMathGrid::getStatus(cur, cmd, status);
case LFUN_TABULAR_FEATURE: { case LFUN_TABULAR_FEATURE: {
istringstream is(to_utf8(cmd.argument())); istringstream is(to_utf8(cmd.argument()));
string s; string s;
@ -1410,6 +1431,7 @@ bool InsetMathHull::getStatus(Cursor & cur, FuncRequest const & cmd,
} }
return InsetMathGrid::getStatus(cur, cmd, status); return InsetMathGrid::getStatus(cur, cmd, status);
} }
default: default:
return InsetMathGrid::getStatus(cur, cmd, status); return InsetMathGrid::getStatus(cur, cmd, status);
} }