From 90436e54cc32e3fd32f7298c65ac236eaff01bba Mon Sep 17 00:00:00 2001 From: Volker Hilsheimer Date: Thu, 13 Aug 2020 00:01:24 +0200 Subject: [PATCH] Move QDesktopWidget API used by QApplication into QDesktopWidget MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit QDesktopWidget is not a public class anymore and only exists for compatibility reasons. So we might just as well move the only method used by other classes out of QDesktopWidgetPrivate, and get rid of the friend declarations and the access-to-private code in QApplication. Change-Id: I74ff14233e59912e0930f98995f8af60dbadfdb6 Task-number: QTBUG-62094 Reviewed-by: Tor Arne Vestbø --- src/widgets/kernel/qapplication.cpp | 3 +-- src/widgets/kernel/qdesktopwidget.cpp | 11 +++++++++++ src/widgets/kernel/qdesktopwidget_p.h | 11 +++-------- 3 files changed, 15 insertions(+), 10 deletions(-) diff --git a/src/widgets/kernel/qapplication.cpp b/src/widgets/kernel/qapplication.cpp index f19a9d2e8ee..3fe3c6951f6 100644 --- a/src/widgets/kernel/qapplication.cpp +++ b/src/widgets/kernel/qapplication.cpp @@ -2556,8 +2556,7 @@ QWidget *QApplication::desktop(QScreen *screen) } if (!screen) return qt_desktopWidget; - QDesktopWidgetPrivate *dwp = static_cast(qt_widget_private(qt_desktopWidget)); - return dwp->widgetForScreen(screen); + return qt_desktopWidget->widgetForScreen(screen); } /* diff --git a/src/widgets/kernel/qdesktopwidget.cpp b/src/widgets/kernel/qdesktopwidget.cpp index db8c33c4980..5c781222e16 100644 --- a/src/widgets/kernel/qdesktopwidget.cpp +++ b/src/widgets/kernel/qdesktopwidget.cpp @@ -107,6 +107,17 @@ QDesktopWidget::QDesktopWidget() QDesktopWidget::~QDesktopWidget() = default; +/*! + \internal + Returns the Qt::Desktop type widget for \a qScreen. +*/ +QWidget *QDesktopWidget::widgetForScreen(QScreen *qScreen) const +{ + Q_D(const QDesktopWidget); + return d->screenWidgets.value(qScreen); +} + + QT_END_NAMESPACE #include "moc_qdesktopwidget_p.cpp" diff --git a/src/widgets/kernel/qdesktopwidget_p.h b/src/widgets/kernel/qdesktopwidget_p.h index c17036b9d0a..5e8c2560406 100644 --- a/src/widgets/kernel/qdesktopwidget_p.h +++ b/src/widgets/kernel/qdesktopwidget_p.h @@ -68,25 +68,20 @@ public: QDesktopWidget(); ~QDesktopWidget(); + QWidget *widgetForScreen(QScreen *qScreen) const; private: Q_DISABLE_COPY(QDesktopWidget) Q_DECLARE_PRIVATE(QDesktopWidget) - - friend class QApplication; - friend class QApplicationPrivate; }; -class QDesktopWidgetPrivate : public QWidgetPrivate { +class QDesktopWidgetPrivate : public QWidgetPrivate +{ Q_DECLARE_PUBLIC(QDesktopWidget) public: ~QDesktopWidgetPrivate(); void updateScreens(); - QWidget *widgetForScreen(QScreen *qScreen) const - { - return screenWidgets.value(qScreen); - } QFlatMap screenWidgets; };