]> git.lyx.org Git - lyx.git/blobdiff - src/factory.C
more cursor dispatch
[lyx.git] / src / factory.C
index e6f75634a4d3735de58906ffe8c27f20f3cb6b13..b0f443fdab9ed8ea3a06f3662e6510cce9fe6d71 100644 (file)
 #include "insets/inseturl.h"
 #include "insets/insetvspace.h"
 #include "insets/insetwrap.h"
+
 #include "mathed/formulamacro.h"
-#include "mathed/formula.h"
+#include "mathed/math_hullinset.h"
 
 #include "frontends/Dialogs.h"
 #include "frontends/LyXView.h"
+
 #include "support/lstrings.h"
 #include "support/std_sstream.h"
 
@@ -69,9 +71,8 @@ using std::endl;
 using std::string;
 
 
-InsetOld * createInset(FuncRequest const & cmd)
+InsetBase * createInset(BufferView * bv, FuncRequest const & cmd)
 {
-       BufferView * bv = cmd.view();
        BufferParams const & params = bv->buffer()->params();
 
        switch (cmd.action) {
@@ -84,9 +85,6 @@ InsetOld * createInset(FuncRequest const & cmd)
        case LFUN_INSERT_PAGEBREAK:
                return new InsetPagebreak;
 
-       case LFUN_INSET_MINIPAGE:
-               return new InsetBox(params, "Frameless");
-
        case LFUN_INSERT_CHARSTYLE: {
                string s = cmd.getArg(0);
                CharStyles::iterator found_cs = params.getLyXTextClass().charstyle(s);
@@ -166,7 +164,7 @@ InsetOld * createInset(FuncRequest const & cmd)
                if (icp.getContents().empty()) {
                        lv->getDialogs().show("index", data, 0);
                } else {
-                       lv->dispatch(FuncRequest(bv, LFUN_INSET_APPLY, data));
+                       lv->dispatch(FuncRequest(LFUN_INSET_APPLY, data));
                }
                return 0;
        }
@@ -183,16 +181,19 @@ InsetOld * createInset(FuncRequest const & cmd)
                bv->owner()->getDialogs().show("tabularcreate");
                return 0;
 
-       case LFUN_INSET_CAPTION: 
-       if (!bv->innerInset()) {
-               auto_ptr<InsetCaption> inset(new InsetCaption(params));
-               inset->setOwner(bv->innerInset());
-               inset->setAutoBreakRows(true);
-               inset->setDrawFrame(InsetText::LOCKED);
-               inset->setFrameColor(LColor::captionframe);
-               return inset.release();
+       case LFUN_INSET_CAPTION: {
+               UpdatableInset * up = bv->cursor().inset()
+                       ? bv->cursor().inset()->asUpdatableInset() : 0;
+               if (!up) {
+                       auto_ptr<InsetCaption> inset(new InsetCaption(params));
+                       inset->setOwner(up);
+                       inset->setAutoBreakRows(true);
+                       inset->setDrawFrame(InsetText::LOCKED);
+                       inset->setFrameColor(LColor::captionframe);
+                       return inset.release();
+               }
+               return 0;
        }
-       return 0;
 
        case LFUN_INDEX_PRINT:
                return new InsetPrintIndex(InsetCommandParams("printindex"));
@@ -238,7 +239,7 @@ InsetOld * createInset(FuncRequest const & cmd)
                        return new InsetERT(params, st);
 
                } else if (name == "external") {
-                       Buffer const & buffer = *cmd.view()->buffer();
+                       Buffer const & buffer = *bv->buffer();
                        InsetExternalParams iep;
                        InsetExternalMailer::string2params(cmd.argument,
                                                           buffer, iep);
@@ -247,7 +248,7 @@ InsetOld * createInset(FuncRequest const & cmd)
                        return inset.release();
 
                } else if (name == "graphics") {
-                       Buffer const & buffer = *cmd.view()->buffer();
+                       Buffer const & buffer = *bv->buffer();
                        InsetGraphicsParams igp;
                        InsetGraphicsMailer::string2params(cmd.argument,
                                                           buffer, igp);
@@ -331,7 +332,7 @@ InsetOld * createInset(FuncRequest const & cmd)
 }
 
 
-InsetOld * readInset(LyXLex & lex, Buffer const & buf)
+InsetBase * readInset(LyXLex & lex, Buffer const & buf)
 {
        // consistency check
        if (lex.getString() != "\\begin_inset") {
@@ -339,7 +340,7 @@ InsetOld * readInset(LyXLex & lex, Buffer const & buf)
                       << endl;
        }
 
-       auto_ptr<InsetOld> inset;
+       auto_ptr<InsetBase> inset;
 
        LyXTextClass tclass = buf.params().getLyXTextClass();
                
@@ -406,7 +407,7 @@ InsetOld * readInset(LyXLex & lex, Buffer const & buf)
                } else if (tmptok == "FormulaMacro") {
                        inset.reset(new InsetFormulaMacro);
                } else if (tmptok == "Formula") {
-                       inset.reset(new InsetFormula);
+                       inset.reset(new MathHullInset);
                } else if (tmptok == "Graphics") {
                        inset.reset(new InsetGraphics);
                } else if (tmptok == "Note") {
@@ -443,8 +444,6 @@ InsetOld * readInset(LyXLex & lex, Buffer const & buf)
                        inset.reset(new InsetMarginal(buf.params()));
                } else if (tmptok == "OptArg") {
                        inset.reset(new InsetOptArg(buf.params()));
-               } else if (tmptok == "Minipage") {
-                       inset.reset(new InsetBox(buf.params(), "Frameless"));
                } else if (tmptok == "Float") {
                        lex.next();
                        string tmptok = lex.getString();