From cef8258815ed0f57c81f2e7c7758598c938862c7 Mon Sep 17 00:00:00 2001 From: Tim Jenssen Date: Wed, 21 Aug 2013 17:10:20 +0200 Subject: fix that finishButtonClicked didn't come in every case - we misuse the cancel button as a finish button in the packagemanager/updater mode to have some more control if it is quited - now we connect the cancel button to the finishButtonClicked and disable the reject -> setCanceled connect for that moment Change-Id: I45182da12a5652f193b20af52262852836e29979 Reviewed-by: Rainer Keller Reviewed-by: Karsten Heimrich --- src/libs/installer/packagemanagergui.cpp | 18 ++++++++++++++++++ src/libs/installer/packagemanagergui.h | 1 + 2 files changed, 19 insertions(+) (limited to 'src') diff --git a/src/libs/installer/packagemanagergui.cpp b/src/libs/installer/packagemanagergui.cpp index 62c91440b..4ce38a388 100644 --- a/src/libs/installer/packagemanagergui.cpp +++ b/src/libs/installer/packagemanagergui.cpp @@ -1849,6 +1849,13 @@ void FinishedPage::entering() m_commitButton = cancel; cancel->setEnabled(true); cancel->setVisible(true); + // we don't use the usual FinishButton so we need to connect the misused CancelButton + connect(cancel, SIGNAL(clicked()), gui(), SIGNAL(finishButtonClicked())); + connect(cancel, SIGNAL(clicked()), packageManagerCore(), SIGNAL(finishButtonClicked())); + // for the moment we don't want the rejected signal connected + disconnect(gui(), SIGNAL(rejected()), packageManagerCore(), SLOT(setCanceled())); + + connect(gui()->button(QWizard::CommitButton), SIGNAL(clicked()), this, SLOT(cleanupChangedConnects())); } setButtonText(QWizard::CommitButton, tr("Restart")); setButtonText(QWizard::CancelButton, gui()->defaultButtonText(QWizard::FinishButton)); @@ -1914,6 +1921,17 @@ void FinishedPage::handleFinishClicked() QProcess::startDetached(program, args); } +void FinishedPage::cleanupChangedConnects() +{ + if (QAbstractButton *cancel = gui()->button(QWizard::CancelButton)) { + // remove the workaround connect from entering page + disconnect(cancel, SIGNAL(clicked()), gui(), SIGNAL(finishButtonClicked())); + disconnect(cancel, SIGNAL(clicked()), packageManagerCore(), SIGNAL(finishButtonClicked())); + connect(gui(), SIGNAL(rejected()), packageManagerCore(), SLOT(setCanceled())); + + disconnect(gui()->button(QWizard::CommitButton), SIGNAL(clicked()), this, SLOT(cleanupChangedConnects())); + } +} // -- RestartPage diff --git a/src/libs/installer/packagemanagergui.h b/src/libs/installer/packagemanagergui.h index 37e5d6852..5c428bf87 100644 --- a/src/libs/installer/packagemanagergui.h +++ b/src/libs/installer/packagemanagergui.h @@ -403,6 +403,7 @@ public: public Q_SLOTS: void handleFinishClicked(); + void cleanupChangedConnects(); protected: void entering(); -- cgit v1.2.3