]> git.lyx.org Git - lyx.git/blobdiff - src/bufferlist.C
John's Layout Tabular UI improvements and Martins fixes to clearing the
[lyx.git] / src / bufferlist.C
index 3d39fd6de8d0e2e79c4a19ae8c7cae577b04dc0a..2d5695f64c531eb5dd7789e29758bea72bad4393 100644 (file)
  * ====================================================== 
  */
 
+#include <config.h>
+
 #ifdef __GNUG__
 #pragma implementation
 #endif
 
-#include <config.h>
-
-#include <assert.h>
-#include <algorithm>
-#include <functional>
-
-#include "frontends/Alert.h"
 #include "bufferlist.h"
 #include "lyx_main.h"
-#include "support/FileInfo.h"
-#include "support/filetools.h"
-#include "support/lyxmanip.h"
-#include "support/lyxfunctional.h"
-#include "support/LAssert.h"
 #include "lyx_gui_misc.h"
 #include "lastfiles.h"
 #include "debug.h"
 #include "vc-backend.h"
 #include "TextCache.h"
 
+#include "frontends/Alert.h"
+
+#include "support/FileInfo.h"
+#include "support/filetools.h"
+#include "support/lyxmanip.h"
+#include "support/lyxfunctional.h"
+#include "support/LAssert.h"
+
+#include <cassert>
+#include <algorithm>
+#include <functional>
+
+
 using std::vector;
 using std::find;
 using std::endl;
@@ -98,7 +101,8 @@ bool BufferList::empty() const
 }
 
 
-bool BufferList::qwriteOne(Buffer * buf, string const & fname, string & unsaved_list)
+bool BufferList::qwriteOne(Buffer * buf, string const & fname,
+                          string & unsaved_list)
 {
        bool reask = true;
        while (reask) {
@@ -127,32 +131,33 @@ bool BufferList::qwriteOne(Buffer * buf, string const & fname, string & unsaved_
                        return false;
                }
        }
-       return false;
+       return true;
 }
 
  
 bool BufferList::qwriteAll()
 {
-        bool are_unsaved = false;
-        string unsaved;
-       for (BufferStorage::iterator it = bstore.begin();
-               it != bstore.end(); ++it) {
+       string unsaved;
+       BufferStorage::iterator it = bstore.begin();
+       BufferStorage::iterator end = bstore.end();
+       for (; it != end; ++it) {
                if (!(*it)->isLyxClean()) {
                        string fname;
                        if ((*it)->isUnnamed())
                                fname = OnlyFilename((*it)->fileName());
                        else
                                fname = MakeDisplayPath((*it)->fileName(), 50);
-                       are_unsaved = qwriteOne(*it, fname, unsaved);
+                       if (!qwriteOne(*it, fname, unsaved)) // cancel the request!
+                               return false;
                }
        }
  
-        if (are_unsaved && lyxrc.exit_confirmation) {
+       if (!unsaved.empty() && lyxrc.exit_confirmation) {
                return Alert::askQuestion(_("Some documents were not saved:"),
-                       unsaved, _("Exit anyway?"));
-        }
+                                         unsaved, _("Exit anyway?"));
+       }
 
-        return true;
+       return true;
 }
 
 
@@ -178,7 +183,9 @@ bool BufferList::close(Buffer * buf)
        // Trace back why we need to use buf->getUser here.
        // Perhaps slight rewrite is in order? (Lgb)
        
-        if (buf->getUser()) buf->getUser()->insetUnlock();
+        if (buf->getUser())
+               buf->getUser()->insetUnlock();
+       
        if (buf->paragraph && !buf->isLyxClean() && !quitting) {
                if (buf->getUser())
                        buf->getUser()->owner()->prohibitInput();
@@ -252,9 +259,9 @@ int BufferList::unlockInset(UpdatableInset * inset)
 {
        lyx::Assert(inset);
        
-       //if (!inset) return 1;
-       for (BufferStorage::iterator it = bstore.begin();
-            it != bstore.end(); ++it) {
+       BufferStorage::iterator it = bstore.begin();
+       BufferStorage::iterator end = bstore.end();
+       for (; it != end; ++it) {
                if ((*it)->getUser()
                    && (*it)->getUser()->theLockingInset() == inset) {
                        (*it)->getUser()->insetUnlock();
@@ -267,8 +274,9 @@ int BufferList::unlockInset(UpdatableInset * inset)
 
 void BufferList::updateIncludedTeXfiles(string const & mastertmpdir)
 {
-       for (BufferStorage::iterator it = bstore.begin();
-            it != bstore.end(); ++it) {
+       BufferStorage::iterator it = bstore.begin();
+       BufferStorage::iterator end = bstore.end();
+       for (; it != end; ++it) {
                if (!(*it)->isDepClean(mastertmpdir)) {
                        string writefile = mastertmpdir;
                        writefile += '/';
@@ -296,7 +304,8 @@ void BufferList::emergencyWrite(Buffer * buf)
 
        
        // No need to save if the buffer has not changed.
-       if (buf->isLyxClean()) return;
+       if (buf->isLyxClean())
+               return;
        
        lyxerr << fmt(_("lyx: Attempting to save document %s as..."),
                      buf->isUnnamed() ? OnlyFilename(buf->fileName()).c_str()
@@ -350,7 +359,7 @@ Buffer * BufferList::readFile(string const & s, bool ronly)
 {
        Buffer * b = bstore.newBuffer(s, ronly);
 
-       string ts = s;
+       string ts(s);
        string e = OnlyPath(s);
        string a = e;
        // File information about normal file