diff options
Diffstat (limited to 'src')
-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(); |