]> git.lyx.org Git - lyx.git/blobdiff - src/insets/insetref.C
The speed patch: redraw only rows that have changed
[lyx.git] / src / insets / insetref.C
index 490d5e58090dd593c703c67336cbfda8328fb5d8..fd7074e5bfc88c51f16e99b6636fc19115042697 100644 (file)
@@ -18,6 +18,8 @@
 #include "funcrequest.h"
 #include "gettext.h"
 #include "LaTeXFeatures.h"
+#include "outputparams.h"
+#include "sgml.h"
 
 #include "frontends/LyXView.h"
 
@@ -40,13 +42,13 @@ InsetRef::InsetRef(InsetRef const & ir)
 {}
 
 
-void InsetRef::priv_dispatch(LCursor & cur, FuncRequest const & cmd)
+void InsetRef::doDispatch(LCursor & cur, FuncRequest & cmd)
 {
        switch (cmd.action) {
        case LFUN_MOUSE_PRESS:
                // Eventually trigger dialog with button 3 not 1
                if (cmd.button() == mouse_button::button3)
-                       cur.bv().owner()->dispatch(FuncRequest(LFUN_REF_GOTO, getContents()));
+                       cur.bv().owner()->dispatch(FuncRequest(LFUN_LABEL_GOTO, getContents()));
                else
                        InsetCommandMailer("ref", *this).showDialog(&cur.bv());
                return;
@@ -55,7 +57,7 @@ void InsetRef::priv_dispatch(LCursor & cur, FuncRequest const & cmd)
                return;
 
        default:
-               return InsetCommand::priv_dispatch(cur, cmd);
+               return InsetCommand::doDispatch(cur, cmd);
        }
 }
 
@@ -100,22 +102,24 @@ int InsetRef::plaintext(Buffer const &, ostream & os,
 }
 
 
-int InsetRef::linuxdoc(Buffer const &, ostream & os,
-                      OutputParams const &) const
+int InsetRef::linuxdoc(Buffer const & buf, ostream & os,
+                      OutputParams const & runparams) const
 {
-       os << "<ref id=\"" << getContents()
+       os << "<ref id=\"" << sgml::cleanID(buf, runparams, getContents())
           << "\" name=\"" << getOptions() << "\" >";
        return 0;
 }
 
 
-int InsetRef::docbook(Buffer const &, ostream & os,
-                     OutputParams const &) const
+int InsetRef::docbook(Buffer const & buf, ostream & os,
+                     OutputParams const & runparams) const
 {
-       if (getOptions().empty()) {
-               os << "<xref linkend=\"" << getContents() << "\">";
+       if (getOptions().empty() && runparams.flavor == OutputParams::XML) {
+               os << "<xref linkend=\"" << sgml::cleanID(buf, runparams, getContents()) << "\" />";
+       } else if (getOptions().empty()) {
+               os << "<xref linkend=\"" << sgml::cleanID(buf, runparams, getContents()) << "\">";
        } else {
-               os << "<link linkend=\"" << getContents()
+               os << "<link linkend=\"" << sgml::cleanID(buf, runparams, getContents())
                   << "\">" << getOptions() << "</link>";
        }
 
@@ -123,6 +127,13 @@ int InsetRef::docbook(Buffer const &, ostream & os,
 }
 
 
+int InsetRef::textString(Buffer const & buf, ostream & os,
+                      OutputParams const & op) const
+{
+       return plaintext(buf, os, op);
+}
+
+
 void InsetRef::validate(LaTeXFeatures & features) const
 {
        if (getCmdName() == "vref" || getCmdName() == "vpageref")