From 1ddd148b06b0a3abcdb42991f6d9bf2d1539501b Mon Sep 17 00:00:00 2001 From: Richard Kimberly Heck Date: Tue, 6 Aug 2024 11:31:35 -0400 Subject: [PATCH] Fix bug with display of reference tooltips. Previously, the tooltip was assigned during updateBuffer. But then we could not determine the value for forward references. (cherry picked from commit b494286a9c271b1f39d6248d977d2ef14a71f64c) --- src/insets/InsetRef.cpp | 37 +++++++++++++++++-------------------- status.24x | 2 ++ 2 files changed, 19 insertions(+), 20 deletions(-) diff --git a/src/insets/InsetRef.cpp b/src/insets/InsetRef.cpp index 0fd622b689..c0dab054dc 100644 --- a/src/insets/InsetRef.cpp +++ b/src/insets/InsetRef.cpp @@ -527,21 +527,15 @@ void InsetRef::updateBuffer(ParIterator const & it, UpdateType, bool const /*del label += "||"; label += getParam("name"); } - - bool const use_formatted_ref = buffer().params().use_formatted_ref; - unsigned int const maxLabelChars = 24; + + // The tooltip will be over-written later, in addToToc, if need be. + tooltip_ = label; toc_string_ = label; - // Show label in tooltip when formatted references are shown in the work - // area or it is too long - if (use_formatted_ref || label.size() > maxLabelChars) { - tooltip_ = label; - support::truncateWithEllipsis(label, maxLabelChars); - } else { - // put cross-reference value into tooltip - tooltip_ = displayString(ref, cmd); - } + + unsigned int const maxLabelChars = 24; + support::truncateWithEllipsis(label, maxLabelChars); - // Note: This could be changed later, in addToToc, if we are using + // Note: This could also be changed later, in addToToc, if we are using // fomatted references in the work area. screen_label_ = label; // This also can be overwritten in addToToc. (We can't do it now @@ -571,14 +565,17 @@ void InsetRef::addToToc(DocIterator const & cpit, bool output_active, toc2->push_back(TocItem(cpit, 0, screenLabel(), output_active)); } - // Code for display of formatted references - bool const use_formatted_ref = buffer().params().use_formatted_ref; - docstring & target = use_formatted_ref ? screen_label_ : tooltip_; string const & cmd = getCmdName(); - docstring const & ref = getParam("reference"); - if (cmd != "pageref" && cmd != "vpageref" && cmd != "vref" && - cmd != "labelonly") - target = displayString(ref, cmd); + if (cmd != "pageref" && cmd != "vpageref" && + cmd != "vref" && cmd != "labelonly") + { + bool const use_formatted_ref = buffer().params().use_formatted_ref; + // We will put the value of the reference either into the tooltip + // or the screen label, depending. + docstring & target = use_formatted_ref ? screen_label_ : tooltip_; + docstring const & ref = getParam("reference"); + target = displayString(ref, cmd); + } return; } // It seems that this reference does not point to any valid label. diff --git a/status.24x b/status.24x index 57557afbee..8e80a7437f 100644 --- a/status.24x +++ b/status.24x @@ -86,6 +86,8 @@ What's new - Restore old display of cross-references in the outliner. The change led to odd behavior on filtering. +- Display values of cross-references in tooltips for forward references. + * INTERNALS -- 2.39.5