From 266bf34ecb3310400c8a55c25ddedd174f21b22d Mon Sep 17 00:00:00 2001 From: Vadim Kurland Date: Thu, 27 Jan 2011 20:31:41 -0800 Subject: [PATCH] see #1998 an attempt to make sure signals that we use to update state of the tree panel are disconnected when user closes project panel --- src/libgui/ProjectPanel.cpp | 25 +++++++++++++++++-------- 1 file changed, 17 insertions(+), 8 deletions(-) diff --git a/src/libgui/ProjectPanel.cpp b/src/libgui/ProjectPanel.cpp index bf9a3bb23..ebb5ad1ed 100644 --- a/src/libgui/ProjectPanel.cpp +++ b/src/libgui/ProjectPanel.cpp @@ -104,13 +104,10 @@ void ProjectPanel::initMain(FWWindow *main) main->undoGroup->addStack(undoStack); - connect(m_panel->treeDockWidget, SIGNAL(topLevelChanged(bool)), - this, SLOT(topLevelChangedForTreePanel(bool))); - connect(m_panel->treeDockWidget, SIGNAL(visibilityChanged(bool)), - this, SLOT(visibilityChangedForTreePanel(bool))); - -// connect(m_panel->bottomDockWidget, SIGNAL(topLevelChanged(bool)), -// this, SLOT(topLevelChangedForBottomPanel(bool))); + // connect(m_panel->treeDockWidget, SIGNAL(topLevelChanged(bool)), + // this, SLOT(topLevelChangedForTreePanel(bool))); + // connect(m_panel->treeDockWidget, SIGNAL(visibilityChanged(bool)), + // this, SLOT(visibilityChangedForTreePanel(bool))); fd = new findDialog(this, this); fd->hide(); @@ -1038,11 +1035,18 @@ void ProjectPanel::showEvent(QShowEvent *ev) if (fwbdebug) qDebug() << "ProjectPanel::showEvent " << this << "title " << mdiWindow->windowTitle(); + connect(m_panel->treeDockWidget, SIGNAL(topLevelChanged(bool)), + this, SLOT(topLevelChangedForTreePanel(bool))); + connect(m_panel->treeDockWidget, SIGNAL(visibilityChanged(bool)), + this, SLOT(visibilityChangedForTreePanel(bool))); + m_panel->treeDockWidget->raise(); QWidget::showEvent(ev); - // we get this event when subsindow is maximized or restored + // we get this event when MDI window is maximized or restored loadState(); + + visibilityChangedForTreePanel(true); } void ProjectPanel::hideEvent(QHideEvent *ev) @@ -1050,6 +1054,11 @@ void ProjectPanel::hideEvent(QHideEvent *ev) if (fwbdebug) qDebug() << "ProjectPanel::hideEvent " << this << "title " << mdiWindow->windowTitle(); + disconnect(m_panel->treeDockWidget, SIGNAL(topLevelChanged(bool)), + this, SLOT(topLevelChangedForTreePanel(bool))); + disconnect(m_panel->treeDockWidget, SIGNAL(visibilityChanged(bool)), + this, SLOT(visibilityChangedForTreePanel(bool))); + QWidget::hideEvent(ev); }