]> git.lyx.org Git - features.git/blobdiff - src/LyXFunc.cpp
* Lazy MathData to avoid unneeded interpretation of macro definitions
[features.git] / src / LyXFunc.cpp
index c8f5457cee6a0a9fa72c764eb052653fbdb24f35..61bc51dbc8d15f7f61895f5741500ceacee3bf25 100644 (file)
 
 #include <sstream>
 
-using std::endl;
-using std::make_pair;
-using std::pair;
-using std::string;
-using std::istringstream;
-using std::ostringstream;
-using std::find;
-using std::vector;
+using namespace std;
+using namespace lyx::support;
 
 namespace lyx {
 
 using frontend::LyXView;
 
-using support::absolutePath;
-using support::addName;
-using support::addPath;
-using support::bformat;
-using support::changeExtension;
-using support::contains;
-using support::FileFilterList;
-using support::FileName;
-using support::fileSearch;
-using support::i18nLibFileSearch;
-using support::makeDisplayPath;
-using support::makeAbsPath;
-using support::package;
-using support::quoteName;
-using support::rtrim;
-using support::split;
-using support::subst;
-using support::Systemcall;
-using support::token;
-using support::trim;
-using support::prefixIs;
-
-
 namespace Alert = frontend::Alert;
 
 extern bool quitting;
@@ -214,7 +185,7 @@ void reconfigure(LyXView & lv, string const & option)
        lv.message(_("Running configure..."));
 
        // Run configure in user lyx directory
-       support::PathChanger p(package().user_support());
+       PathChanger p(package().user_support());
        string configure_command = package().configure_command();
        configure_command += option;
        Systemcall one;
@@ -222,7 +193,7 @@ void reconfigure(LyXView & lv, string const & option)
        p.pop();
        // emit message signal.
        lv.message(_("Reloading configuration..."));
-       lyxrc.read(support::libFileSearch(string(), "lyxrc.defaults"));
+       lyxrc.read(libFileSearch(string(), "lyxrc.defaults"));
        // Re-read packages.lst
        LaTeXFeatures::getAvailable();
 
@@ -651,7 +622,7 @@ FuncStatus LyXFunc::getStatus(FuncRequest const & cmd) const
 
        case LFUN_CALL: {
                FuncRequest func;
-               std::string name = to_utf8(cmd.argument());
+               string name = to_utf8(cmd.argument());
                if (LyX::ref().topLevelCmdDef().lock(name, func)) {
                        func.origin = cmd.origin;
                        flag = getStatus(func);
@@ -794,13 +765,13 @@ void showPrintError(string const & name)
 
 void loadTextClass(string const & name)
 {
-       std::pair<bool, textclass_type> const tc_pair =
+       pair<bool, textclass_type> const tc_pair =
                textclasslist.numberOfClass(name);
 
        if (!tc_pair.first) {
                lyxerr << "Document class \"" << name
                       << "\" does not exist."
-                      << std::endl;
+                      << endl;
                return;
        }
 
@@ -974,7 +945,7 @@ void LyXFunc::dispatch(FuncRequest const & cmd)
                        if (!format) {
                                lyxerr << "Format \"" << format_name
                                       << "\" not recognized!"
-                                      << std::endl;
+                                      << endl;
                                break;
                        }
 
@@ -1040,7 +1011,7 @@ void LyXFunc::dispatch(FuncRequest const & cmd)
                        string const path = buffer->temppath();
                        // Prevent the compiler from optimizing away p
                        FileName pp(path);
-                       support::PathChanger p(pp);
+                       PathChanger p(pp);
 
                        // there are three cases here:
                        // 1. we print to a file
@@ -1360,7 +1331,7 @@ void LyXFunc::dispatch(FuncRequest const & cmd)
                        }
                        default:
                                lyxerr << "Inset type '" << name << 
-                                       "' not recognized in LFUN_DIALOG_SHOW_NEW_INSET" << std:: endl;
+                                       "' not recognized in LFUN_DIALOG_SHOW_NEW_INSET" <<  endl;
                                insetCodeOK = false;
                                break;
                        } // end switch(code)
@@ -1666,6 +1637,10 @@ void LyXFunc::dispatch(FuncRequest const & cmd)
                        }
                        
                        updateFlags = Update::Force | Update::FitCursor;
+                       // We are here most certainaly because of a change in the document
+                       // It is then better to make sure that all dialogs are in sync
+                       // with current document settings. LyXView::restartCursor() achieve this.
+                       lyx_view_->restartCursor();
                        break;
                }
                
@@ -1697,7 +1672,7 @@ void LyXFunc::dispatch(FuncRequest const & cmd)
 
                        loadTextClass(argument);
 
-                       std::pair<bool, textclass_type> const tc_pair =
+                       pair<bool, textclass_type> const tc_pair =
                                textclasslist.numberOfClass(argument);
 
                        if (!tc_pair.first)
@@ -1769,7 +1744,7 @@ void LyXFunc::dispatch(FuncRequest const & cmd)
                        LyX::ref().session().bookmarks().clear();
                        break;
 
-               default: {
+               default:
                        BOOST_ASSERT(theApp());
                        // Let the frontend dispatch its own actions.
                        if (theApp()->dispatch(cmd))
@@ -1784,18 +1759,24 @@ void LyXFunc::dispatch(FuncRequest const & cmd)
                                break;
                        }
 
-                       // FIXME: Probably a good idea to inverse the Cursor and BufferView
-                       // dispatching.
+                       BOOST_ASSERT(lyx_view_->view());
+                       // Let the current BufferView dispatch its own actions.
+                       if (view()->dispatch(cmd)) {
+                               // The BufferView took care of its own updates if needed.
+                               updateFlags = Update::None;
+                               break;
+                       }
 
                        // Let the current Cursor dispatch its own actions.
-                       BOOST_ASSERT(lyx_view_->view());
+                       view()->cursor().getPos(cursorPosBeforeDispatchX_,
+                                               cursorPosBeforeDispatchY_);
                        view()->cursor().dispatch(cmd);
                        updateFlags = view()->cursor().result().update();
-                       if (!view()->cursor().result().dispatched())
-                               // Let the current BufferView dispatch its own actions.
-                               updateFlags = view()->dispatch(cmd);
-                       break;
-               }
+                       if (!view()->cursor().result().dispatched()) {
+                               // No update needed in this case (e.g. when reaching
+                               // top of document.
+                               updateFlags = Update::None;
+                       }
                }
 
                if (lyx_view_ && lyx_view_->buffer()) {
@@ -1809,7 +1790,7 @@ void LyXFunc::dispatch(FuncRequest const & cmd)
                        if (flag.enabled()
                            && !lyxaction.funcHasFlag(action, LyXAction::NoBuffer)
                            && !lyxaction.funcHasFlag(action, LyXAction::ReadOnly))
-                               lyx_view_->buffer()->markDirty();
+                               lyx_view_->buffer()->markDirty();                       
 
                        //Do we have a selection?
                        theSelection().haveSelection(view()->cursor().selection());
@@ -2195,7 +2176,7 @@ void actOnUpdatedPrefs(LyXRC const & lyxrc_orig, LyXRC const & lyxrc_new)
                if (lyxrc_orig.document_path != lyxrc_new.document_path) {
                        FileName path(lyxrc_new.document_path);
                        if (path.exists() && path.isDirectory())
-                               support::package().document_dir() = FileName(lyxrc.document_path);
+                               package().document_dir() = FileName(lyxrc.document_path);
                }
        case LyXRC::RC_ESC_CHARS:
        case LyXRC::RC_EXAMPLEPATH:
@@ -2220,7 +2201,7 @@ void actOnUpdatedPrefs(LyXRC const & lyxrc_orig, LyXRC const & lyxrc_new)
        case LyXRC::RC_NUMLASTFILES:
        case LyXRC::RC_PATH_PREFIX:
                if (lyxrc_orig.path_prefix != lyxrc_new.path_prefix) {
-                       support::prependEnvPath("PATH", lyxrc.path_prefix);
+                       prependEnvPath("PATH", lyxrc.path_prefix);
                }
        case LyXRC::RC_PERS_DICT:
        case LyXRC::RC_PREVIEW:
@@ -2265,7 +2246,7 @@ void actOnUpdatedPrefs(LyXRC const & lyxrc_orig, LyXRC const & lyxrc_new)
        case LyXRC::RC_TEX_ALLOWS_SPACES:
        case LyXRC::RC_TEX_EXPECTS_WINDOWS_PATHS:
                if (lyxrc_orig.windows_style_tex_paths != lyxrc_new.windows_style_tex_paths) {
-                       support::os::windows_style_tex_paths(lyxrc_new.windows_style_tex_paths);
+                       os::windows_style_tex_paths(lyxrc_new.windows_style_tex_paths);
                }
        case LyXRC::RC_UIFILE:
        case LyXRC::RC_USER_EMAIL: