From fc7fb6a5642bf8163276797c1602dd1395e2aef7 Mon Sep 17 00:00:00 2001 From: Jean-Marc Lasgouttes Date: Thu, 20 Jul 2017 11:18:20 +0200 Subject: [PATCH] Try to end the neverending fixIfBroken saga This is a fixup to the series of commits 522516d9, d0acc3e5, 13c3c148. Actually the right thing to consider in all situations is isActive(), which really means `can a cursor be in there?'. Improve the description of isActive() and editable() in Inset.h. Set isActive() to false for InsetInfo, since no cursor should ever go there. Again part of #10667. --- src/DocIterator.cpp | 4 +--- src/insets/Inset.h | 12 ++++++------ src/insets/InsetInfo.h | 2 ++ 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/src/DocIterator.cpp b/src/DocIterator.cpp index 4aabc4e9f5..38f2393224 100644 --- a/src/DocIterator.cpp +++ b/src/DocIterator.cpp @@ -562,9 +562,7 @@ bool DocIterator::fixIfBroken() size_t n = slices_.size(); for (; i != n; ++i) { CursorSlice & cs = slices_[i]; - if (&cs.inset() != inset - || (cs.inset().inMathed() ? ! cs.inset().isActive() - : ! cs.inset().editable())) { + if (&cs.inset() != inset || ! cs.inset().isActive()) { // the whole slice is wrong, chop off this as well --i; LYXERR(Debug::DEBUG, "fixIfBroken(): inset changed"); diff --git a/src/insets/Inset.h b/src/insets/Inset.h index e5a3991548..f10ab3f883 100644 --- a/src/insets/Inset.h +++ b/src/insets/Inset.h @@ -342,18 +342,18 @@ public: size_t const maxlen = TOC_ENTRY_LENGTH, bool const shorten = true) const; + /// Can a cursor be put in there ? + /// Forced to false for insets that have hidden contents, like + /// InsetMathCommand and InsetInfo. + virtual bool isActive() const { return nargs() > 0; } /// can the contents of the inset be edited on screen ? - // true for InsetCollapsables (not ButtonOnly) (not InsetInfo), InsetText + // equivalent to isActive except for closed InsetCollapsable virtual bool editable() const; /// has the Inset settings that can be modified in a dialog ? virtual bool hasSettings() const; /// can we go further down on mouse click? - // true for InsetCaption, InsetCollapsables (not ButtonOnly), InsetTabular + /// true for InsetCaption, InsetCollapsables (not ButtonOnly), InsetTabular virtual bool descendable(BufferView const &) const { return false; } - /// is this an inset that can be moved into? - /// FIXME: merge with editable() - // true for InsetTabular & InsetText - virtual bool isActive() const { return nargs() > 0; } /// can we click at the specified position ? virtual bool clickable(BufferView const &, int, int) const { return false; } /// Move one cell backwards diff --git a/src/insets/InsetInfo.h b/src/insets/InsetInfo.h index 25fca87e0a..221d6fb09e 100644 --- a/src/insets/InsetInfo.h +++ b/src/insets/InsetInfo.h @@ -101,6 +101,8 @@ public: /// Inset * editXY(Cursor & cur, int x, int y); /// + bool isActive() const { return false; } + /// bool editable() const { return false; } /// bool hasSettings() const { return true; }