See also https://marc.info/?l=lyx-devel&m=151709211602688&w=2.

(cherry picked from commit d3ee87eea2)
This commit is contained in:
Richard Heck 2018-01-28 23:33:45 -05:00
parent bdf5ea7833
commit 0be5ae123c
4 changed files with 41 additions and 6 deletions

View File

@ -2484,6 +2484,11 @@ void Buffer::makeCitationLabels() const
}
void Buffer::invalidateCiteLabels() const
{
masterBuffer()->d->cite_labels_valid_ = false;
}
bool Buffer::citeLabelsValid() const
{
return masterBuffer()->d->cite_labels_valid_;

View File

@ -529,6 +529,8 @@ public:
///
void makeCitationLabels() const;
///
void invalidateCiteLabels() const;
///
bool citeLabelsValid() const;
///
void getLabelList(std::vector<docstring> &) const;

View File

@ -1357,25 +1357,45 @@ void BufferView::dispatch(FuncRequest const & cmd, DispatchResult & dr)
break;
}
case LFUN_UNDO:
case LFUN_UNDO: {
dr.setMessage(_("Undo"));
cur.clearSelection();
// We need to find out if the bibliography information
// has changed. See bug #11055.
// So these should not be references...
LayoutModuleList const engines = buffer().params().citeEngine();
CiteEngineType const enginetype = buffer().params().citeEngineType();
if (!cur.textUndo())
dr.setMessage(_("No further undo information"));
else
else {
dr.screenUpdate(Update::Force | Update::FitCursor);
dr.forceBufferUpdate();
if (buffer().params().citeEngine() != engines ||
buffer().params().citeEngineType() != enginetype)
buffer().invalidateCiteLabels();
}
break;
}
case LFUN_REDO:
case LFUN_REDO: {
dr.setMessage(_("Redo"));
cur.clearSelection();
// We need to find out if the bibliography information
// has changed. See bug #11055.
// So these should not be references...
LayoutModuleList const engines = buffer().params().citeEngine();
CiteEngineType const enginetype = buffer().params().citeEngineType();
if (!cur.textRedo())
dr.setMessage(_("No further redo information"));
else
else {
dr.screenUpdate(Update::Force | Update::FitCursor);
dr.forceBufferUpdate();
if (buffer().params().citeEngine() != engines ||
buffer().params().citeEngineType() != enginetype)
buffer().invalidateCiteLabels();
}
break;
}
case LFUN_FONT_STATE:
dr.setMessage(cur.currentState(false));

View File

@ -75,6 +75,14 @@ public:
/// to be made.
bool adaptToBaseClass(LayoutFile const * const lay,
std::list<std::string> const & removedModules);
///
bool operator==(LayoutModuleList const & other) const {
return lml_ == other.lml_;
}
///
bool operator!=(LayoutModuleList const & other) const {
return !operator==(other);
}
private:
/// Removes modules excluded by, provided by, etc, the base class.
/// \param lay The document class against which to check.