commit 68724a841d54a8a87631ae86eb1f3b46298c7279
Author: Juergen Spitzmueller <[email protected]>
Date:   Wed Feb 4 08:49:22 2026 +0100

    Build InsetInfo info also when inset is hidden in collapsible (#13280)
---
 src/insets/InsetInfo.cpp | 18 ++++++++++++++++++
 1 file changed, 18 insertions(+)

diff --git a/src/insets/InsetInfo.cpp b/src/insets/InsetInfo.cpp
index 43c79f9fec..77206dc44f 100644
--- a/src/insets/InsetInfo.cpp
+++ b/src/insets/InsetInfo.cpp
@@ -816,6 +816,11 @@ void InsetInfo::updateBuffer(ParIterator const & it, 
UpdateType utype, bool cons
        BufferParams const & bp = buffer().params();
        params_.lang = it.paragraph().getFontSettings(bp, it.pos()).language();
        InsetCollapsible::updateBuffer(it, utype, deleted);
+
+       // We might need to build information in case the info inset is hidden
+       // in a collapsible and metrics not triggered (#13280)
+       if (!initialized_)
+               const_cast<InsetInfo *>(this)->build();
 }
 
 
@@ -849,12 +854,14 @@ void InsetInfo::build()
                if (func.action() == LFUN_UNKNOWN_ACTION) {
                        gui = _("Unknown action %1$s");
                        error(from_ascii("Unknown action %1$s"), params_.lang);
+                       initialized_ = true;
                        break;
                }
                KeyMap::Bindings bindings = 
theTopLevelKeymap().findBindings(func);
                if (bindings.empty()) {
                        gui = _("undefined");
                        info(from_ascii("undefined"), params_.lang);
+                       initialized_ = true;
                        break;
                }
                docstring sequence;
@@ -956,6 +963,7 @@ void InsetInfo::build()
                }
                setText(ods.str(), is_translated ? guilang : nullptr);
                params_.force_ltr = !is_translated || (!guilang->rightToLeft() 
&& !params_.lang->rightToLeft());
+               initialized_ = true;
                break;
        }
        case InsetInfoParams::LYXRC_INFO: {
@@ -965,6 +973,7 @@ void InsetInfo::build()
                if (params_.name.empty()) {
                        gui = _("undefined");
                        info(from_ascii("undefined"), params_.lang);
+                       initialized_ = true;
                        break;
                }
                // FIXME this uses the serialization mechanism to get the info
@@ -974,6 +983,7 @@ void InsetInfo::build()
                if (result.size() < 2) {
                        gui = _("undefined");
                        info(from_ascii("undefined"), params_.lang);
+                       initialized_ = true;
                        break;
                }
                string::size_type loc = result.rfind("\n", result.size() - 2);
@@ -982,6 +992,7 @@ void InsetInfo::build()
                          || result.substr(loc + 1, params_.name.size()) != 
params_.name) {
                        gui = _("undefined");
                        info(from_ascii("undefined"), params_.lang);
+                       initialized_ = true;
                        break;
                }
                // remove leading comments and \\name and space
@@ -994,6 +1005,7 @@ void InsetInfo::build()
                if (result.empty())
                        result = "not set";
                setText(from_utf8(result), params_.lang);
+               initialized_ = true;
                break;
        }
        case InsetInfoParams::PACKAGE_INFO:
@@ -1039,6 +1051,7 @@ void InsetInfo::build()
                        gui = _("no");
                        info(from_ascii("no"), params_.lang);
                }
+               initialized_ = true;
                break;
        }
        case InsetInfoParams::MENU_INFO: {
@@ -1110,6 +1123,7 @@ void InsetInfo::build()
                locstring = subst(locstring, from_ascii("</amp;>"), 
from_ascii(" & "));
                setText(locstring, guilang);
                params_.force_ltr = !guilang->rightToLeft() && 
!params_.lang->rightToLeft();
+               initialized_ = true;
                break;
        }
        case InsetInfoParams::ICON_INFO: {
@@ -1169,6 +1183,7 @@ void InsetInfo::build()
                        setText(from_utf8(os::latex_path(buffer().filePath())), 
params_.lang);
                else if (params_.name == "class")
                        
setText(from_utf8(buffer().params().documentClass().name()), params_.lang);
+               initialized_ = true;
                break;
        }
        case InsetInfoParams::VCS_INFO: {
@@ -1199,6 +1214,7 @@ void InsetInfo::build()
                        error(from_ascii("%1$s[[vcs data]] unknown"), 
params_.lang);
                } else
                        setText(from_utf8(binfo), params_.lang);
+               initialized_ = true;
                break;
        }
        case InsetInfoParams::LYX_INFO:
@@ -1227,6 +1243,7 @@ void InsetInfo::build()
                else
                        date = QDate::currentDate();
                setText(getDate(date_format, date, params_.lang), params_.lang);
+               initialized_ = true;
                break;
        }
        case InsetInfoParams::TIME_INFO:
@@ -1245,6 +1262,7 @@ void InsetInfo::build()
                else
                        time = QTime::currentTime();
                setText(getTime(time_format, time, params_.lang), params_.lang);
+               initialized_ = true;
                break;
        }
        }
-- 
lyx-cvs mailing list
[email protected]
https://lists.lyx.org/mailman/listinfo/lyx-cvs

Reply via email to