]> git.lyx.org Git - lyx.git/blobdiff - src/LyXFunc.cpp
Fix bug 3171: switching document jumps always back to last saved bookmark
[lyx.git] / src / LyXFunc.cpp
index 80a9d5d06dc20b081268acbe9141392570cc9e9b..27f558a5fbb4cfff95810d829d61f6356ced4813 100644 (file)
@@ -1410,35 +1410,35 @@ void LyXFunc::dispatch(FuncRequest const & cmd)
                }
 
                case LFUN_BUFFER_CHILD_OPEN: {
-      // takes an optional argument, "|bool", at the end
-      // indicating whether this file is being opened automatically
-      // by LyX itself, in which case we will not want to switch
-      // buffers after opening. The default is false, so in practice
-      // it is used only when true.
+                       // takes an optional argument, "|bool", at the end
+                       // indicating whether this file is being opened automatically
+                       // by LyX itself, in which case we will not want to switch
+                       // buffers after opening. The default is false, so in practice
+                       // it is used only when true.
                        BOOST_ASSERT(lyx_view_);
-      int const arglength = argument.length();
+                       int const arglength = argument.length();
                        FileName filename;
-      bool autoOpen = false;
-      if (argument.substr(arglength - 5, 5) == "|true") {
-        autoOpen = true;
-        filename = makeAbsPath(argument.substr(0, arglength - 5), 
-                               lyx_view_->buffer()->filePath());
-      } else if (argument.substr(arglength - 6, 6) == "|false") {
-        filename = makeAbsPath(argument.substr(0, arglength - 6), 
-                               lyx_view_->buffer()->filePath());
-      } else filename = 
-        makeAbsPath(argument, lyx_view_->buffer()->filePath());
+                       bool autoOpen = false;
+                       if (argument.substr(arglength - 5, 5) == "|true") {
+                               autoOpen = true;
+                               filename = makeAbsPath(argument.substr(0, arglength - 5), 
+                                       lyx_view_->buffer()->filePath());
+                       } else if (argument.substr(arglength - 6, 6) == "|false") {
+                               filename = makeAbsPath(argument.substr(0, arglength - 6), 
+                                       lyx_view_->buffer()->filePath());
+                       } else filename = 
+                               makeAbsPath(argument, lyx_view_->buffer()->filePath());
                        view()->saveBookmark(false);
                        if (theBufferList().exists(filename.absFilename())) {
-        Buffer * buf = theBufferList().getBuffer(filename.absFilename());
-        if (!autoOpen)
-                                 lyx_view_->setBuffer(buf, true);
-        else
-          buf->setParentName(lyx_view_->buffer()->fileName());
+                               Buffer * buf = theBufferList().getBuffer(filename.absFilename());
+                               if (!autoOpen)
+                                       lyx_view_->setBuffer(buf, true);
+                               else
+                                       buf->setParentName(lyx_view_->buffer()->fileName());
                        } else
-        lyx_view_->loadLyXFile(filename, true, true, autoOpen);
-                       
-      break;
+                               lyx_view_->loadLyXFile(filename, true, true, autoOpen);
+
+                       break;
                }
 
                case LFUN_TOGGLE_CURSOR_FOLLOWS_SCROLLBAR:
@@ -2089,16 +2089,8 @@ void LyXFunc::closeBuffer()
        // goto bookmark to update bookmark pit.
        for (size_t i = 0; i < LyX::ref().session().bookmarks().size(); ++i)
                gotoBookmark(i+1, false, false);
-       if (theBufferList().close(lyx_view_->buffer(), true) && !quitting) {
-               if (theBufferList().empty()) {
-                       // need this otherwise SEGV may occur while
-                       // trying to set variables that don't exist
-                       // since there's no current buffer
-                       lyx_view_->getDialogs().hideBufferDependent();
-               } else {
-                       lyx_view_->setBuffer(theBufferList().first());
-               }
-       }
+       
+       theBufferList().close(lyx_view_->buffer(), true);
 }