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

Richard Kimberly Heck rikiheck at lyx.org
Tue Aug 6 15:32:09 UTC 2024


commit b494286a9c271b1f39d6248d977d2ef14a71f64c
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.
---
 src/insets/InsetRef.cpp | 35 ++++++++++++++++-------------------
 1 file changed, 16 insertions(+), 19 deletions(-)

diff --git a/src/insets/InsetRef.cpp b/src/insets/InsetRef.cpp
index 2f485a6e86..593a3da6b5 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
@@ -572,13 +566,16 @@ void InsetRef::addToToc(DocIterator const & cpit, bool output_active,
 		}
 
 		// Code for display of formatted references
-		bool const use_formatted_ref = buffer().params().use_formatted_ref;
-		if (use_formatted_ref) {
-			string const & cmd = getCmdName();
+		string const & cmd = getCmdName();
+		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");
-			if (cmd != "pageref" && cmd != "vpageref" && cmd != "vref" &&
-					cmd != "labelonly")
-				screen_label_ = displayString(ref, cmd);
+				target = displayString(ref, cmd);
 		}
 		return;
 	}


More information about the lyx-cvs mailing list