]> git.lyx.org Git - lyx.git/blobdiff - src/insets/InsetPhantom.cpp
Fix bad cursor positioning when entering an inset
[lyx.git] / src / insets / InsetPhantom.cpp
index 2f5daf07e33feb7ea9b8c1fbf61165869cbf3c63..c6efe9a9c93416ddce6259b38d22ac5d73357819 100644 (file)
@@ -71,14 +71,16 @@ PhantomTranslatorLoc const init_phantomtranslator_loc()
 
 PhantomTranslator const & phantomtranslator()
 {
-       static PhantomTranslator translator = init_phantomtranslator();
+       static PhantomTranslator const translator =
+           init_phantomtranslator();
        return translator;
 }
 
 
 PhantomTranslatorLoc const & phantomtranslator_loc()
 {
-       static PhantomTranslatorLoc translator = init_phantomtranslator_loc();
+       static PhantomTranslatorLoc const translator =
+           init_phantomtranslator_loc();
        return translator;
 }
 
@@ -112,7 +114,7 @@ void InsetPhantomParams::read(Lexer & lex)
 //
 /////////////////////////////////////////////////////////////////////
 
-InsetPhantom::InsetPhantom(Buffer const & buf, string const & label)
+InsetPhantom::InsetPhantom(Buffer * buf, string const & label)
        : InsetCollapsable(buf)
 {
        setDrawFrame(false);
@@ -126,13 +128,7 @@ InsetPhantom::~InsetPhantom()
 }
 
 
-docstring InsetPhantom::editMessage() const
-{
-       return _("Opened Phantom Inset");
-}
-
-
-docstring InsetPhantom::name() const 
+docstring InsetPhantom::layoutName() const
 {
        return from_ascii("Phantom:" + phantomtranslator().find(params_.type));
 }
@@ -154,13 +150,13 @@ void InsetPhantom::draw(PainterInfo & pi, int x, int y) const
 
        // draw the inset marker
        drawMarkers(pi, x, y);
-       
+
        // draw the arrow(s)
        static int const arrow_size = 4;
        ColorCode const origcol = pi.base.font.color();
        pi.base.font.setColor(Color_special);
        pi.base.font.setColor(origcol);
-       Dimension const dim = dimension(*pi.base.bv);
+       Dimension const dim = Inset::dimension(*pi.base.bv);
 
        if (params_.type == InsetPhantomParams::Phantom ||
                params_.type == InsetPhantomParams::VPhantom) {
@@ -262,10 +258,13 @@ bool InsetPhantom::showInsetDialog(BufferView * bv) const
 
 void InsetPhantom::doDispatch(Cursor & cur, FuncRequest & cmd)
 {
-       switch (cmd.action) {
+       switch (cmd.action()) {
 
        case LFUN_INSET_MODIFY:
+               cur.recordUndoInset(this);
                string2params(to_utf8(cmd.argument()), params_);
+               setButtonLabel();
+               cur.forceBufferUpdate();
                break;
 
        case LFUN_INSET_DIALOG_UPDATE:
@@ -282,7 +281,7 @@ void InsetPhantom::doDispatch(Cursor & cur, FuncRequest & cmd)
 bool InsetPhantom::getStatus(Cursor & cur, FuncRequest const & cmd,
                FuncStatus & flag) const
 {
-       switch (cmd.action) {
+       switch (cmd.action()) {
 
        case LFUN_INSET_MODIFY:
                if (cmd.getArg(0) == "phantom") {
@@ -305,42 +304,53 @@ bool InsetPhantom::getStatus(Cursor & cur, FuncRequest const & cmd,
 
 docstring InsetPhantom::toolTip(BufferView const &, int, int) const
 {
-       OutputParams rp(&buffer().params().encoding());
-       odocstringstream ods;
-       InsetCollapsable::plaintext(ods, rp);
-       docstring content_tip = support::wrapParas(ods.str());
-       docstring res = phantomtranslator_loc().find(params_.type);
-       if (!content_tip.empty())
-               res += from_ascii(": ") + "\n" + content_tip;
-       return res;
+       docstring const res = phantomtranslator_loc().find(params_.type);
+       return toolTipText(res + from_ascii(": "));
 }
 
 
-int InsetPhantom::latex(odocstream & os, OutputParams const & runparams) const
+void InsetPhantom::latex(otexstream & os, OutputParams const & runparams) const
 {
-       if (params_.type == InsetPhantomParams::Phantom)
+       if (runparams.moving_arg)
+               os << "\\protect";
+
+       switch (params_.type) {
+       case InsetPhantomParams::Phantom:
                os << "\\phantom{";
-       else if (params_.type == InsetPhantomParams::HPhantom)
+               break;
+       case InsetPhantomParams::HPhantom:
                os << "\\hphantom{";
-       else if (params_.type == InsetPhantomParams::VPhantom)
+               break;
+       case InsetPhantomParams::VPhantom:
                os << "\\vphantom{";
-       int const i = InsetCollapsable::latex(os, runparams);
+               break;
+       default:
+               os << "\\phantom{";
+               break;
+       }
+       InsetCollapsable::latex(os, runparams);
        os << "}";
-
-       return i;
 }
 
 
-int InsetPhantom::plaintext(odocstream & os,
-                           OutputParams const & runparams) const
+int InsetPhantom::plaintext(odocstringstream & os,
+                           OutputParams const & runparams, size_t max_length) const
 {
-       if (params_.type == InsetPhantomParams::Phantom)
+       switch (params_.type) {
+       case InsetPhantomParams::Phantom:
                os << '[' << buffer().B_("phantom") << ":";
-       else if (params_.type == InsetPhantomParams::HPhantom)
+               break;
+       case InsetPhantomParams::HPhantom:
                os << '[' << buffer().B_("hphantom") << ":";
-       else if (params_.type == InsetPhantomParams::VPhantom)
+               break;
+       case InsetPhantomParams::VPhantom:
                os << '[' << buffer().B_("vphantom") << ":";
-       InsetCollapsable::plaintext(os, runparams);
+               break;
+       default:
+               os << '[' << buffer().B_("phantom") << ":";
+               break;
+       }
+       InsetCollapsable::plaintext(os, runparams, max_length);
        os << "]";
 
        return PLAINTEXT_NEWLINE;
@@ -349,13 +359,15 @@ int InsetPhantom::plaintext(odocstream & os,
 
 int InsetPhantom::docbook(odocstream & os, OutputParams const & runparams) const
 {
-       string cmdname;
-       if (params_.type == InsetPhantomParams::Phantom)
-               cmdname = "phantom";
-       else if (params_.type == InsetPhantomParams::HPhantom)
-               cmdname = "phantom";
-       else if (params_.type == InsetPhantomParams::VPhantom)
-               cmdname = "phantom";
+       docstring cmdname;
+       switch (params_.type) {
+       case InsetPhantomParams::Phantom:
+       case InsetPhantomParams::HPhantom:
+       case InsetPhantomParams::VPhantom:
+       default:
+               cmdname = from_ascii("phantom");
+               break;
+       }
        os << "<" + cmdname + ">";
        int const i = InsetCollapsable::docbook(os, runparams);
        os << "</" + cmdname + ">";
@@ -364,14 +376,14 @@ int InsetPhantom::docbook(odocstream & os, OutputParams const & runparams) const
 }
 
 
-docstring InsetPhantom::xhtml(odocstream &, OutputParams const &) const
+docstring InsetPhantom::xhtml(XHTMLStream &, OutputParams const &) const
 {
        return docstring();
 }
 
-docstring InsetPhantom::contextMenu(BufferView const &, int, int) const
+string InsetPhantom::contextMenuName() const
 {
-       return from_ascii("context-phantom");
+       return "context-phantom";
 }