]> git.lyx.org Git - features.git/commitdiff
Truncate long cross-references and show the whole thing in a tooltip.
authorRichard Heck <rgheck@comcast.net>
Fri, 26 Feb 2010 20:16:12 +0000 (20:16 +0000)
committerRichard Heck <rgheck@comcast.net>
Fri, 26 Feb 2010 20:16:12 +0000 (20:16 +0000)
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@33586 a592a061-630c-0410-9148-cb99ea01b6c8

src/insets/InsetRef.cpp
src/insets/InsetRef.h

index 0b9227eff90a8695dbe144513cbe22fd52f35de2..d6a594eec79da2abb9489ecc841d9b3099086676 100644 (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: ")},
        { "", "", "" }
 };
 
index afcaaf4974d6985b9269875b33399050a995566c..908d1aa1e5c9724dfab987264115b125c9b3a89a 100644 (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