In the meantime that we decide whether to introduce menu choices for

both dvi and pdf, let's allow switching forward search from one format
to the other through a timestamp check, such that the most recent
generated format will be used.


git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@34200 a592a061-630c-0410-9148-cb99ea01b6c8
This commit is contained in:
Enrico Forestieri 2010-04-18 10:54:43 +00:00
parent 50b4ac16b9
commit 8dffd93995

View File

@ -3223,20 +3223,27 @@ void GuiView::dispatch(FuncRequest const & cmd, DispatchResult & dr)
break; break;
case LFUN_FORWARD_SEARCH: { case LFUN_FORWARD_SEARCH: {
string command = lyxrc.forward_search_dvi;
FileName const path(doc_buffer->temppath()); FileName const path(doc_buffer->temppath());
string const texname = doc_buffer->latexName(); string const texname = doc_buffer->latexName();
string outname = support::changeExtension(texname, "dvi"); FileName const dviname(addName(path.absFilename(),
if (!FileName(addName(path.absFilename(), outname)).exists()) { support::changeExtension(texname, "dvi")));
outname = support::changeExtension(texname, "pdf"); FileName const pdfname(addName(path.absFilename(),
support::changeExtension(texname, "pdf")));
if (!dviname.exists() && !pdfname.exists()) {
dr.setMessage(_("Please, preview the document first."));
break;
}
string outname = dviname.onlyFileName();
string command = lyxrc.forward_search_dvi;
if (!dviname.exists() ||
pdfname.lastModified() > dviname.lastModified()) {
outname = pdfname.onlyFileName();
command = lyxrc.forward_search_pdf; command = lyxrc.forward_search_pdf;
if (!FileName(addName(path.absFilename(), outname)).exists())
break;
} }
int row = doc_buffer->texrow().getRowFromIdPos(bv->cursor().paragraph().id(), bv->cursor().pos()); int row = doc_buffer->texrow().getRowFromIdPos(bv->cursor().paragraph().id(), bv->cursor().pos());
LYXERR(Debug::ACTION, "Forward search: row:" << row LYXERR(Debug::ACTION, "Forward search: row:" << row
<< " id:" << bv->cursor().paragraph().id() << "\n"); << " id:" << bv->cursor().paragraph().id());
if (!row || command.empty()) { if (!row || command.empty()) {
dr.setMessage(_("Couldn't proceed.")); dr.setMessage(_("Couldn't proceed."));
break; break;