On 02/26/2010 03:16 PM, rgh...@lyx.org wrote:
Author: rgheck
Date: Fri Feb 26 21:16:12 2010
New Revision: 33586
URL: http://www.lyx.org/trac/changeset/33586

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

This could go to branch, Jurgen.

rh

Modified:
    lyx-devel/trunk/src/insets/InsetRef.cpp
    lyx-devel/trunk/src/insets/InsetRef.h

Modified: lyx-devel/trunk/src/insets/InsetRef.cpp
==============================================================================
--- lyx-devel/trunk/src/insets/InsetRef.cpp     Fri Feb 26 20:56:08 2010        
(r33585)
+++ lyx-devel/trunk/src/insets/InsetRef.cpp     Fri Feb 26 21:16:12 2010        
(r33586)
@@ -68,12 +68,6 @@
  }


-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::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 @@
        { "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: ")},
        { "", "", "" }
  };


Modified: lyx-devel/trunk/src/insets/InsetRef.h
==============================================================================
--- lyx-devel/trunk/src/insets/InsetRef.h       Fri Feb 26 20:56:08 2010        
(r33585)
+++ lyx-devel/trunk/src/insets/InsetRef.h       Fri Feb 26 21:16:12 2010        
(r33586)
@@ -41,7 +41,10 @@
        ///
        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 @@
        bool isLatex;
        ///
        mutable docstring screen_label_;
+       ///
+       mutable docstring tooltip_;
  };

  } // namespace lyx

Reply via email to