summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTim Jenssen <tim.jenssen@digia.com>2013-08-21 17:10:20 +0200
committerTim Jenssen <tim.jenssen@digia.com>2013-08-22 12:04:35 +0200
commitcef8258815ed0f57c81f2e7c7758598c938862c7 (patch)
tree35a1e0b01bf95fd1e5518dcf484daa216b5bcdde
parentbd59c45f9f14e622892811e17a10eada09e76a8c (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.cpp18
-rw-r--r--src/libs/installer/packagemanagergui.h1
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();