diff options
author | Tor Arne Vestbø <tor.arne.vestbo@qt.io> | 2022-04-21 20:43:33 +0200 |
---|---|---|
committer | Tor Arne Vestbø <tor.arne.vestbo@qt.io> | 2022-08-27 20:22:29 +0200 |
commit | 2436e259ced39657f22176537603da44ff4e2512 (patch) | |
tree | 001b836ef64a242bf12693d0a384e2f5da244862 /src/widgets/kernel | |
parent | accc833e556ba54038d1cc7e261a936492145240 (diff) |
Deprecate QApplication::setActiveWindow() and mark as internal
The function is used the internal window activation machinery and
should not be called by user code.
Many tests still use this function, and should be ported over to
QWidget::activateWindow(). For now they are using the private
helper in QApplicationPrivate, so that we can progress with the
public API deprecation.
Change-Id: I29f1575acf9efdcbae4c005ee9b2eb1bb0c8e5b5
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Diffstat (limited to 'src/widgets/kernel')
-rw-r--r-- | src/widgets/kernel/qapplication.cpp | 27 | ||||
-rw-r--r-- | src/widgets/kernel/qapplication.h | 4 | ||||
-rw-r--r-- | src/widgets/kernel/qapplication_p.h | 2 | ||||
-rw-r--r-- | src/widgets/kernel/qwidget.cpp | 4 |
4 files changed, 26 insertions, 11 deletions
diff --git a/src/widgets/kernel/qapplication.cpp b/src/widgets/kernel/qapplication.cpp index 36100c51da..5f4c08a6fd 100644 --- a/src/widgets/kernel/qapplication.cpp +++ b/src/widgets/kernel/qapplication.cpp @@ -1746,6 +1746,8 @@ void QApplicationPrivate::notifyLayoutDirectionChange() } /*! + \internal + \fn void QApplication::setActiveWindow(QWidget* active) Sets the active window to the \a active widget in response to a system @@ -1763,8 +1765,15 @@ void QApplicationPrivate::notifyLayoutDirectionChange() \sa activeWindow(), QWidget::activateWindow() */ +#if QT_DEPRECATED_SINCE(6,4) void QApplication::setActiveWindow(QWidget* act) { + QApplicationPrivate::setActiveWindow(act); +} +#endif + +void QApplicationPrivate::setActiveWindow(QWidget* act) +{ QWidget* window = act?act->window():nullptr; if (QApplicationPrivate::active_window == window) @@ -1781,8 +1790,8 @@ void QApplication::setActiveWindow(QWidget* act) QWidgetList toBeDeactivated; if (QApplicationPrivate::active_window) { - if (style()->styleHint(QStyle::SH_Widget_ShareActivation, nullptr, QApplicationPrivate::active_window)) { - const QWidgetList list = topLevelWidgets(); + if (QApplication::style()->styleHint(QStyle::SH_Widget_ShareActivation, nullptr, QApplicationPrivate::active_window)) { + const QWidgetList list = QApplication::topLevelWidgets(); for (auto *w : list) { if (w->isVisible() && w->isActiveWindow()) toBeDeactivated.append(w); @@ -1803,8 +1812,8 @@ void QApplication::setActiveWindow(QWidget* act) QApplicationPrivate::active_window = window; if (QApplicationPrivate::active_window) { - if (style()->styleHint(QStyle::SH_Widget_ShareActivation, nullptr, QApplicationPrivate::active_window)) { - const QWidgetList list = topLevelWidgets(); + if (QApplication::style()->styleHint(QStyle::SH_Widget_ShareActivation, nullptr, QApplicationPrivate::active_window)) { + const QWidgetList list = QApplication::topLevelWidgets(); for (auto *w : list) { if (w->isVisible() && w->isActiveWindow()) toBeActivated.append(w); @@ -1822,14 +1831,14 @@ void QApplication::setActiveWindow(QWidget* act) for (int i = 0; i < toBeActivated.size(); ++i) { QWidget *w = toBeActivated.at(i); - sendSpontaneousEvent(w, &windowActivate); - sendSpontaneousEvent(w, &activationChange); + QApplication::sendSpontaneousEvent(w, &windowActivate); + QApplication::sendSpontaneousEvent(w, &activationChange); } for(int i = 0; i < toBeDeactivated.size(); ++i) { QWidget *w = toBeDeactivated.at(i); - sendSpontaneousEvent(w, &windowDeactivate); - sendSpontaneousEvent(w, &activationChange); + QApplication::sendSpontaneousEvent(w, &windowDeactivate); + QApplication::sendSpontaneousEvent(w, &activationChange); } if (QApplicationPrivate::popupWidgets == nullptr) { // !inPopupMode() @@ -1892,7 +1901,7 @@ void QApplicationPrivate::notifyActiveWindowChange(QWindow *previous) #endif QWindow *focusWindow = QGuiApplicationPrivate::focus_window; QWidget *focusWidget = qt_tlw_for_window(focusWindow); - QApplication::setActiveWindow(focusWidget); + QApplicationPrivate::setActiveWindow(focusWidget); // QTBUG-37126, Active X controls may set the focus on native child widgets. if (focusWindow && focusWidget && focusWindow != focusWidget->windowHandle()) { if (QWidgetWindow *widgetWindow = qobject_cast<QWidgetWindow *>(focusWindow)) diff --git a/src/widgets/kernel/qapplication.h b/src/widgets/kernel/qapplication.h index 3f2ffe40dd..d60e83a643 100644 --- a/src/widgets/kernel/qapplication.h +++ b/src/widgets/kernel/qapplication.h @@ -78,7 +78,11 @@ public: static QWidget *focusWidget(); static QWidget *activeWindow(); + +#if QT_DEPRECATED_SINCE(6,4) + QT_DEPRECATED_VERSION_X_6_4("Use QWidget::activateWindow() instead.") static void setActiveWindow(QWidget* act); +#endif static QWidget *widgetAt(const QPoint &p); static inline QWidget *widgetAt(int x, int y) { return widgetAt(QPoint(x, y)); } diff --git a/src/widgets/kernel/qapplication_p.h b/src/widgets/kernel/qapplication_p.h index 197e16afc6..6d80201d62 100644 --- a/src/widgets/kernel/qapplication_p.h +++ b/src/widgets/kernel/qapplication_p.h @@ -103,6 +103,8 @@ public: void initialize(); void process_cmdline(); + static void setActiveWindow(QWidget* act); + static bool inPopupMode(); bool popupActive() override { return inPopupMode(); } bool closeAllPopups() override; diff --git a/src/widgets/kernel/qwidget.cpp b/src/widgets/kernel/qwidget.cpp index 2cd30794cd..fa6915e545 100644 --- a/src/widgets/kernel/qwidget.cpp +++ b/src/widgets/kernel/qwidget.cpp @@ -2315,7 +2315,7 @@ void QWidgetPrivate::deactivateWidgetCleanup() Q_Q(QWidget); // If this was the active application window, reset it if (QApplication::activeWindow() == q) - QApplication::setActiveWindow(nullptr); + QApplicationPrivate::setActiveWindow(nullptr); // If the is the active mouse press widget, reset it if (q == qt_button_down) qt_button_down = nullptr; @@ -12278,7 +12278,7 @@ void QWidget::destroy(bool destroyWindow, bool destroySubWindows) qApp->d_func()->closePopup(this); if (this == QApplicationPrivate::active_window) - QApplication::setActiveWindow(nullptr); + QApplicationPrivate::setActiveWindow(nullptr); if (QWidget::mouseGrabber() == this) releaseMouse(); if (QWidget::keyboardGrabber() == this) |