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 b494286a9c)
This commit is contained in:
Richard Kimberly Heck 2024-08-06 11:31:35 -04:00
parent 8f6c41a110
commit 1ddd148b06
2 changed files with 19 additions and 20 deletions

View File

@ -528,20 +528,14 @@ void InsetRef::updateBuffer(ParIterator const & it, UpdateType, bool const /*del
label += getParam("name");
}
bool const use_formatted_ref = buffer().params().use_formatted_ref;
unsigned int const maxLabelChars = 24;
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) {
// The tooltip will be over-written later, in addToToc, if need be.
tooltip_ = label;
support::truncateWithEllipsis(label, maxLabelChars);
} else {
// put cross-reference value into tooltip
tooltip_ = displayString(ref, cmd);
}
toc_string_ = label;
// Note: This could be changed later, in addToToc, if we are using
unsigned int const maxLabelChars = 24;
support::truncateWithEllipsis(label, maxLabelChars);
// 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();
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")
target = displayString(ref, cmd);
}
return;
}
// It seems that this reference does not point to any valid label.

View File

@ -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