Le 06/02/2023 à 15:50, Pavel Sanda a écrit :
Indeed:
insets/InsetInfo.cpp (1246): validate() -> build()
lyx: SIGSEGV signal caught!
What about this? I expect display glitches.
JMarc
diff --git a/src/insets/InsetInfo.cpp b/src/insets/InsetInfo.cpp
index 46d656c817..f2d3b93ad8 100644
--- a/src/insets/InsetInfo.cpp
+++ b/src/insets/InsetInfo.cpp
@@ -467,7 +467,7 @@ string InsetInfoParams::infoType() const
InsetInfo::InsetInfo(Buffer * buf, string const & info)
- : InsetCollapsible(buf), initialized_(false)
+ : InsetCollapsible(buf), initialized_(false), dirty_(true)
{
params_.type = InsetInfoParams::UNKNOWN_INFO;
params_.force_ltr = false;
@@ -779,15 +779,19 @@ void InsetInfo::metrics(MetricsInfo & mi, Dimension & dim) const
{
const_cast<InsetInfo *>(this)->build();
InsetCollapsible::metrics(mi, dim);
+ dirty_ = false;
}
void InsetInfo::draw(PainterInfo & pi, int x, int y) const
{
+ if (dirty_)
+ return;
Changer chg = changeVar(lyxrc.mark_foreign_language, false);
InsetCollapsible::draw(pi, x, y);
}
+
void InsetInfo::updateBuffer(ParIterator const & it, UpdateType utype, bool const deleted)
{
@@ -1235,6 +1239,8 @@ void InsetInfo::build()
}
}
+ // indicate that metrics are not usable anymore
+ dirty_ = true;
// Just to do something with that string
LYXERR(Debug::INFO, "info inset text: " << gui);
}
diff --git a/src/insets/InsetInfo.h b/src/insets/InsetInfo.h
index 3531b41681..8e506ed9ed 100644
--- a/src/insets/InsetInfo.h
+++ b/src/insets/InsetInfo.h
@@ -237,6 +237,8 @@ private:
///
bool initialized_;
///
+ mutable bool dirty_;
+ ///
InsetInfoParams params_;
///
friend class InsetInfoParams;
--
lyx-devel mailing list
lyx-devel@lists.lyx.org
http://lists.lyx.org/mailman/listinfo/lyx-devel