SVN commit 1144819 by jmthomas: Disconnect the "preview changes" signal when the button changes to "go back", and vice versa. Fixes a bug where going to and from the preview widget would progressively take more and more time. M +6 -4 MainWindow.cpp --- trunk/playground/sysadmin/muon/src/MainWindow.cpp #1144818:1144819 @@ -403,27 +403,29 @@ void MainWindow::previewChanges() { - if (!m_reviewWidget) { m_reviewWidget = new ReviewWidget(m_stack); connect(this, SIGNAL(backendReady(QApt::Backend*)), m_reviewWidget, SLOT(setBackend(QApt::Backend*))); m_reviewWidget->setBackend(m_backend); m_stack->addWidget(m_reviewWidget); - } m_stack->setCurrentWidget(m_reviewWidget); m_previewAction->setIcon(KIcon("go-previous")); m_previewAction->setText(i18nc("@action:intoolbar Return from the preview page", "Back")); + disconnect(m_previewAction, SIGNAL(triggered()), this, SLOT(previewChanges())); connect(m_previewAction, SIGNAL(triggered()), this, SLOT(returnFromPreview())); } void MainWindow::returnFromPreview() { m_stack->setCurrentWidget(m_mainWidget); + m_reviewWidget->deleteLater(); + m_reviewWidget = 0; m_previewAction->setIcon(KIcon("document-preview-archive")); m_previewAction->setText(i18nc("@action", "Preview Changes")); + disconnect(m_previewAction, SIGNAL(triggered()), this, SLOT(returnFromPreview())); connect(m_previewAction, SIGNAL(triggered()), this, SLOT(previewChanges())); // We may not have anything to preview; check. reloadActions(); @@ -470,8 +472,8 @@ reloadActions(); // No need to keep these around in memory. - delete m_downloadWidget; - delete m_commitWidget; + m_downloadWidget->deleteLater(); + m_commitWidget->deleteLater(); m_downloadWidget = 0; m_commitWidget = 0; }