Truncate long cross-references and show the whole thing in a tooltip.

git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@33586 a592a061-630c-0410-9148-cb99ea01b6c8
This commit is contained in:
Richard Heck 2010-02-26 20:16:12 +00:00
parent 3906792378
commit fce0bea8a2
2 changed files with 27 additions and 14 deletions

View File

@ -68,12 +68,6 @@ ParamInfo const & InsetRef::findInfo(string const & /* cmdName */)
}
docstring InsetRef::screenLabel() const
{
return screen_label_;
}
int InsetRef::latex(odocstream & os, OutputParams const & runparams) const
{
// We don't want to output p_["name"], since that is only used
@ -163,22 +157,36 @@ void InsetRef::tocString(odocstream & os) const
void InsetRef::updateLabels(ParIterator const & it, UpdateType)
{
docstring const & label = getParam("reference");
docstring const & ref = getParam("reference");
// register this inset into the buffer reference cache.
buffer().references(label).push_back(make_pair(this, it));
buffer().references(ref).push_back(make_pair(this, it));
docstring label;
for (int i = 0; !types[i].latex_name.empty(); ++i) {
if (getCmdName() == types[i].latex_name) {
screen_label_ = _(types[i].short_gui_name);
label = _(types[i].short_gui_name);
break;
}
}
screen_label_ += label;
label += ref;
if (!isLatex && !getParam("name").empty()) {
screen_label_ += "||";
screen_label_ += getParam("name");
label += "||";
label += getParam("name");
}
screen_label_ = label;
bool shortened = false;
unsigned int const maxLabelChars = 24;
if (screen_label_.size() > maxLabelChars) {
screen_label_.erase(maxLabelChars - 3);
screen_label_ += "...";
shortened = true;
}
if (shortened)
tooltip_ = label;
else
tooltip_ = from_ascii("");
}
@ -213,7 +221,7 @@ InsetRef::type_info InsetRef::types[] = {
{ "pageref", N_("Page Number"), N_("Page: ")},
{ "vpageref", N_("Textual Page Number"), N_("TextPage: ")},
{ "vref", N_("Standard+Textual Page"), N_("Ref+Text: ")},
{ "prettyref", N_("PrettyRef"), N_("FormatRef: ")},
{ "prettyref", N_("PrettyRef"), N_("FrmtRef: ")},
{ "", "", "" }
};

View File

@ -41,7 +41,10 @@ public:
///
bool isLabeled() const { return true; }
///
docstring screenLabel() const;
docstring screenLabel() const { return screen_label_; }
///
docstring toolTip(BufferView const &, int, int) const
{ return tooltip_; }
///
bool hasSettings() const { return true; }
///
@ -80,6 +83,8 @@ private:
bool isLatex;
///
mutable docstring screen_label_;
///
mutable docstring tooltip_;
};
} // namespace lyx