]> git.lyx.org Git - lyx.git/blobdiff - src/frontends/qt4/GuiApplication.cpp
Fix the tab ordering of GuiDocument components.
[lyx.git] / src / frontends / qt4 / GuiApplication.cpp
index 51c2c0fcdfc98d86288a4a3a9fb9328951ccaa68..e855119323ccab1ec9e84faa4f212a7e2334d23d 100644 (file)
@@ -367,11 +367,12 @@ QString iconName(FuncRequest const & f, bool unknown)
                }
        }
 
-       FileName fname = libFileSearch("images/" + path, name1, "png");
+       QString imagedir = "images/" + path;
+       FileName fname = imageLibFileSearch(imagedir, name1, "png");
        if (fname.exists())
                return toqstr(fname.absFileName());
 
-       fname = libFileSearch("images/" + path, name2, "png");
+       fname = imageLibFileSearch(imagedir, name2, "png");
        if (fname.exists())
                return toqstr(fname.absFileName());
 
@@ -398,7 +399,8 @@ QString iconName(FuncRequest const & f, bool unknown)
                           << '(' << to_utf8(f.argument()) << ")\"");
 
        if (unknown) {
-               fname = libFileSearch(QString("images/"), "unknown", "png");
+               imagedir = "images/";
+               fname = imageLibFileSearch(imagedir, "unknown", "png");
                if (fname.exists())
                        return toqstr(fname.absFileName());
                return QString(":/images/unknown.png");
@@ -410,7 +412,8 @@ QString iconName(FuncRequest const & f, bool unknown)
 QPixmap getPixmap(QString const & path, QString const & name, QString const & ext)
 {
        QPixmap pixmap;
-       FileName fname = libFileSearch(path, name, ext);
+       QString imagedir = path;
+       FileName fname = imageLibFileSearch(imagedir, name, ext);
        QString path1 = toqstr(fname.absFileName());
        QString path2 = ":/" + path + name + "." + ext;
 
@@ -1100,26 +1103,9 @@ void GuiApplication::dispatch(FuncRequest const & cmd)
 
        BufferView * bv = current_view_->currentBufferView();
        if (bv) {
-               Cursor & cursor = bv->cursor();
-               Buffer & buf = bv->buffer();
-
-               // FIXME
-               // This check out to be done somewhere else. It got moved here
-               // from TextMetrics.cpp, where it definitely didn't need to be.
-               // Actually, this test ought not to be done at all, since the
-               // whole InsetBibitem business is a mess. But that is a different
-               // story.
-               int moveCursor = 0;
-               if (cursor.inTexted()) {
-                       moveCursor = cursor.paragraph().checkBiblio(buf);
-                       if (moveCursor > 0)
-                               cursor.posForward();
-                       else if (moveCursor < 0 && cursor.pos() >= -moveCursor)
-                               cursor.posBackward();
-               }
-               if (moveCursor != 0 || dr.needBufferUpdate()) {
-                       cursor.clearBufferUpdate();
-                       buf.updateBuffer();
+               if (dr.needBufferUpdate()) {
+                       bv->cursor().clearBufferUpdate();
+                       bv->buffer().updateBuffer();
                }
                // BufferView::update() updates the ViewMetricsInfo and
                // also initializes the position cache for all insets in
@@ -1169,10 +1155,13 @@ void GuiApplication::gotoBookmark(unsigned int idx, bool openFile,
                dispatch(FuncRequest(LFUN_BOOKMARK_SAVE, "0"));
 
        // if the current buffer is not that one, switch to it.
-       BufferView * doc_bv = current_view_->documentBufferView();
+       BufferView * doc_bv = current_view_ ?
+               current_view_->documentBufferView() : 0;
        if (!doc_bv || doc_bv->buffer().fileName() != tmp.filename) {
                if (switchToBuffer) {
                        dispatch(FuncRequest(LFUN_BUFFER_SWITCH, file));
+                       if (!current_view_)
+                               return;
                        doc_bv = current_view_->documentBufferView();
                } else
                        return;
@@ -1295,7 +1284,10 @@ void GuiApplication::dispatch(FuncRequest const & cmd, DispatchResult & dr)
                // clear the last opened list, because
                // maybe this will end the session
                theSession().lastOpened().clear();
-               current_view_->closeScheduled();
+               // check for valid current_view_
+               validateCurrentView();
+               if (current_view_)
+                       current_view_->closeScheduled();
                break;
 
        case LFUN_LYX_QUIT:
@@ -1407,19 +1399,19 @@ void GuiApplication::dispatch(FuncRequest const & cmd, DispatchResult & dr)
                        break;
                }
 
+#if 0
+               // FIXME: The graphics cache no longer has a changeDisplay method.
                string const graphicsbg = lcolor.getLyXName(Color_graphicsbg);
                bool const graphicsbg_changed =
                                lyx_name == graphicsbg && x11_name != graphicsbg;
-               if (graphicsbg_changed) {
-                       // FIXME: The graphics cache no longer has a changeDisplay method.
-#if 0
+               if (graphicsbg_changed)
                        graphics::GCache::get().changeDisplay(true);
 #endif
-               }
 
                if (!lcolor.setColor(lyx_name, x11_name)) {
-                       current_view_->message(
-                               bformat(_("Set-color \"%1$s\" failed "
+                       if (current_view_)
+                               current_view_->message(
+                                       bformat(_("Set-color \"%1$s\" failed "
                                        "- color is undefined or "
                                        "may not be redefined"),
                                        from_utf8(lyx_name)));
@@ -1447,7 +1439,6 @@ void GuiApplication::dispatch(FuncRequest const & cmd, DispatchResult & dr)
                }
 
                actOnUpdatedPrefs(lyxrc_orig, lyxrc);
-               setSpellChecker();
                resetGui();
 
                break;
@@ -1480,13 +1471,18 @@ void GuiApplication::dispatch(FuncRequest const & cmd, DispatchResult & dr)
 
        // --- lyxserver commands ----------------------------
        case LFUN_SERVER_GET_FILENAME: {
-               LASSERT(current_view_ && current_view_->documentBufferView(), return);
-               docstring const fname = from_utf8(
+               if (current_view_ && current_view_->documentBufferView()) {
+                       docstring const fname = from_utf8(
                                current_view_->documentBufferView()->buffer().absFileName());
-               dr.setMessage(fname);
-               LYXERR(Debug::INFO, "FNAME[" << fname << ']');
+                       dr.setMessage(fname);
+                       LYXERR(Debug::INFO, "FNAME[" << fname << ']');
+               } else {
+                       dr.setMessage(docstring());
+                       LYXERR(Debug::INFO, "No current file for LFUN_SERVER_GET_FILENAME");
+               }
                break;
        }
+
        case LFUN_SERVER_NOTIFY: {
                docstring const dispatch_buffer = d->keyseq.print(KeySequence::Portable);
                dr.setMessage(dispatch_buffer);
@@ -1675,7 +1671,6 @@ void GuiApplication::processKeySym(KeySymbol const & keysym, KeyModifier state)
        }
 
        if (keysym.isModifier()) {
-               LYXERR(Debug::KEY, "isModifier true");
                if (current_view_)
                        current_view_->restartCursor();
                return;
@@ -2041,6 +2036,8 @@ void GuiApplication::restoreGuiSession()
        LastOpenedSection::LastOpened const & lastopened =
                session.lastOpened().getfiles();
 
+       validateCurrentView();
+
        FileName active_file;
        // do not add to the lastfile list since these files are restored from
        // last session, and should be already there (regular files), or should
@@ -2062,7 +2059,7 @@ void GuiApplication::restoreGuiSession()
 
        // Restore last active buffer
        Buffer * buffer = theBufferList().getBuffer(active_file);
-       if (buffer)
+       if (buffer && current_view_)
                current_view_->setBuffer(buffer);
 
        // clear this list to save a few bytes of RAM
@@ -2150,7 +2147,7 @@ bool GuiApplication::notify(QObject * receiver, QEvent * event)
                        this->exit(1);
 
                case BufferException: {
-                       if (!current_view_->documentBufferView())
+                       if (!current_view_ || !current_view_->documentBufferView())
                                return false;
                        Buffer * buf = &current_view_->documentBufferView()->buffer();
                        docstring details = e.details_ + '\n';