diff --git a/korgac/alarmdialog.h b/korgac/alarmdialog.h --- a/korgac/alarmdialog.h +++ b/korgac/alarmdialog.h @@ -109,6 +109,7 @@ protected: void keyPressEvent(QKeyEvent *e) override; void closeEvent(QCloseEvent *) override; + void showEvent(QShowEvent *event) override; private: void update(); diff --git a/korgac/alarmdialog.cpp b/korgac/alarmdialog.cpp --- a/korgac/alarmdialog.cpp +++ b/korgac/alarmdialog.cpp @@ -603,6 +603,18 @@ } } +void AlarmDialog::showEvent(QShowEvent *event) +{ + QDialog::showEvent(event); + // Moving to showEvent from show() because with QDialog and Qt 5.7 + // setOnAllDesktops seemed to work only if the dialog was already showing, + // which happens when a notification appears and the dialog was already + // up. + KWindowSystem::setOnAllDesktops(winId(), true); + KWindowSystem::unminimizeWindow(winId(), false); + KWindowSystem::setState(winId(), NET::KeepAbove | NET::DemandsAttention); +} + void AlarmDialog::show() { mIncidenceTree->resizeColumnToContents(0); @@ -633,9 +645,6 @@ setGeometry(mRect); } QDialog::show(); - KWindowSystem::unminimizeWindow(winId(), false); - KWindowSystem::setState(winId(), NET::KeepAbove | NET::DemandsAttention); - KWindowSystem::setOnAllDesktops(winId(), true); if (grabFocus()) { KWindowSystem::activateWindow(winId()); } else {