setAttribute(Qt::WA_DeleteOnClose, true);
#if (!defined(Q_WS_WIN) && !defined(Q_WS_MACX))
+ // QIcon::fromTheme was introduced in Qt 4.6
+#if (QT_VERSION >= 0x040600)
// assign an icon to main form. We do not do it under Qt/Win or Qt/Mac,
- // since the icon is provided in the application bundle.
+ // since the icon is provided in the application bundle. We use a themed
+ // version when available and use the bundled one as fallback.
+ setWindowIcon(QIcon::fromTheme("lyx", getPixmap("images/", "lyx", "png")));
+#else
setWindowIcon(getPixmap("images/", "lyx", "png"));
#endif
+#endif
+
#if (QT_VERSION >= 0x040300)
// use tabbed dock area for multiple docks
// (such as "source" and "messages")
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. (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"
+ "Do you want to choose a new filename?"),
+ from_utf8(fname.absFileName()));
+ int const ret = Alert::prompt(_("Chosen File Already Open"),
+ text, 0, 1, _("&Rename"), _("&Cancel"));
+ switch (ret) {
+ case 0: return renameBuffer(b, docstring());
+ case 1: return false;
+ }
+ //return false;
+ }
+
if (FileName(fname).exists()) {
docstring const file = makeDisplayPath(fname.absFileName(), 30);
- docstring text = bformat(_("The document %1$s already "
+ docstring const text = bformat(_("The document %1$s already "
"exists.\n\nDo you want to "
"overwrite that document?"),
file);
}
}
- 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;