[LyX/2.4.x] Fix bug with display of reference tooltips.

Richard Kimberly Heck rikiheck at lyx.org
Tue Aug 6 15:36:43 UTC 2024


commit 1ddd148b06b0a3abcdb42991f6d9bf2d1539501b
Author: Richard Kimberly Heck <rikiheck at lyx.org>
Date:   Tue Aug 6 11:31:35 2024 -0400

    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
 


More information about the lyx-cvs mailing list