]> git.lyx.org Git - lyx.git/blobdiff - src/frontends/qt4/GuiView.cpp
Fix handling of the add branch textfield in GuiBranches
[lyx.git] / src / frontends / qt4 / GuiView.cpp
index b84c6f310e760e7c6531528a0744d91372d95acd..d13fee55cd3864058b1f2a00ced17bac11a7ad15 100644 (file)
@@ -1759,7 +1759,9 @@ bool GuiView::getStatus(FuncRequest const & cmd, FuncStatus & flag)
                else if (name == "latexlog")
                        enable = FileName(doc_buffer->logName()).isReadableFile();
                else if (name == "spellchecker")
-                       enable = theSpellChecker() && !doc_buffer->isReadonly();
+                       enable = theSpellChecker() 
+                               && !doc_buffer->isReadonly()
+                               && !doc_buffer->text().empty();
                else if (name == "vclog")
                        enable = doc_buffer->lyxvc().inUse();
                break;
@@ -2282,8 +2284,9 @@ bool GuiView::renameBuffer(Buffer & b, docstring const & newname)
        // fname is now the new Buffer location.
 
        // if there is already a Buffer open with this name, we do not want
-       // to have another one.
-       if (theBufferList().exists(fname)) {
+       // to have another one. (the second test makes sure we're not just
+       // trying to overwrite ourselves, which is fine.)
+       if (theBufferList().exists(fname) && fname != oldname) {
                docstring const text = 
                        bformat(_("The file\n%1$s\nis already open in your current session.\n"
                            "Please close it before attempting to overwrite it.\n"
@@ -2313,7 +2316,10 @@ bool GuiView::renameBuffer(Buffer & b, docstring const & newname)
                }
        }
 
-       return saveBuffer(b, fname);
+       bool const saved = saveBuffer(b, fname);
+       if (saved)
+               b.reload();
+       return saved;
 }
 
 
@@ -3106,10 +3112,16 @@ bool GuiView::GuiViewPrivate::asyncBufferProcessing(
                gv_->message(msg);
        }
        GuiViewPrivate::busyBuffers.insert(used_buffer);
+       Buffer * cloned_buffer = used_buffer->cloneFromMaster();
+       if (!cloned_buffer) {
+               Alert::error(_("Export Error"),
+                            _("Error cloning the Buffer."));
+               return false;
+       }
        QFuture<Buffer::ExportStatus> f = QtConcurrent::run(
                                asyncFunc,
                                used_buffer,
-                               used_buffer->cloneFromMaster(),
+                               cloned_buffer,
                                format);
        setPreviewFuture(f);
        last_export_format = used_buffer->params().bufferFormat();
@@ -3647,9 +3659,14 @@ void GuiView::dispatch(FuncRequest const & cmd, DispatchResult & dr)
                                command = lyxrc.forward_search_pdf;
                        }
 
-                       int row = doc_buffer->texrow().getRowFromIdPos(bv->cursor().paragraph().id(), bv->cursor().pos());
+                       DocIterator tmpcur = bv->cursor();
+                       // Leave math first
+                       while (tmpcur.inMathed())
+                               tmpcur.pop_back();
+                       int row = tmpcur.inMathed() ? 0 : doc_buffer->texrow().getRowFromIdPos(
+                                                               tmpcur.paragraph().id(), tmpcur.pos());
                        LYXERR(Debug::ACTION, "Forward search: row:" << row
-                               << " id:" << bv->cursor().paragraph().id());
+                               << " id:" << tmpcur.paragraph().id());
                        if (!row || command.empty()) {
                                dr.setMessage(_("Couldn't proceed."));
                                break;