]> git.lyx.org Git - lyx.git/blobdiff - src/Text3.cpp
* GuiPrefs: fix typo.
[lyx.git] / src / Text3.cpp
index c212f156f1bccdb58ed80566da4be5212c5d1cd0..3ac094d033c994f3ad2cfa5fe0cb121626ac14e3 100644 (file)
@@ -68,6 +68,7 @@
 #include "support/gettext.h"
 #include "support/lstrings.h"
 #include "support/lyxtime.h"
+#include "support/os.h"
 
 #include "mathed/InsetMathHull.h"
 #include "mathed/MathMacroTemplate.h"
@@ -448,7 +449,7 @@ void Text::dispatch(Cursor & cur, FuncRequest & cmd)
        BufferView * bv = &cur.bv();
        TextMetrics & tm = bv->textMetrics(this);
        if (!tm.contains(cur.pit())) {
-               lyx::dispatch(FuncRequest(LFUN_SCREEN_RECENTER));
+               lyx::dispatch(FuncRequest(LFUN_SCREEN_SHOW_CURSOR));
                tm = bv->textMetrics(this);
        }
 
@@ -561,6 +562,26 @@ void Text::dispatch(Cursor & cur, FuncRequest & cmd)
                cur.updateFlags(Update::FitCursor);
                break;
 
+       case LFUN_INSET_BEGIN:
+       case LFUN_INSET_BEGIN_SELECT:
+               needsUpdate |= cur.selHandle(cmd.action == LFUN_INSET_BEGIN_SELECT);
+               if (cur.depth() == 1 || cur.pos() > 0)
+                       needsUpdate |= cursorTop(cur);
+               else
+                       cur.undispatched();
+               cur.updateFlags(Update::FitCursor);
+               break;
+
+       case LFUN_INSET_END:
+       case LFUN_INSET_END_SELECT:
+               needsUpdate |= cur.selHandle(cmd.action == LFUN_INSET_END_SELECT);
+               if (cur.depth() == 1 || cur.pos() < cur.lastpos())
+                       needsUpdate |= cursorBottom(cur);
+               else
+                       cur.undispatched();
+               cur.updateFlags(Update::FitCursor);
+               break;
+
        case LFUN_CHAR_FORWARD:
        case LFUN_CHAR_FORWARD_SELECT:
                //LYXERR0(" LFUN_CHAR_FORWARD[SEL]:\n" << cur);
@@ -924,24 +945,6 @@ void Text::dispatch(Cursor & cur, FuncRequest & cmd)
                break;
        }
 
-       case LFUN_INSET_SETTINGS: {
-               Inset & inset = cur.inset();
-               if (cmd.getArg(0) == insetName(inset.lyxCode())) {
-                       // This inset dialog has been explicitely requested.
-                       inset.showInsetDialog(bv);
-                       break;
-               }
-               // else, if there is an inset at the cursor, access this
-               Inset * next_inset = cur.nextInset();
-               if (next_inset) {
-                       next_inset->showInsetDialog(bv);
-                       break;
-               }
-               // if not then access the underlying inset.
-               inset.showInsetDialog(bv);
-               break;
-       }
-
        case LFUN_SET_GRAPHICS_GROUP: {
                InsetGraphics * ins = graphics::getCurrentGraphicsInset(cur);
                if (!ins)
@@ -1189,7 +1192,8 @@ void Text::dispatch(Cursor & cur, FuncRequest & cmd)
                pos_type pos = cur.pos();
                BufferParams const & bufparams = bv->buffer().params();
                Layout const & style = par.layout();
-               if (!style.pass_thru
+               InsetLayout const & ilayout = cur.inset().getLayout(bufparams);
+               if (!style.pass_thru && !ilayout.isPassThru()
                    && par.getFontSettings(bufparams, pos).language()->lang() != "hebrew") {
                        // this avoids a double undo
                        // FIXME: should not be needed, ideally
@@ -2297,6 +2301,13 @@ bool Text::getStatus(Cursor & cur, FuncRequest const & cmd,
                enable = cur.inset().insetAllowed(MATH_CODE);
                break;
 
+       case LFUN_DATE_INSERT: {
+               string const format = cmd.argument().empty()
+                       ? lyxrc.date_insert_format : to_utf8(cmd.argument());
+               enable = support::os::is_valid_strftime(format);
+               break;
+       }
+
        case LFUN_WORD_DELETE_FORWARD:
        case LFUN_WORD_DELETE_BACKWARD:
        case LFUN_LINE_DELETE:
@@ -2342,7 +2353,6 @@ bool Text::getStatus(Cursor & cur, FuncRequest const & cmd,
        case LFUN_SERVER_SET_XY:
        case LFUN_SERVER_GET_LAYOUT:
        case LFUN_LAYOUT:
-       case LFUN_DATE_INSERT:
        case LFUN_SELF_INSERT:
        case LFUN_LINE_INSERT:
        case LFUN_MATH_DISPLAY:
@@ -2378,10 +2388,14 @@ bool Text::getStatus(Cursor & cur, FuncRequest const & cmd,
        case LFUN_PARAGRAPH_PARAMS_APPLY:
        case LFUN_PARAGRAPH_PARAMS:
        case LFUN_ESCAPE:
-       case LFUN_BUFFER_END:
        case LFUN_BUFFER_BEGIN:
+       case LFUN_BUFFER_END:
        case LFUN_BUFFER_BEGIN_SELECT:
        case LFUN_BUFFER_END_SELECT:
+       case LFUN_INSET_BEGIN:
+       case LFUN_INSET_END:
+       case LFUN_INSET_BEGIN_SELECT:
+       case LFUN_INSET_END_SELECT:
        case LFUN_UNICODE_INSERT:
                // these are handled in our dispatch()
                enable = true;