diff options
author | Kai Koehne <kai.koehne@theqtcompany.com> | 2015-04-08 17:14:33 +0200 |
---|---|---|
committer | Kai Koehne <kai.koehne@theqtcompany.com> | 2015-04-09 06:48:12 +0000 |
commit | 8d060e69105f7c5705ba5c3a600c948467118f5e (patch) | |
tree | 9a1e985095a45bf3a844ee0da55b537e0001fd28 /src/libs | |
parent | 62a65d9f88435060926e7c79f851b6516bd3d81d (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.cpp | 33 | ||||
-rw-r--r-- | src/libs/installer/performinstallationform.cpp | 16 |
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; |