Fix White Window issue on Windows after Qt 5.12.4 upgrade

Qt 5.12.4 seems to introduce a new bug on Windows, causing the settings window
to not be redrawn when re-opening it, for example by clicking at the tray icon.

As a workaround this fix starts a 100 ms timer to be fired once upon
QDialog::showEvent is called.

Signed-off-by: Michael Schuster <michael@schuster.ms>
This commit is contained in:
Michael Schuster 2019-09-26 04:59:17 +02:00
parent cb60e8aa90
commit 8f616969ab
No known key found for this signature in database
GPG key ID: 00819E3BF4177B28
2 changed files with 29 additions and 0 deletions

View file

@ -168,6 +168,23 @@ void SettingsDialog::changeEvent(QEvent *e)
QDialog::changeEvent(e);
}
// FIX - White Window issue on Windows after Qt 5.12.4 upgrade ///////////////////////////////
#if (defined(Q_OS_WIN) && (QT_VERSION >= QT_VERSION_CHECK(5, 12, 4)))
void SettingsDialog::showEvent(QShowEvent *e)
{
QDialog::showEvent(e);
QTimer::singleShot(100, this, &SettingsDialog::timerShowEvent);
}
void SettingsDialog::timerShowEvent()
{
update();
repaint();
}
#endif
// FIX - White Window issue on Windows after Qt 5.12.4 upgrade ///////////////////////////////
void SettingsDialog::slotSwitchPage(QAction *action)
{
_ui->stack->setCurrentWidget(_actionGroupWidgets.value(action));

View file

@ -68,10 +68,22 @@ protected:
void accept() override;
void changeEvent(QEvent *) override;
// FIX - White Window issue on Windows after Qt 5.12.4 upgrade ///////////////////////////////
#if (defined(Q_OS_WIN) && (QT_VERSION >= QT_VERSION_CHECK(5, 12, 4)))
void showEvent(QShowEvent *) override;
#endif
// FIX - White Window issue on Windows after Qt 5.12.4 upgrade ///////////////////////////////
private slots:
void accountAdded(AccountState *);
void accountRemoved(AccountState *);
// FIX - White Window issue on Windows after Qt 5.12.4 upgrade ///////////////////////////////
#if (defined(Q_OS_WIN) && (QT_VERSION >= QT_VERSION_CHECK(5, 12, 4)))
void timerShowEvent();
#endif
// FIX - White Window issue on Windows after Qt 5.12.4 upgrade ///////////////////////////////
private:
void customizeStyle();
void activityAdded(AccountState *);