See also https://marc.info/?l=lyx-devel&m=151709211602688&w=2.
This commit is contained in:
Richard Heck 2018-01-28 23:33:45 -05:00
parent d24a1c8fa4
commit d3ee87eea2
4 changed files with 41 additions and 6 deletions

View File

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

View File

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

View File

@ -1379,25 +1379,45 @@ void BufferView::dispatch(FuncRequest const & cmd, DispatchResult & dr)
break; break;
} }
case LFUN_UNDO: case LFUN_UNDO: {
dr.setMessage(_("Undo")); dr.setMessage(_("Undo"));
cur.clearSelection(); 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()) if (!cur.textUndo())
dr.setMessage(_("No further undo information")); dr.setMessage(_("No further undo information"));
else else {
dr.screenUpdate(Update::Force | Update::FitCursor); dr.screenUpdate(Update::Force | Update::FitCursor);
dr.forceBufferUpdate(); dr.forceBufferUpdate();
if (buffer().params().citeEngine() != engines ||
buffer().params().citeEngineType() != enginetype)
buffer().invalidateCiteLabels();
}
break; break;
}
case LFUN_REDO: case LFUN_REDO: {
dr.setMessage(_("Redo")); dr.setMessage(_("Redo"));
cur.clearSelection(); 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()) if (!cur.textRedo())
dr.setMessage(_("No further redo information")); dr.setMessage(_("No further redo information"));
else else {
dr.screenUpdate(Update::Force | Update::FitCursor); dr.screenUpdate(Update::Force | Update::FitCursor);
dr.forceBufferUpdate(); dr.forceBufferUpdate();
if (buffer().params().citeEngine() != engines ||
buffer().params().citeEngineType() != enginetype)
buffer().invalidateCiteLabels();
}
break; break;
}
case LFUN_FONT_STATE: case LFUN_FONT_STATE:
dr.setMessage(cur.currentState(false)); dr.setMessage(cur.currentState(false));

View File

@ -75,6 +75,14 @@ public:
/// to be made. /// to be made.
bool adaptToBaseClass(LayoutFile const * const lay, bool adaptToBaseClass(LayoutFile const * const lay,
std::list<std::string> const & removedModules); 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: private:
/// Removes modules excluded by, provided by, etc, the base class. /// Removes modules excluded by, provided by, etc, the base class.
/// \param lay The document class against which to check. /// \param lay The document class against which to check.