diff options
author | Tim Jenssen <tim.jenssen@digia.com> | 2013-08-21 17:10:20 +0200 |
---|---|---|
committer | Tim Jenssen <tim.jenssen@digia.com> | 2013-08-22 12:04:35 +0200 |
commit | cef8258815ed0f57c81f2e7c7758598c938862c7 (patch) | |
tree | 35a1e0b01bf95fd1e5518dcf484daa216b5bcdde | |
parent | bd59c45f9f14e622892811e17a10eada09e76a8c (diff) |
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 <rainer.keller@digia.com>
Reviewed-by: Karsten Heimrich <karsten.heimrich@digia.com>
-rw-r--r-- | src/libs/installer/packagemanagergui.cpp | 18 | ||||
-rw-r--r-- | src/libs/installer/packagemanagergui.h | 1 |
2 files changed, 19 insertions, 0 deletions
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(); |