]> git.lyx.org Git - features.git/commitdiff
Fix some crashes on exit and on windows switch.
authorAbdelrazak Younes <younes@lyx.org>
Wed, 3 Oct 2007 07:12:28 +0000 (07:12 +0000)
committerAbdelrazak Younes <younes@lyx.org>
Wed, 3 Oct 2007 07:12:28 +0000 (07:12 +0000)
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@20680 a592a061-630c-0410-9148-cb99ea01b6c8

src/frontends/LyXView.cpp
src/frontends/WorkAreaManager.cpp
src/frontends/qt4/GuiView.cpp

index 4b1f34d1f85ca77d87546f5ce818654fcb62c8c3..72f625de43f1d7d936cbe05c715ca14f8fefcff9 100644 (file)
@@ -80,8 +80,6 @@ LyXView::LyXView(int id)
 
 LyXView::~LyXView()
 {
-       disconnectBuffer();
-       disconnectBufferView();
        delete dialogs_;
        delete autosave_timeout_;
 }
index 7970bfaf26a2dc7b6c3aa6c8d91c71c7cabbb450..4957f7bc3ba820a436fda29f20d5f0efde2d263c 100644 (file)
@@ -47,9 +47,6 @@ void WorkAreaManager::redrawAll()
 
 void WorkAreaManager::closeAll()
 {
-       if (quitting)
-               return;
-
        while (!work_areas_.empty())
                // WorkArea is de-registering itself.
                (*work_areas_.begin())->close();
index 372cad79b431a3adeee64670d82531c6a414a1e2..2ce2de69984afc0aec60e0efc1084a720b7a63d7 100644 (file)
@@ -294,10 +294,10 @@ GuiViewBase::~GuiViewBase()
 void GuiViewBase::close()
 {
        quitting_by_menu_ = true;
-       for (int i = 0; i != d.tab_widget_->count(); ++i) {
-               GuiWorkArea * wa = dynamic_cast<GuiWorkArea *>(d.tab_widget_->widget(i));
+       while (d.tab_widget_->count()) {
+               GuiWorkArea * wa = dynamic_cast<GuiWorkArea *>(d.tab_widget_->widget(0));
                BOOST_ASSERT(wa);
-               d.tab_widget_->removeTab(i);
+               d.tab_widget_->removeTab(0);
                delete wa;
        }
        QMainWindow::close();
@@ -722,7 +722,6 @@ bool GuiViewBase::event(QEvent * e)
        switch (e->type())
        {
        // Useful debug code:
-       //case QEvent::WindowActivate:
        //case QEvent::ActivationChange:
        //case QEvent::WindowDeactivate:
        //case QEvent::Paint:
@@ -737,6 +736,15 @@ bool GuiViewBase::event(QEvent * e)
        //case QEvent::Drop:
        //      break;
 
+       case QEvent::WindowActivate: {
+               GuiWorkArea * wa = dynamic_cast<GuiWorkArea *>(d.tab_widget_->currentWidget());
+               BOOST_ASSERT(wa);
+               BufferView & bv = wa->bufferView();
+               connectBufferView(bv);
+               connectBuffer(bv.buffer());
+               return QMainWindow::event(e);
+       }
+
        case QEvent::ShortcutOverride: {
                QKeyEvent * ke = static_cast<QKeyEvent*>(e);
                if (d.tab_widget_->count() == 0) {