]> git.lyx.org Git - lyx.git/blobdiff - src/frontends/qt4/GuiApplication.cpp
If we are in a closeEvent, we don't want to close all buffers, because these may...
[lyx.git] / src / frontends / qt4 / GuiApplication.cpp
index d236269ae2bb029d1169affe764142954fae8d0a..01672acfe60997153bc36583ece93c30d7c3dbcb 100644 (file)
@@ -1214,9 +1214,18 @@ void GuiApplication::restoreGuiSession()
        // Note that we open them in reverse order. This is because we close
        // buffers also in reverse order (aesthetically motivated).
        for (size_t i = lastopened.size(); i > 0; --i) {
-               current_view_->loadDocument(lastopened[i - 1].file_name, false);
+               FileName const & file_name = lastopened[i - 1].file_name;
+               if (d->views_.empty() || (!lyxrc.open_buffers_in_tabs
+                         && current_view_->buffer() != 0)) {
+                       boost::crc_32_type crc;
+                       string const & fname = file_name.absFilename();
+                       crc = for_each(fname.begin(), fname.end(), crc);
+                       createView(crc.checksum());
+               }
+               current_view_->loadDocument(file_name, false);
+
                if (lastopened[i - 1].active)
-                       active_file = lastopened[i - 1].file_name;
+                       active_file = file_name;
        }
 
        // Restore last active buffer
@@ -1310,7 +1319,7 @@ bool GuiApplication::notify(QObject * receiver, QEvent * event)
                case BufferException: {
                        Buffer * buf = current_view_->buffer();
                        docstring details = e.details_ + '\n';
-                       details += theBufferList().emergencyWrite(buf);
+                       details += buf->emergencyWrite();
                        theBufferList().release(buf);
                        details += "\n" + _("The current document was closed.");
                        Alert::error(e.title_, details);
@@ -1463,21 +1472,6 @@ bool GuiApplication::searchMenu(FuncRequest const & func,
 
 bool GuiApplication::readUIFile(QString const & name, bool include)
 {
-       enum {
-               ui_menuset = 1,
-               ui_toolbars,
-               ui_toolbarset,
-               ui_include,
-               ui_last
-       };
-
-       LexerKeyword uitags[] = {
-               { "include", ui_include },
-               { "menuset", ui_menuset },
-               { "toolbars", ui_toolbars },
-               { "toolbarset", ui_toolbarset }
-       };
-
        LYXERR(Debug::INIT, "About to read " << name << "...");
 
        FileName ui_path;
@@ -1532,6 +1526,21 @@ bool GuiApplication::readUIFile(QString const & name, bool include)
 
        LYXERR(Debug::INIT, "Found " << name << " in " << ui_path);
 
+       enum {
+               ui_menuset = 1,
+               ui_toolbars,
+               ui_toolbarset,
+               ui_include,
+               ui_last
+       };
+
+       LexerKeyword uitags[] = {
+               { "include", ui_include },
+               { "menuset", ui_menuset },
+               { "toolbars", ui_toolbars },
+               { "toolbarset", ui_toolbarset }
+       };
+
        Lexer lex(uitags);
        lex.setFile(ui_path);
        if (!lex.isOK()) {