summaryrefslogtreecommitdiffstats
path: root/src/libs
diff options
context:
space:
mode:
authorKai Koehne <kai.koehne@theqtcompany.com>2015-04-08 17:14:33 +0200
committerKai Koehne <kai.koehne@theqtcompany.com>2015-04-09 06:48:12 +0000
commit8d060e69105f7c5705ba5c3a600c948467118f5e (patch)
tree9a1e985095a45bf3a844ee0da55b537e0001fd28 /src/libs
parent62a65d9f88435060926e7c79f851b6516bd3d81d (diff)
Fix crash on exit for Windows XP, Vista
The destructor of QWinTaskBarButton until Qt 5.4.2 crashes on exit if the OS is older than Windows 7. Task-number: QTIFW-652 Change-Id: Icd0255f79f7339937f129cddce7291997d652f72 Reviewed-by: Karsten Heimrich <karsten.heimrich@theqtcompany.com>
Diffstat (limited to 'src/libs')
-rw-r--r--src/libs/installer/packagemanagergui.cpp33
-rw-r--r--src/libs/installer/performinstallationform.cpp16
2 files changed, 32 insertions, 17 deletions
diff --git a/src/libs/installer/packagemanagergui.cpp b/src/libs/installer/packagemanagergui.cpp
index 8e1712617..bf78ae572 100644
--- a/src/libs/installer/packagemanagergui.cpp
+++ b/src/libs/installer/packagemanagergui.cpp
@@ -1251,8 +1251,12 @@ IntroductionPage::IntroductionPage(PackageManagerCore *core)
m_updateComponents->setEnabled(ProductKeyCheck::instance()->hasValidKey());
#ifdef Q_OS_WIN
- m_taskButton = new QWinTaskbarButton(this);
- connect(core, SIGNAL(metaJobProgress(int)), m_taskButton->progress(), SLOT(setValue(int)));
+ if (QSysInfo::windowsVersion() >= QSysInfo::WV_WINDOWS7) {
+ m_taskButton = new QWinTaskbarButton(this);
+ connect(core, SIGNAL(metaJobProgress(int)), m_taskButton->progress(), SLOT(setValue(int)));
+ } else {
+ m_taskButton = 0;
+ }
#endif
}
@@ -1299,14 +1303,16 @@ bool IntroductionPage::validatePage()
}
#ifdef Q_OS_WIN
- if (!m_taskButton->window()) {
- if (QWidget *widget = QApplication::activeWindow())
- m_taskButton->setWindow(widget->windowHandle());
- }
+ if (m_taskButton) {
+ if (!m_taskButton->window()) {
+ if (QWidget *widget = QApplication::activeWindow())
+ m_taskButton->setWindow(widget->windowHandle());
+ }
- m_taskButton->progress()->reset();
- m_taskButton->progress()->resume();
- m_taskButton->progress()->setVisible(true);
+ m_taskButton->progress()->reset();
+ m_taskButton->progress()->resume();
+ m_taskButton->progress()->setVisible(true);
+ }
#endif
// fetch updater packages
@@ -1359,7 +1365,8 @@ bool IntroductionPage::validatePage()
gui()->setSettingsButtonEnabled(true);
#ifdef Q_OS_WIN
- m_taskButton->progress()->setVisible(!isComplete());
+ if (m_taskButton)
+ m_taskButton->progress()->setVisible(!isComplete());
#endif
return isComplete();
}
@@ -1447,8 +1454,10 @@ void IntroductionPage::setErrorMessage(const QString &error)
m_errorLabel->setPalette(palette);
#ifdef Q_OS_WIN
- m_taskButton->progress()->stop();
- m_taskButton->progress()->setValue(100);
+ if (m_taskButton) {
+ m_taskButton->progress()->stop();
+ m_taskButton->progress()->setValue(100);
+ }
#endif
}
diff --git a/src/libs/installer/performinstallationform.cpp b/src/libs/installer/performinstallationform.cpp
index 24d06d59f..459e94591 100644
--- a/src/libs/installer/performinstallationform.cpp
+++ b/src/libs/installer/performinstallationform.cpp
@@ -89,8 +89,12 @@ PerformInstallationForm::PerformInstallationForm(QObject *parent)
, m_updateTimer(0)
{
#ifdef Q_OS_WIN
- m_taskButton = new QWinTaskbarButton(this);
- m_taskButton->progress()->setVisible(true);
+ if (QSysInfo::windowsVersion() >= QSysInfo::WV_WINDOWS7) {
+ m_taskButton = new QWinTaskbarButton(this);
+ m_taskButton->progress()->setVisible(true);
+ } else {
+ m_taskButton = 0;
+ }
#endif
}
@@ -177,9 +181,11 @@ void PerformInstallationForm::updateProgress()
m_progressBar->setValue(progressPercentage);
#ifdef Q_OS_WIN
- if (!m_taskButton->window())
- m_taskButton->setWindow(QApplication::activeWindow()->windowHandle());
- m_taskButton->progress()->setValue(progressPercentage);
+ if (m_taskButton) {
+ if (!m_taskButton->window())
+ m_taskButton->setWindow(QApplication::activeWindow()->windowHandle());
+ m_taskButton->progress()->setValue(progressPercentage);
+ }
#endif
static QString lastLabelText;