]> git.lyx.org Git - lyx.git/blobdiff - src/Text3.cpp
Routines for calculating numerical labels for BibTeX citations.
[lyx.git] / src / Text3.cpp
index e1ec72d0786045fcc0dac3b0eac1664efe9e4f63..af69c654e79311a7cce1254a5862a778ac506cb5 100644 (file)
@@ -229,7 +229,7 @@ static bool doInsertInset(Cursor & cur, Text * text,
 {
        Buffer & buffer = cur.bv().buffer();
        BufferParams const & bparams = buffer.params();
-       Inset * inset = createInset(buffer, cmd);
+       Inset * inset = createInset(&buffer, cmd);
        if (!inset)
                return false;
 
@@ -267,16 +267,19 @@ static bool doInsertInset(Cursor & cur, Text * text,
        cur.clearSelection(); // bug 393
        cur.finishUndo();
        InsetText * insetText = dynamic_cast<InsetText *>(inset);
-       if (insetText && (!insetText->allowMultiPar() || cur.lastpit() == 0)) {
-               // reset first par to default
-               cur.text()->paragraphs().begin()
-                       ->setPlainOrDefaultLayout(bparams.documentClass());
-               cur.pos() = 0;
-               cur.pit() = 0;
-               // Merge multiple paragraphs -- hack
-               while (cur.lastpit() > 0)
-                       mergeParagraph(bparams, cur.text()->paragraphs(), 0);
-               cur.leaveInset(*inset);
+       if (insetText) {
+               insetText->fixParagraphsFont();
+               if (!insetText->allowMultiPar() || cur.lastpit() == 0) {
+                       // reset first par to default
+                       cur.text()->paragraphs().begin()
+                               ->setPlainOrDefaultLayout(bparams.documentClass());
+                       cur.pos() = 0;
+                       cur.pit() = 0;
+                       // Merge multiple paragraphs -- hack
+                       while (cur.lastpit() > 0)
+                               mergeParagraph(bparams, cur.text()->paragraphs(), 0);
+                       cur.leaveInset(*inset);
+               }
        } else {
                cur.leaveInset(*inset);
                // reset surrounding par to default
@@ -286,7 +289,6 @@ static bool doInsertInset(Cursor & cur, Text * text,
                        : dc.defaultLayoutName();
                text->setLayout(cur, layoutname);
        }
-
        return true;
 }
 
@@ -1051,13 +1053,13 @@ void Text::dispatch(Cursor & cur, FuncRequest & cmd)
                // before inserting into the document. See bug #5626.
                bool loaded = bv->buffer().isFullyLoaded();
                bv->buffer().setFullyLoaded(false);
-               Inset * inset = createInset(bv->buffer(), cmd);
+               Inset * inset = createInset(&bv->buffer(), cmd);
                bv->buffer().setFullyLoaded(loaded);
 
                if (inset) {
                        // FIXME (Abdel 01/02/2006):
                        // What follows would be a partial fix for bug 2154:
-                       //   http://bugzilla.lyx.org/show_bug.cgi?id=2154
+                       //   http://www.lyx.org/trac/ticket/2154
                        // This automatically put the label inset _after_ a
                        // numbered section. It should be possible to extend the mechanism
                        // to any kind of LateX environement.
@@ -1368,7 +1370,7 @@ void Text::dispatch(Cursor & cur, FuncRequest & cmd)
                        else
                                c = par.getChar(pos - 1);
                        string arg = to_utf8(cmd.argument());
-                       cur.insert(new InsetQuotes(bv->buffer(), c, (arg == "single")
+                       cur.insert(new InsetQuotes(cur.buffer(), c, (arg == "single")
                                ? InsetQuotes::SingleQuotes : InsetQuotes::DoubleQuotes));
                        cur.posForward();
                }
@@ -1403,14 +1405,17 @@ void Text::dispatch(Cursor & cur, FuncRequest & cmd)
                break;
 
        // Single-click on work area
-       case LFUN_MOUSE_PRESS:
+       case LFUN_MOUSE_PRESS: {
                // We are not marking a selection with the keyboard in any case.
-               cur.bv().cursor().setMark(false);
+               Cursor & bvcur = cur.bv().cursor();
+               bvcur.setMark(false);
                switch (cmd.button()) {
                case mouse_button::button1:
                        // Set the cursor
                        if (!bv->mouseSetCursor(cur, cmd.argument() == "region-select"))
                                cur.updateFlags(Update::SinglePar | Update::FitCursor);
+                       if (bvcur.wordSelection())
+                               selectWord(bvcur, WHOLE_WORD);
                        break;
 
                case mouse_button::button2:
@@ -1423,7 +1428,6 @@ void Text::dispatch(Cursor & cur, FuncRequest & cmd)
                        break;
 
                case mouse_button::button3: {
-                       Cursor const & bvcur = cur.bv().cursor();
                        // Don't do anything if we right-click a
                        // selection, a context menu will popup.
                        if (bvcur.selection() && cur >= bvcur.selectionBegin()
@@ -1440,7 +1444,7 @@ void Text::dispatch(Cursor & cur, FuncRequest & cmd)
                        break;
                } // switch (cmd.button())
                break;
-
+       }
        case LFUN_MOUSE_MOTION: {
                // Mouse motion with right or middle mouse do nothing for now.
                if (cmd.button() != mouse_button::button1) {
@@ -1595,9 +1599,9 @@ void Text::dispatch(Cursor & cur, FuncRequest & cmd)
                        docstring ds = cur.selectionAsString(false);
                        cutSelection(cur, true, false);
                        FuncRequest cmd0(cmd, ds);
-                       inset = createInset(cur.bv().buffer(), cmd0);
+                       inset = createInset(cur.buffer(), cmd0);
                } else {
-                       inset = createInset(cur.bv().buffer(), cmd);
+                       inset = createInset(cur.buffer(), cmd);
                }
                if (!inset)
                        break;
@@ -2008,7 +2012,7 @@ void Text::dispatch(Cursor & cur, FuncRequest & cmd)
                        setParagraphs(cur, p);
                        // FIXME This should be simplified when InsetFloatList takes a
                        // Buffer in its constructor.
-                       InsetFloatList * ifl = new InsetFloatList(to_utf8(cmd.argument()));
+                       InsetFloatList * ifl = new InsetFloatList(cur.buffer(), to_utf8(cmd.argument()));
                        ifl->setBuffer(bv->buffer());
                        insertInset(cur, ifl);
                        cur.posForward();