From: Vincent van Ravesteijn Date: Mon, 7 Jun 2010 21:57:37 +0000 (+0000) Subject: Fix part of bug #5942: X-Git-Tag: 2.0.0~3161 X-Git-Url: https://git.lyx.org/gitweb/?a=commitdiff_plain;h=098f722a1f2097a58d295b157b54204d1b126890;p=features.git Fix part of bug #5942: - buffer-switch does open tabs even when open in tabs is disabled; - buffer-switch open the document in a new tab even if it is already opened in another view. git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@34618 a592a061-630c-0410-9148-cb99ea01b6c8 --- diff --git a/src/frontends/qt4/GuiView.cpp b/src/frontends/qt4/GuiView.cpp index c6139666e2..7823cc9e8c 100644 --- a/src/frontends/qt4/GuiView.cpp +++ b/src/frontends/qt4/GuiView.cpp @@ -2938,18 +2938,40 @@ void GuiView::dispatch(FuncRequest const & cmd, DispatchResult & dr) #endif break; } - case LFUN_BUFFER_SWITCH: - if (FileName::isAbsolute(to_utf8(cmd.argument()))) { - Buffer * buffer = - theBufferList().getBuffer(FileName(to_utf8(cmd.argument()))); - if (buffer) + case LFUN_BUFFER_SWITCH: { + if (!FileName::isAbsolute(to_utf8(cmd.argument()))) + break; + Buffer * buffer = + theBufferList().getBuffer(FileName(to_utf8(cmd.argument()))); + if (!buffer) { + dr.setError(true); + dr.setMessage(_("Document not loaded")); + break; + } + if (workArea(*buffer)) { + setBuffer(buffer); + break; + } + QList const ids = guiApp->viewIds(); + int i = 0; + for (; i != ids.size(); ++i) { + GuiView & gv = guiApp->view(ids[i]); + if (gv.workArea(*buffer)) { + gv.activateWindow(); + gv.setBuffer(buffer); + break; + } + } + if (i == ids.size()) { + if (!lyxrc.open_buffers_in_tabs && documentBufferView() != 0) { + lyx::dispatch(FuncRequest(LFUN_WINDOW_NEW)); + lyx::dispatch(cmd); + } else { setBuffer(buffer); - else { - dr.setError(true); - dr.setMessage(_("Document not loaded")); } } break; + } case LFUN_BUFFER_NEXT: gotoNextOrPreviousBuffer(NEXTBUFFER);