rgh...@lyx.org wrote:
Author: rgheck
Date: Wed Mar 25 15:34:42 2009
New Revision: 28900
URL: http://lyx.lyx.org/trac/changeset/28900
Log:
Make LFUN_BUFFER_NEXT and _PREVIOUS skip documents that are open
but not shown.
OK for branch?
Also, Jurgen, can you have a look at r28896 and see what you think? (svn
diff -c 28896 will get you a diff, if you don't have it otherwise.)
rh
Modified:
lyx-devel/trunk/src/frontends/qt4/GuiView.cpp
lyx-devel/trunk/src/frontends/qt4/GuiView.h
Modified: lyx-devel/trunk/src/frontends/qt4/GuiView.cpp
==============================================================================
--- lyx-devel/trunk/src/frontends/qt4/GuiView.cpp Wed Mar 25 13:49:52
2009 (r28899)
+++ lyx-devel/trunk/src/frontends/qt4/GuiView.cpp Wed Mar 25 15:34:42
2009 (r28900)
@@ -1928,6 +1928,28 @@
}
+void GuiView::gotoNextOrPreviousBuffer(NextOrPrevious np)
+{
+ Buffer * const curbuf = buffer();
+ Buffer * nextbuf = curbuf;
+ while (true) {
+ if (np == NEXTBUFFER)
+ nextbuf = theBufferList().next(nextbuf);
+ else
+ nextbuf = theBufferList().previous(nextbuf);
+ if (nextbuf == curbuf)
+ break;
+ if (nextbuf == 0) {
+ nextbuf = curbuf;
+ break;
+ }
+ if (workArea(*nextbuf))
+ break;
+ }
+ setBuffer(nextbuf);
+}
+
+
bool GuiView::dispatch(FuncRequest const & cmd)
{
BufferView * bv = view();
@@ -1946,11 +1968,11 @@
break;
case LFUN_BUFFER_NEXT:
- setBuffer(theBufferList().next(buffer()));
+ gotoNextOrPreviousBuffer(NEXTBUFFER);
break;
case LFUN_BUFFER_PREVIOUS:
- setBuffer(theBufferList().previous(buffer()));
+ gotoNextOrPreviousBuffer(PREVBUFFER);
break;
case LFUN_COMMAND_EXECUTE: {
Modified: lyx-devel/trunk/src/frontends/qt4/GuiView.h
==============================================================================
--- lyx-devel/trunk/src/frontends/qt4/GuiView.h Wed Mar 25 13:49:52 2009
(r28899)
+++ lyx-devel/trunk/src/frontends/qt4/GuiView.h Wed Mar 25 15:34:42 2009
(r28900)
@@ -295,6 +295,12 @@
bool saveBuffer(Buffer & b);
///
bool closeBuffer(Buffer & buf, bool tolastopened = false);
+ enum NextOrPrevious {
+ NEXTBUFFER,
+ PREVBUFFER
+ };
+ ///
+ void gotoNextOrPreviousBuffer(NextOrPrevious np);
///
Inset * getOpenInset(std::string const & name) const;