]> git.lyx.org Git - lyx.git/blobdiff - src/lyxfunc.C
Tweak gtk print dialog layout
[lyx.git] / src / lyxfunc.C
index f4fac34f66115f3050800e2d55a387f41d6c6c73..9995dcca01e27658e20dca7cde627b8eb9df1b8b 100644 (file)
@@ -503,6 +503,8 @@ FuncStatus LyXFunc::getStatus(FuncRequest const & cmd) const
        case LFUN_SAVE_AS_DEFAULT:
        case LFUN_BUFFERPARAMS_APPLY:
        case LFUN_LYXRC_APPLY:
+       case LFUN_NEXTBUFFER:
+       case LFUN_PREVIOUSBUFFER:
                // these are handled in our dispatch()
                break;
 
@@ -586,7 +588,7 @@ void loadTextclass(string const & name)
 } //namespace anon
 
 
-void LyXFunc::dispatch(FuncRequest const & cmd, bool verbose)
+void LyXFunc::dispatch(FuncRequest const & cmd)
 {
        string const argument = cmd.argument;
        kb_action const action = cmd.action;
@@ -958,6 +960,14 @@ void LyXFunc::dispatch(FuncRequest const & cmd, bool verbose)
                        view()->setBuffer(bufferlist.getBuffer(argument));
                        break;
 
+               case LFUN_NEXTBUFFER:
+                       view()->setBuffer(bufferlist.next(view()->buffer()));
+                       break;
+
+               case LFUN_PREVIOUSBUFFER:
+                       view()->setBuffer(bufferlist.previous(view()->buffer()));
+                       break;
+
                case LFUN_FILE_NEW:
                        NewFile(view(), argument);
                        break;
@@ -1334,7 +1344,7 @@ void LyXFunc::dispatch(FuncRequest const & cmd, bool verbose)
                                       << (unknown_tokens == 1 ? "" : "s")
                                       << endl;
                        }
-                       
+
                        if (defaults.writeFile(defaults.fileName()))
                                setMessage(_("Document defaults saved in ")
                                           + MakeDisplayPath(fname));
@@ -1433,7 +1443,16 @@ void LyXFunc::dispatch(FuncRequest const & cmd, bool verbose)
                }
 
                if (view()->available()) {
-                       if (view()->fitCursor() || update)
+                       // Redraw screen unless explicitly told otherwise.
+                       // This also initializes the position cache for all insets
+                       // in (at least partially) visible top-level paragraphs.
+                       if (update)
+                               view()->update();
+
+                       // fitCursor() needs valid inset position. The previous call to
+                       // update() makes sure we have such even for freshly created
+                       // insets.
+                       if (view()->fitCursor())
                                view()->update();
                        // if we executed a mutating lfun, mark the buffer as dirty
                        if (getStatus(cmd).enabled()
@@ -1444,18 +1463,20 @@ void LyXFunc::dispatch(FuncRequest const & cmd, bool verbose)
 
                if (view()->cursor().inTexted()) {
                        view()->owner()->updateLayoutChoice();
-                       sendDispatchMessage(getMessage(), cmd, verbose);
+                       sendDispatchMessage(getMessage(), cmd);
                }
        }
 }
 
 
-void LyXFunc::sendDispatchMessage(string const & msg,
-                                 FuncRequest const & cmd, bool verbose)
+void LyXFunc::sendDispatchMessage(string const & msg, FuncRequest const & cmd)
 {
        owner->updateMenubar();
        owner->updateToolbars();
 
+       const bool verbose = (cmd.origin == FuncRequest::UI
+                             || cmd.origin == FuncRequest::COMMANDBUFFER);
+
        if (cmd.action == LFUN_SELFINSERT || !verbose) {
                lyxerr[Debug::ACTION] << "dispatch msg is " << msg << endl;
                if (!msg.empty())