]> git.lyx.org Git - lyx.git/blobdiff - src/text3.C
Tweak layout in GToc
[lyx.git] / src / text3.C
index ab31751e00b95b33ad6989c85234b475031de467..1dc903f7cf3006e262ede13f7cb3ab0a28d783d9 100644 (file)
@@ -308,8 +308,8 @@ void LyXText::dispatch(LCursor & cur, FuncRequest & cmd)
        // Signals that a full-screen update is required
        bool needsUpdate = !(lyxaction.funcHasFlag(cmd.action, 
                LyXAction::NoUpdate) || singleParUpdate);
-       // Remember the old paragraph metric
-       Dimension olddim = cur.paragraph().dim();
+       // Remember the old paragraph metric (_outer_ paragraph!)
+       Dimension olddim = cur.bottom().paragraph().dim();
 
        switch (cmd.action) {
 
@@ -621,7 +621,7 @@ void LyXText::dispatch(LCursor & cur, FuncRequest & cmd)
 
        case LFUN_DELETE:
                if (!cur.selection()) {
-                       Delete(cur);
+                       needsUpdate = Delete(cur);
                        cur.resetAnchor();
                        // It is possible to make it a lot faster still
                        // just comment out the line below...
@@ -649,7 +649,7 @@ void LyXText::dispatch(LCursor & cur, FuncRequest & cmd)
        case LFUN_BACKSPACE:
                if (!cur.selection()) {
                        if (bv->owner()->getIntl().getTransManager().backspace()) {
-                               backspace(cur);
+                               needsUpdate = backspace(cur);
                                cur.resetAnchor();
                                // It is possible to make it a lot faster still
                                // just comment out the line below...
@@ -825,9 +825,6 @@ void LyXText::dispatch(LCursor & cur, FuncRequest & cmd)
        case LFUN_PASTE:
                cur.message(_("Paste"));
                lyx::cap::replaceSelection(cur);
-#ifdef WITH_WARNINGS
-#warning FIXME Check if the arg is in the domain of available selections.
-#endif
                if (isStrUnsignedInt(cmd.argument))
                        pasteSelection(cur, convert<unsigned int>(cmd.argument));
                else
@@ -1028,20 +1025,7 @@ void LyXText::dispatch(LCursor & cur, FuncRequest & cmd)
                        paste_internally = true;
                }
 
-               // Clear the selection
-               cur.clearSelection();
-
-               setCursorFromCoordinates(cur, cmd.x, cmd.y);
-               cur.resetAnchor();
-               finishUndo();
-               cur.setTargetX();
-
-               // Has the cursor just left the inset?
-               if (bv->cursor().inMathed() && !cur.inMathed())
-                       bv->cursor().inset().notifyCursorLeaves(bv->cursor());
-
-               // Set cursor here.
-               bv->cursor() = cur;
+               bv->mouseSetCursor(cur);
 
                // Insert primary selection with middle mouse
                // if there is a local selection in the current buffer,
@@ -1130,12 +1114,6 @@ void LyXText::dispatch(LCursor & cur, FuncRequest & cmd)
                cur.clearSelection();
                LyXFont const old_font = real_current_font;
 
-               // Prevents language turds in new lyxtexts under non-english
-               BufferParams const & bufparams = cur.buffer().params();
-               Language const * lang = cur.paragraph().getParLanguage(bufparams);
-               current_font.setLanguage(lang);
-               real_current_font.setLanguage(lang);
-
                string::const_iterator cit = cmd.argument.begin();
                string::const_iterator end = cmd.argument.end();
                for (; cit != end; ++cit)
@@ -1220,11 +1198,18 @@ void LyXText::dispatch(LCursor & cur, FuncRequest & cmd)
                cur.dispatch(FuncRequest(LFUN_LAYOUT, "Caption"));
                break;
 
-       case LFUN_INDEX_INSERT:
-               // Just open the inset
-               doInsertInset(cur, this, cmd, true, false);
+       case LFUN_INDEX_INSERT: {
+               InsetBase * inset = createInset(&cur.bv(), cmd);
+               if (!inset)
+                       break;
+
+               recordUndo(cur);
+               cur.clearSelection();
+               insertInset(cur, inset);
+               inset->edit(cur, true);
                cur.posRight();
                break;
+       }
 
        case LFUN_INDEX_PRINT:
        case LFUN_TOC_INSERT:
@@ -1540,8 +1525,8 @@ void LyXText::dispatch(LCursor & cur, FuncRequest & cmd)
 
        if (singleParUpdate)
                // Inserting characters does not change par height
-               if (cur.paragraph().dim().asc == olddim.asc
-                && cur.paragraph().dim().des == olddim.des) {
+               if (cur.bottom().paragraph().dim().height() 
+                   == olddim.height()) {
                        // if so, update _only_ this paragraph
                        cur.bv().update(Update::SinglePar | Update::Force);
                } else
@@ -1765,6 +1750,15 @@ bool LyXText::getStatus(LCursor & cur, FuncRequest const & cmd,
                flag.setOnOff(font.family() == LyXFont::TYPEWRITER_FAMILY);
                return true;
 
+       case LFUN_CUT:
+       case LFUN_COPY:
+               enable = cur.selection();
+               break;
+
+       case LFUN_PASTE:
+               enable = lyx::cap::numberOfSelections() > 0;
+               break;
+
        case LFUN_DELETE_WORD_FORWARD:
        case LFUN_DELETE_WORD_BACKWARD:
        case LFUN_DELETE_LINE_FORWARD:
@@ -1808,9 +1802,6 @@ bool LyXText::getStatus(LCursor & cur, FuncRequest const & cmd,
        case LFUN_LOWCASE_WORD:
        case LFUN_CAPITALIZE_WORD:
        case LFUN_TRANSPOSE_CHARS:
-       case LFUN_PASTE:
-       case LFUN_CUT:
-       case LFUN_COPY:
        case LFUN_GETXY:
        case LFUN_SETXY:
        case LFUN_GETFONT: