mirror of
https://git.lyx.org/repos/lyx.git
synced 2024-11-26 11:16:55 +00:00
When pasting a math inset with a label, check for duplicates (as we do outside math)
(bug 6218) git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@33230 a592a061-630c-0410-9148-cb99ea01b6c8
This commit is contained in:
parent
f68fcc98a9
commit
a484f95910
@ -43,10 +43,12 @@
|
|||||||
#include "insets/InsetGraphics.h"
|
#include "insets/InsetGraphics.h"
|
||||||
#include "insets/InsetGraphicsParams.h"
|
#include "insets/InsetGraphicsParams.h"
|
||||||
#include "insets/InsetInclude.h"
|
#include "insets/InsetInclude.h"
|
||||||
|
#include "insets/InsetLabel.h"
|
||||||
#include "insets/InsetTabular.h"
|
#include "insets/InsetTabular.h"
|
||||||
|
|
||||||
#include "mathed/MathData.h"
|
#include "mathed/MathData.h"
|
||||||
#include "mathed/InsetMath.h"
|
#include "mathed/InsetMath.h"
|
||||||
|
#include "mathed/InsetMathHull.h"
|
||||||
#include "mathed/MathSupport.h"
|
#include "mathed/MathSupport.h"
|
||||||
|
|
||||||
#include "support/debug.h"
|
#include "support/debug.h"
|
||||||
@ -229,6 +231,33 @@ pasteSelectionHelper(Cursor & cur, ParagraphList const & parlist,
|
|||||||
it->setBuffer(const_cast<Buffer &>(buffer));
|
it->setBuffer(const_cast<Buffer &>(buffer));
|
||||||
switch (it->lyxCode()) {
|
switch (it->lyxCode()) {
|
||||||
|
|
||||||
|
case MATH_HULL_CODE: {
|
||||||
|
// check for equation labels and resolve duplicates
|
||||||
|
InsetMathHull & ins = static_cast<InsetMathHull &>(*it);
|
||||||
|
std::vector<InsetLabel *> labels = ins.getLabels();
|
||||||
|
for (size_t i = 0; i != labels.size(); ++i) {
|
||||||
|
if (!labels[i])
|
||||||
|
continue;
|
||||||
|
InsetLabel * lab = labels[i];
|
||||||
|
docstring const oldname = lab->getParam("name");
|
||||||
|
lab->updateCommand(oldname, false);
|
||||||
|
docstring const newname = lab->getParam("name");
|
||||||
|
if (oldname != newname) {
|
||||||
|
// adapt the references
|
||||||
|
for (InsetIterator itt = inset_iterator_begin(in);
|
||||||
|
itt != i_end; ++itt) {
|
||||||
|
if (itt->lyxCode() == REF_CODE) {
|
||||||
|
InsetCommand & ref =
|
||||||
|
dynamic_cast<InsetCommand &>(*itt);
|
||||||
|
if (ref.getParam("reference") == oldname)
|
||||||
|
ref.setParam("reference", newname);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
case LABEL_CODE: {
|
case LABEL_CODE: {
|
||||||
// check for duplicates
|
// check for duplicates
|
||||||
InsetCommand & lab = static_cast<InsetCommand &>(*it);
|
InsetCommand & lab = static_cast<InsetCommand &>(*it);
|
||||||
|
@ -60,6 +60,8 @@ public:
|
|||||||
///
|
///
|
||||||
void label(row_type row, docstring const & label);
|
void label(row_type row, docstring const & label);
|
||||||
///
|
///
|
||||||
|
std::vector<InsetLabel *> getLabels() { return label_; }
|
||||||
|
///
|
||||||
ColorCode backgroundColor(PainterInfo const &) const;
|
ColorCode backgroundColor(PainterInfo const &) const;
|
||||||
///
|
///
|
||||||
void numbered(row_type row, bool num);
|
void numbered(row_type row, bool num);
|
||||||
|
Loading…
Reference in New Issue
Block a user