diff options
-rw-r--r-- | src/gui/kernel/qguiapplication.cpp | 15 | ||||
-rw-r--r-- | src/widgets/kernel/qapplication.cpp | 14 |
2 files changed, 10 insertions, 19 deletions
diff --git a/src/gui/kernel/qguiapplication.cpp b/src/gui/kernel/qguiapplication.cpp index f669a8f3d5..c3dddddf3b 100644 --- a/src/gui/kernel/qguiapplication.cpp +++ b/src/gui/kernel/qguiapplication.cpp @@ -753,9 +753,6 @@ void QGuiApplicationPrivate::processLeaveEvent(QWindowSystemInterfacePrivate::Le void QGuiApplicationPrivate::processActivatedEvent(QWindowSystemInterfacePrivate::ActivatedWindowEvent *e) { - if (!e->activated) - return; - QWindow *previous = QGuiApplicationPrivate::focus_window; QGuiApplicationPrivate::focus_window = e->activated.data(); @@ -765,10 +762,18 @@ void QGuiApplicationPrivate::processActivatedEvent(QWindowSystemInterfacePrivate if (previous) { QFocusEvent focusOut(QEvent::FocusOut); QCoreApplication::sendSpontaneousEvent(previous, &focusOut); + } else { + QEvent appActivate(QEvent::ApplicationActivate); + qApp->sendSpontaneousEvent(qApp, &appActivate); } - QFocusEvent focusIn(QEvent::FocusIn); - QCoreApplication::sendSpontaneousEvent(QGuiApplicationPrivate::focus_window, &focusIn); + if (QGuiApplicationPrivate::focus_window) { + QFocusEvent focusIn(QEvent::FocusIn); + QCoreApplication::sendSpontaneousEvent(QGuiApplicationPrivate::focus_window, &focusIn); + } else { + QEvent appActivate(QEvent::ApplicationDeactivate); + qApp->sendSpontaneousEvent(qApp, &appActivate); + } if (self) self->notifyActiveWindowChange(previous); diff --git a/src/widgets/kernel/qapplication.cpp b/src/widgets/kernel/qapplication.cpp index 10a6ed7c59..414a520a53 100644 --- a/src/widgets/kernel/qapplication.cpp +++ b/src/widgets/kernel/qapplication.cpp @@ -2326,13 +2326,6 @@ void QApplication::setActiveWindow(QWidget* act) QEvent windowActivate(QEvent::WindowActivate); QEvent windowDeactivate(QEvent::WindowDeactivate); -#if !defined(Q_WS_MAC) - if (!previousActiveWindow) { - QEvent appActivate(QEvent::ApplicationActivate); - sendSpontaneousEvent(qApp, &appActivate); - } -#endif - for (int i = 0; i < toBeActivated.size(); ++i) { QWidget *w = toBeActivated.at(i); sendSpontaneousEvent(w, &windowActivate); @@ -2352,13 +2345,6 @@ void QApplication::setActiveWindow(QWidget* act) sendSpontaneousEvent(w, &activationChange); } -#if !defined(Q_WS_MAC) - if (!QApplicationPrivate::active_window) { - QEvent appDeactivate(QEvent::ApplicationDeactivate); - sendSpontaneousEvent(qApp, &appDeactivate); - } -#endif - if (QApplicationPrivate::popupWidgets == 0) { // !inPopupMode() // then focus events if (!QApplicationPrivate::active_window && QApplicationPrivate::focus_widget) { |