From: Richard Kimberly Heck Date: Tue, 6 Aug 2024 15:31:35 +0000 (-0400) Subject: Fix bug with display of reference tooltips. X-Git-Url: https://git.lyx.org/gitweb/?a=commitdiff_plain;h=1ddd148b06b0a3abcdb42991f6d9bf2d1539501b;p=lyx.git 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) --- 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