]> git.lyx.org Git - lyx.git/blobdiff - src/insets/InsetScript.cpp
Improve handling of top and bottom margin
[lyx.git] / src / insets / InsetScript.cpp
index 3d912d375f78e6975f17bb2fb13c0da9212fecf2..eccf3c302959a465ba74527fc0055b6560db577e 100644 (file)
@@ -26,6 +26,7 @@
 #include "LyXAction.h"
 #include "MetricsInfo.h"
 #include "OutputParams.h"
+#include "output_docbook.h"
 #include "output_xhtml.h"
 #include "TextClass.h"
 #include "TextMetrics.h"
@@ -81,7 +82,7 @@ ScriptTranslatorLoc const & scripttranslator_loc()
        return translator;
 }
 
-} // anon
+} // namespace
 
 
 InsetScriptParams::InsetScriptParams()
@@ -151,16 +152,12 @@ docstring InsetScript::layoutName() const
 }
 
 
-Inset::DisplayType InsetScript::display() const
-{
-       return Inline;
-}
-
-
 void InsetScript::metrics(MetricsInfo & mi, Dimension & dim) const
 {
        int const shift = params_.shift(mi.base.font);
-       ScriptChanger dummy(mi.base);
+       // Remember the value of the outser font, so that it can be used in cursorPos.
+       outer_font_ = mi.base.font;
+       Changer dummy = mi.base.changeScript();
        InsetText::metrics(mi, dim);
        dim.asc -= shift;
        dim.des += shift;
@@ -170,7 +167,7 @@ void InsetScript::metrics(MetricsInfo & mi, Dimension & dim) const
 void InsetScript::draw(PainterInfo & pi, int x, int y) const
 {
        int const shift = params_.shift(pi.base.font);
-       ScriptChanger dummy(pi.base);
+       Changer dummy = pi.base.changeScript();
        InsetText::draw(pi, x, y + shift);
 }
 
@@ -178,8 +175,7 @@ void InsetScript::draw(PainterInfo & pi, int x, int y) const
 void InsetScript::cursorPos(BufferView const & bv,
                CursorSlice const & sl, bool boundary, int & x, int & y) const
 {
-       Font const font = bv.textMetrics(&text()).displayFont(sl.pit(), sl.pos());
-       int const shift = params_.shift(font.fontInfo());
+       int const shift = params_.shift(outer_font_);
        InsetText::cursorPos(bv, sl, boundary, x, y);
        y += shift;
 }
@@ -235,7 +231,7 @@ bool InsetScript::insetAllowed(InsetCode code) const
        case BOX_CODE:
        case BRANCH_CODE:
        case CAPTION_CODE:
-       case COLLAPSABLE_CODE:
+       case COLLAPSIBLE_CODE:
        case FLOAT_CODE:
        case FLOAT_LIST_CODE:
        case FOOT_CODE:
@@ -263,8 +259,6 @@ bool InsetScript::getStatus(Cursor & cur, FuncRequest const & cmd,
                FuncStatus & flag) const
 {
        switch (cmd.action()) {
-       case LFUN_LAYOUT:
-       case LFUN_LAYOUT_PARAGRAPH:
        case LFUN_MATH_DISPLAY:
        case LFUN_BOX_INSERT:
        case LFUN_BRANCH_INSERT:
@@ -282,6 +276,7 @@ bool InsetScript::getStatus(Cursor & cur, FuncRequest const & cmd,
        case LFUN_PREVIEW_INSERT:
        case LFUN_QUOTE_INSERT:
        case LFUN_TABULAR_INSERT:
+       case LFUN_TABULAR_STYLE_INSERT:
        case LFUN_WRAP_INSERT:
                flag.setEnabled(false);
                return true;
@@ -360,22 +355,21 @@ int InsetScript::plaintext(odocstringstream & os,
 }
 
 
-int InsetScript::docbook(odocstream & os, OutputParams const & runparams) const
+void InsetScript::docbook(XMLStream & xs, OutputParams const & runparams) const
 {
-       string cmdname;
+       docstring cmdname;
        switch (params_.type) {
        case InsetScriptParams::Subscript:
-               cmdname = "subscript";
+               cmdname = from_ascii("subscript");
                break;
        case InsetScriptParams::Superscript:
-               cmdname = "superscript";
+               cmdname = from_ascii("superscript");
                break;
        }
-       os << '<' + cmdname + '>';
-       int const i = InsetText::docbook(os, runparams);
-       os << "</" + cmdname + '>';
 
-       return i;
+       xs << xml::StartTag(cmdname);
+       InsetText::docbook(xs, runparams);
+       xs << xml::EndTag(cmdname);
 }