]> git.lyx.org Git - lyx.git/blobdiff - src/insets/InsetRef.cpp
Cleanup bv-dependent variables in InsetCollapsable
[lyx.git] / src / insets / InsetRef.cpp
index a3f059672095da39b251e8e95a9b222833477ab6..a2466c8ac10753ab6a2a96498b5129c3ba85a9e1 100644 (file)
@@ -140,10 +140,10 @@ docstring InsetRef::getEscapedLabel(OutputParams const & rp) const
 
 void InsetRef::latex(otexstream & os, OutputParams const & rp) const
 {
-       string const cmd = getCmdName();
-       docstring const data = getEscapedLabel(rp);
+       string const cmd = getCmdName();
+       docstring const data = getEscapedLabel(rp);
 
-       if (rp.inulemcmd)
+       if (rp.inulemcmd > 0)
                os << "\\mbox{";
 
        if (cmd == "eqref" && buffer().params().use_refstyle) {
@@ -168,7 +168,7 @@ void InsetRef::latex(otexstream & os, OutputParams const & rp) const
                os << p.getCommand(rp);
        }
 
-       if (rp.inulemcmd)
+       if (rp.inulemcmd > 0)
                os << "}";
 }
 
@@ -235,8 +235,8 @@ docstring InsetRef::xhtml(XHTMLStream & xs, OutputParams const & op) const
                        // properly in XHTML output yet (bug #8599).
                        // It might not be that hard to do. We have the InsetLabel,
                        // and we can presumably find its paragraph using the TOC.
-                       // We could then output the contents of the paragraph using
-                       // something?
+                       // But the label might be referencing a section, yet not be
+                       // in that section. So this is not trivial.
                        display_string = il->prettyCounter();
        } else 
                        display_string = ref;
@@ -244,8 +244,8 @@ docstring InsetRef::xhtml(XHTMLStream & xs, OutputParams const & op) const
        // FIXME What we'd really like to do is to be able to output some
        // appropriate sort of text here. But to do that, we need to associate
        // some sort of counter with the label, and we don't have that yet.
-       string const attr = "href=\"#" + html::cleanAttr(to_utf8(ref)) + "\"";
-       xs << html::StartTag("a", attr);
+       docstring const attr = "href=\"#" + html::cleanAttr(ref) + '"';
+       xs << html::StartTag("a", to_utf8(attr));
        xs << display_string;
        xs << html::EndTag("a");
        return docstring();
@@ -260,7 +260,7 @@ void InsetRef::toString(odocstream & os) const
 }
 
 
-void InsetRef::forToc(docstring & os, size_t) const
+void InsetRef::forOutliner(docstring & os, size_t const, bool const) const
 {
        // There's no need for details in the TOC, and a long label
        // will just get in the way.
@@ -288,22 +288,18 @@ void InsetRef::updateBuffer(ParIterator const & it, UpdateType)
                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)
+       if (label.size() > maxLabelChars) {
                tooltip_ = label;
-       else 
+               support::truncateWithEllipsis(label, maxLabelChars);
+       } else
                tooltip_ = from_ascii("");
+       screen_label_ = label;
 }
 
 
-void InsetRef::addToToc(DocIterator const & cpit, bool output_active) const
+void InsetRef::addToToc(DocIterator const & cpit, bool output_active,
+                                               UpdateType) const
 {
        docstring const & label = getParam("reference");
        if (buffer().insetLabel(label))
@@ -312,8 +308,8 @@ void InsetRef::addToToc(DocIterator const & cpit, bool output_active) const
 
        // It seems that this reference does not point to any valid label.
        screen_label_ = _("BROKEN: ") + screen_label_;
-       Toc & toc = buffer().tocBackend().toc("label");
-       toc.push_back(TocItem(cpit, 0, screen_label_, output_active));
+       shared_ptr<Toc> toc = buffer().tocBackend().toc("label");
+       toc->push_back(TocItem(cpit, 0, screen_label_, output_active));
 }
 
 
@@ -378,4 +374,9 @@ string const & InsetRef::getName(int type)
 }
 
 
+docstring InsetRef::getTOCString() const 
+{
+       return tooltip_.empty() ? screen_label_ : tooltip_;
+}
+
 } // namespace lyx