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;
// 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"
}
}
- return saveBuffer(b, fname);
+ bool const saved = saveBuffer(b, fname);
+ if (saved)
+ b.reload();
+ return saved;
}
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();
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;