commit 8c07f7fcc0beb1a68dd57300d9486865a1c5c57b
Author: Richard Heck <[email protected]>
Date: Mon Jan 27 14:58:21 2014 -0500
Fix bug discovered by Kornel. See
http://marc.info/?l=lyx-devel&m=138590578911716&w=2
If you look at Buffer.cpp, around line 4351, there was a comment about bug
5699. We are seeing the
same crash. The problem is that, although the master does have a GUI, that
GUI is in a different window. So the structureChanged() call we do during
updateBuffer() is for the TOC in that window, not the TOC in the window we are
actually in. So our TocModel::toc_ has been reset and is invalid, though the
widget itself has not been updated and looks fine.
This patch tests whether the master is in the same window as the buffer we
are updating.
A problem remains, which is noted in a comment.
(cherry picked from commit 3f62601a8f7fc2b5df7c6ecc54a2c331a0264290)
Conflicts:
src/Buffer.cpp
diff --git a/src/Buffer.cpp b/src/Buffer.cpp
index c59283a..c902db7 100644
--- a/src/Buffer.cpp
+++ b/src/Buffer.cpp
@@ -4131,9 +4131,15 @@ void Buffer::updateBuffer(UpdateScope scope, UpdateType
utype) const
if (master != this) {
bufToUpdate.insert(this);
master->updateBuffer(UpdateMaster, utype);
- // Do this here in case the master has no gui
associated with it. Then,
- // the TocModel is not updated and TocModel::toc_ is
invalid (bug 5699).
- if (!master->d->gui_)
+ // If the master buffer has no gui associated with it,
then the TocModel is
+ // not updated during the updateBuffer call and
TocModel::toc_ is invalid
+ // (bug 5699). The same happens if the master buffer is
open in a different
+ // window. This test catches both possibilities.
+ // See:
http://marc.info/?l=lyx-devel&m=138590578911716&w=2
+ // There remains a problem here: If there is another
child open in yet a third
+ // window, that TOC is not updated. So some more
general solution is needed at
+ // some point.
+ if (master->d->gui_ != d->gui_)
structureChanged();
// was buf referenced from the master (i.e. not in
bufToUpdate anymore)?
diff --git a/status.20x b/status.20x
index 3eae2e2..51bf7fc 100644
--- a/status.20x
+++ b/status.20x
@@ -55,12 +55,12 @@ What's new
* USER INTERFACE
-- Fixed python call in listerrors script.
-
-- Fix the missing menu entry for "Insert Branch <branch name>".
+- Fix outliner-related crash when master and child are open in different
+ windows (bug 8948).
- Handle undo in `branch-add' function.
+
* DOCUMENTATION AND LOCALIZATION
@@ -79,6 +79,6 @@ What's new
* BUILD/INSTALLATION
-- improve detection of Qt via pkg-config, especially on Mac OS.
+- Improve detection of Qt via pkg-config, especially on Mac OS.
-- fix a couple of compilation warnings.
+- Fix a couple of compilation warnings.