Fix White Window issue on Windows after Qt 5.12.4 upgrade
authorMichael Schuster <michael@schuster.ms>
Thu, 26 Sep 2019 02:59:17 +0000 (04:59 +0200)
committerMichael Schuster <michael@schuster.ms>
Thu, 26 Sep 2019 02:59:17 +0000 (04:59 +0200)
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>
src/gui/settingsdialog.cpp
src/gui/settingsdialog.h

index e91b96853be9ad85caa2898c2e6db27f9c07ba5e..841e8bbb29400b7f0a4d7c78af7e492e6966b0b9 100644 (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));
index 97d15c03c4b49075dfcb1e449efe4ee25f1b3583..6ae5f8896489431b9cac4804cf52fa302b29f222 100644 (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 *);