]> git.lyx.org Git - features.git/commitdiff
File->Close All now really closes all buffers. That is, all visible buffers in all...
authorVincent van Ravesteijn <vfr@lyx.org>
Wed, 19 Aug 2009 21:12:53 +0000 (21:12 +0000)
committerVincent van Ravesteijn <vfr@lyx.org>
Wed, 19 Aug 2009 21:12:53 +0000 (21:12 +0000)
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@31151 a592a061-630c-0410-9148-cb99ea01b6c8

src/frontends/qt4/GuiView.cpp

index b482b08a0595298c335ad6d8833bf73b3d3c0020..c92103062a2825b8e5ac76032da303c7e8ca9d83 100644 (file)
@@ -1188,21 +1188,9 @@ bool GuiView::getStatus(FuncRequest const & cmd, FuncStatus & flag)
                enable = buf;
                break;
 
-       case LFUN_BUFFER_CLOSE_ALL: {
-               enable = false;
-               BufferList::iterator it = theBufferList().begin();
-               BufferList::iterator end = theBufferList().end();
-               int visible_buffers = 0;
-               for (; it != end; ++it) {
-                       if (workArea(**it))
-                               ++visible_buffers;
-                       if (visible_buffers > 1) {
-                               enable = true;
-                               break;
-                       }
-               }
+       case LFUN_BUFFER_CLOSE_ALL:
+               enable = theBufferList().last() != theBufferList().first();
                break;
-       }
 
        case LFUN_SPLIT_VIEW:
                if (cmd.getArg(0) == "vertical")
@@ -1892,8 +1880,14 @@ void GuiView::writeSession() const {
 
 bool GuiView::closeBufferAll()
 {
-       // First close all workareas. This will make
-       // sure that dirty buffers are saved.
+       // Close the workareas in all other views
+       QList<int> const ids = guiApp->viewIds();
+       for (int i = 0; i != ids.size(); ++i) {
+               if (id_ != ids[i] && !guiApp->view(ids[i]).closeWorkAreaAll())
+                       return false;
+       }
+
+       // Close our own workareas
        if (!closeWorkAreaAll())
                return false;