From: Richard Heck Date: Fri, 26 Feb 2010 20:16:12 +0000 (+0000) Subject: Truncate long cross-references and show the whole thing in a tooltip. X-Git-Tag: 2.0.0~3938 X-Git-Url: https://git.lyx.org/gitweb/?a=commitdiff_plain;h=fce0bea8a25647e1c11d6eaca7c4a618f67d50bc;p=features.git 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 --- diff --git a/src/insets/InsetRef.cpp b/src/insets/InsetRef.cpp index 0b9227eff9..d6a594eec7 100644 --- a/src/insets/InsetRef.cpp +++ b/src/insets/InsetRef.cpp @@ -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: ")}, { "", "", "" } }; diff --git a/src/insets/InsetRef.h b/src/insets/InsetRef.h index afcaaf4974..908d1aa1e5 100644 --- a/src/insets/InsetRef.h +++ b/src/insets/InsetRef.h @@ -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