Purge QDesktopWidget
It's no longer used; the only calls to QApplicationPrivate::desktop pass the default nullptr for QScreen, so all we need is a Qt::Desktop type toplevel widget. Include changes documentation about both the class and QApplication::desktop being gone in Qt 6. Change-Id: I22d6e93cabc6aaaefffe5e96942886a2ef4e0609 Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
This commit is contained in:
parent
ef1905aebc
commit
215594d664
@ -2150,8 +2150,7 @@
|
|||||||
\value SplashScreen Indicates that the window is a splash screen.
|
\value SplashScreen Indicates that the window is a splash screen.
|
||||||
This is the default type for QSplashScreen.
|
This is the default type for QSplashScreen.
|
||||||
|
|
||||||
\omitvalue Desktop Indicates that this widget is the desktop. This
|
\omitvalue Desktop Indicates that this widget is the desktop.
|
||||||
is the type for QDesktopWidget.
|
|
||||||
|
|
||||||
\value SubWindow Indicates that this widget is a sub-window, such
|
\value SubWindow Indicates that this widget is a sub-window, such
|
||||||
as a QMdiSubWindow widget.
|
as a QMdiSubWindow widget.
|
||||||
|
@ -12,7 +12,6 @@ qt_internal_add_module(Widgets
|
|||||||
itemviews/qfileiconprovider.cpp itemviews/qfileiconprovider.h itemviews/qfileiconprovider_p.h
|
itemviews/qfileiconprovider.cpp itemviews/qfileiconprovider.h itemviews/qfileiconprovider_p.h
|
||||||
kernel/qapplication.cpp kernel/qapplication.h kernel/qapplication_p.h
|
kernel/qapplication.cpp kernel/qapplication.h kernel/qapplication_p.h
|
||||||
kernel/qboxlayout.cpp kernel/qboxlayout.h
|
kernel/qboxlayout.cpp kernel/qboxlayout.h
|
||||||
kernel/qdesktopwidget.cpp kernel/qdesktopwidget_p.h
|
|
||||||
kernel/qgesture.cpp kernel/qgesture.h kernel/qgesture_p.h
|
kernel/qgesture.cpp kernel/qgesture.h kernel/qgesture_p.h
|
||||||
kernel/qgesturemanager.cpp kernel/qgesturemanager_p.h
|
kernel/qgesturemanager.cpp kernel/qgesturemanager_p.h
|
||||||
kernel/qgesturerecognizer.cpp kernel/qgesturerecognizer.h
|
kernel/qgesturerecognizer.cpp kernel/qgesturerecognizer.h
|
||||||
|
@ -12,7 +12,6 @@ qt_internal_add_module(Widgets
|
|||||||
itemviews/qfileiconprovider.cpp itemviews/qfileiconprovider.h itemviews/qfileiconprovider_p.h
|
itemviews/qfileiconprovider.cpp itemviews/qfileiconprovider.h itemviews/qfileiconprovider_p.h
|
||||||
kernel/qapplication.cpp kernel/qapplication.h kernel/qapplication_p.h
|
kernel/qapplication.cpp kernel/qapplication.h kernel/qapplication_p.h
|
||||||
kernel/qboxlayout.cpp kernel/qboxlayout.h
|
kernel/qboxlayout.cpp kernel/qboxlayout.h
|
||||||
kernel/qdesktopwidget.cpp kernel/qdesktopwidget_p.h
|
|
||||||
kernel/qgesture.cpp kernel/qgesture.h kernel/qgesture_p.h
|
kernel/qgesture.cpp kernel/qgesture.h kernel/qgesture_p.h
|
||||||
kernel/qgesturemanager.cpp kernel/qgesturemanager_p.h
|
kernel/qgesturemanager.cpp kernel/qgesturemanager_p.h
|
||||||
kernel/qgesturerecognizer.cpp kernel/qgesturerecognizer.h
|
kernel/qgesturerecognizer.cpp kernel/qgesturerecognizer.h
|
||||||
|
@ -41,6 +41,18 @@
|
|||||||
In this topic we summarize those changes in Qt Widgets, and provide
|
In this topic we summarize those changes in Qt Widgets, and provide
|
||||||
guidance to handle them.
|
guidance to handle them.
|
||||||
|
|
||||||
\section1 ADD STUFF HERE
|
\section1 Kernel classes
|
||||||
|
|
||||||
|
\section2 QDesktopWidget and QApplication::desktop()
|
||||||
|
|
||||||
|
QDesktopWidget was already deprecated in Qt 5, and has been removed in
|
||||||
|
Qt 6, together with QApplication::desktop().
|
||||||
|
|
||||||
|
QScreen provides equivalent functionality to query for information about
|
||||||
|
available screens, screen that form a virtual desktop, and screen
|
||||||
|
geometries.
|
||||||
|
|
||||||
|
Use QWidget::setScreen() to create a QWidget on a specific display;
|
||||||
|
note that this does not move a widget to a screen in a virtual desktop
|
||||||
|
setup.
|
||||||
*/
|
*/
|
||||||
|
@ -25,7 +25,6 @@ HEADERS += \
|
|||||||
kernel/qstandardgestures_p.h \
|
kernel/qstandardgestures_p.h \
|
||||||
kernel/qgesturerecognizer.h \
|
kernel/qgesturerecognizer.h \
|
||||||
kernel/qgesturemanager_p.h \
|
kernel/qgesturemanager_p.h \
|
||||||
kernel/qdesktopwidget_p.h \
|
|
||||||
kernel/qwidgetwindow_p.h \
|
kernel/qwidgetwindow_p.h \
|
||||||
kernel/qwindowcontainer_p.h \
|
kernel/qwindowcontainer_p.h \
|
||||||
kernel/qtestsupport_widgets.h
|
kernel/qtestsupport_widgets.h
|
||||||
@ -45,7 +44,6 @@ SOURCES += \
|
|||||||
kernel/qstandardgestures.cpp \
|
kernel/qstandardgestures.cpp \
|
||||||
kernel/qgesturerecognizer.cpp \
|
kernel/qgesturerecognizer.cpp \
|
||||||
kernel/qgesturemanager.cpp \
|
kernel/qgesturemanager.cpp \
|
||||||
kernel/qdesktopwidget.cpp \
|
|
||||||
kernel/qwidgetsvariant.cpp \
|
kernel/qwidgetsvariant.cpp \
|
||||||
kernel/qwidgetwindow.cpp \
|
kernel/qwidgetwindow.cpp \
|
||||||
kernel/qwindowcontainer.cpp \
|
kernel/qwindowcontainer.cpp \
|
||||||
|
@ -42,7 +42,6 @@
|
|||||||
#include "qapplication.h"
|
#include "qapplication.h"
|
||||||
#include "qclipboard.h"
|
#include "qclipboard.h"
|
||||||
#include "qcursor.h"
|
#include "qcursor.h"
|
||||||
#include "qdesktopwidget_p.h"
|
|
||||||
#include "qdir.h"
|
#include "qdir.h"
|
||||||
#include "qevent.h"
|
#include "qevent.h"
|
||||||
#include "qfile.h"
|
#include "qfile.h"
|
||||||
@ -378,7 +377,7 @@ FontHash *qt_app_fonts_hash() { return app_fonts(); }
|
|||||||
|
|
||||||
QWidgetList *QApplicationPrivate::popupWidgets = nullptr; // has keyboard input focus
|
QWidgetList *QApplicationPrivate::popupWidgets = nullptr; // has keyboard input focus
|
||||||
|
|
||||||
QDesktopWidget *qt_desktopWidget = nullptr; // root window widgets
|
QWidget *qt_desktopWidget = nullptr; // root window widgets
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
\internal
|
\internal
|
||||||
@ -2510,31 +2509,21 @@ void QApplicationPrivate::sendSyntheticEnterLeave(QWidget *widget)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
\obsolete
|
\internal
|
||||||
|
|
||||||
Returns the desktop widget (also called the root window) for \a screen.
|
Returns the desktop widget (also called the root window).
|
||||||
|
|
||||||
If \a screen is nullptr, then the widget that represents the entire virtual
|
The widget represents the entire virtual desktop, and its geometry will
|
||||||
desktop is returned, and its geometry will be the union of all screens.
|
be the union of all screens.
|
||||||
|
|
||||||
Use the desktop widget for a specific screen as the parent of a new toplevel
|
|
||||||
widget to position the widget on a specific screen.
|
|
||||||
|
|
||||||
The desktop may be composed of multiple screens, so it would be incorrect,
|
|
||||||
for example, to attempt to \e center some widget in the desktop's geometry.
|
|
||||||
Use QScreen::geometry() and QScreen::availableGeometry() to get the dimensions
|
|
||||||
of a specific screen instead.
|
|
||||||
*/
|
*/
|
||||||
QWidget *QApplicationPrivate::desktop(QScreen *screen)
|
QWidget *QApplicationPrivate::desktop()
|
||||||
{
|
{
|
||||||
CHECK_QAPP_INSTANCE(nullptr)
|
CHECK_QAPP_INSTANCE(nullptr)
|
||||||
if (!qt_desktopWidget || // not created yet
|
if (!qt_desktopWidget || // not created yet
|
||||||
!(qt_desktopWidget->windowType() == Qt::Desktop)) { // reparented away
|
!(qt_desktopWidget->windowType() == Qt::Desktop)) { // reparented away
|
||||||
qt_desktopWidget = new QDesktopWidget();
|
qt_desktopWidget = new QWidget(nullptr, Qt::Desktop);
|
||||||
}
|
}
|
||||||
if (!screen)
|
return qt_desktopWidget;
|
||||||
return qt_desktopWidget;
|
|
||||||
return qt_desktopWidget->widgetForScreen(screen);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -113,7 +113,7 @@ public:
|
|||||||
|
|
||||||
void createEventDispatcher() override;
|
void createEventDispatcher() override;
|
||||||
static void dispatchEnterLeave(QWidget *enter, QWidget *leave, const QPointF &globalPosF);
|
static void dispatchEnterLeave(QWidget *enter, QWidget *leave, const QPointF &globalPosF);
|
||||||
static QWidget *desktop(QScreen *screen = nullptr);
|
static QWidget *desktop();
|
||||||
void notifyWindowIconChanged() override;
|
void notifyWindowIconChanged() override;
|
||||||
|
|
||||||
#ifndef QT_NO_ACTION
|
#ifndef QT_NO_ACTION
|
||||||
|
@ -1,123 +0,0 @@
|
|||||||
/****************************************************************************
|
|
||||||
**
|
|
||||||
** Copyright (C) 2020 The Qt Company Ltd.
|
|
||||||
** Contact: https://www.qt.io/licensing/
|
|
||||||
**
|
|
||||||
** This file is part of the QtWidgets module of the Qt Toolkit.
|
|
||||||
**
|
|
||||||
** $QT_BEGIN_LICENSE:LGPL$
|
|
||||||
** Commercial License Usage
|
|
||||||
** Licensees holding valid commercial Qt licenses may use this file in
|
|
||||||
** accordance with the commercial license agreement provided with the
|
|
||||||
** Software or, alternatively, in accordance with the terms contained in
|
|
||||||
** a written agreement between you and The Qt Company. For licensing terms
|
|
||||||
** and conditions see https://www.qt.io/terms-conditions. For further
|
|
||||||
** information use the contact form at https://www.qt.io/contact-us.
|
|
||||||
**
|
|
||||||
** GNU Lesser General Public License Usage
|
|
||||||
** Alternatively, this file may be used under the terms of the GNU Lesser
|
|
||||||
** General Public License version 3 as published by the Free Software
|
|
||||||
** Foundation and appearing in the file LICENSE.LGPL3 included in the
|
|
||||||
** packaging of this file. Please review the following information to
|
|
||||||
** ensure the GNU Lesser General Public License version 3 requirements
|
|
||||||
** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
|
|
||||||
**
|
|
||||||
** GNU General Public License Usage
|
|
||||||
** Alternatively, this file may be used under the terms of the GNU
|
|
||||||
** General Public License version 2.0 or (at your option) the GNU General
|
|
||||||
** Public license version 3 or any later version approved by the KDE Free
|
|
||||||
** Qt Foundation. The licenses are as published by the Free Software
|
|
||||||
** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
|
|
||||||
** included in the packaging of this file. Please review the following
|
|
||||||
** information to ensure the GNU General Public License requirements will
|
|
||||||
** be met: https://www.gnu.org/licenses/gpl-2.0.html and
|
|
||||||
** https://www.gnu.org/licenses/gpl-3.0.html.
|
|
||||||
**
|
|
||||||
** $QT_END_LICENSE$
|
|
||||||
**
|
|
||||||
****************************************************************************/
|
|
||||||
|
|
||||||
#include "qglobal.h"
|
|
||||||
#include "qdesktopwidget_p.h"
|
|
||||||
#include "qscreen.h"
|
|
||||||
#include "qwidget_p.h"
|
|
||||||
#include "qwindow.h"
|
|
||||||
|
|
||||||
#include <private/qhighdpiscaling_p.h>
|
|
||||||
#include <qpa/qplatformscreen.h>
|
|
||||||
|
|
||||||
QT_BEGIN_NAMESPACE
|
|
||||||
|
|
||||||
QDesktopWidgetPrivate::~QDesktopWidgetPrivate()
|
|
||||||
{
|
|
||||||
qDeleteAll(screenWidgets.values());
|
|
||||||
}
|
|
||||||
|
|
||||||
void QDesktopWidgetPrivate::updateScreens()
|
|
||||||
{
|
|
||||||
Q_Q(QDesktopWidget);
|
|
||||||
const QList<QScreen *> screenList = QGuiApplication::screens();
|
|
||||||
|
|
||||||
// Re-build our screens list. This is the easiest way to later compute which signals to emit.
|
|
||||||
// Create new screen widgets as necessary.
|
|
||||||
// Furthermore, we note which screens have changed, and compute the overall virtual geometry.
|
|
||||||
QFlatMap<QScreen*, QWidget*> newScreenWidgets;
|
|
||||||
QRegion virtualGeometry;
|
|
||||||
|
|
||||||
for (QScreen *screen : screenList) {
|
|
||||||
const QRect screenGeometry = screen->geometry();
|
|
||||||
QWidget *screenWidget = screenWidgets.value(screen);
|
|
||||||
if (!screenWidget) {
|
|
||||||
// a new screen, create a widget and connect the signals.
|
|
||||||
screenWidget = new QWidget(nullptr, Qt::Desktop);
|
|
||||||
screenWidget->setVisible(false);
|
|
||||||
screenWidget->setScreen(screen);
|
|
||||||
screenWidget->setGeometry(screenGeometry);
|
|
||||||
screenWidget->setObjectName(QLatin1String("qt_desktop_widget_%1").arg(screen->name()));
|
|
||||||
QObjectPrivate::connect(screen, &QScreen::geometryChanged,
|
|
||||||
this, &QDesktopWidgetPrivate::updateScreens, Qt::QueuedConnection);
|
|
||||||
QObjectPrivate::connect(screen, &QObject::destroyed,
|
|
||||||
this, &QDesktopWidgetPrivate::updateScreens, Qt::QueuedConnection);
|
|
||||||
}
|
|
||||||
// record all the screens and the overall geometry.
|
|
||||||
newScreenWidgets.insert(screen, screenWidget);
|
|
||||||
virtualGeometry += screenGeometry;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Now we apply the accumulated updates.
|
|
||||||
qSwap(screenWidgets, newScreenWidgets); // now [newScreenWidgets] is the old screen list
|
|
||||||
Q_ASSERT(screenWidgets.size() == screenList.length());
|
|
||||||
q->setGeometry(virtualGeometry.boundingRect());
|
|
||||||
|
|
||||||
// Delete the screen widgets that are not used any more.
|
|
||||||
for (auto it : qAsConst(newScreenWidgets)) {
|
|
||||||
if (!screenWidgets.contains(it.first))
|
|
||||||
delete it.second;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
QDesktopWidget::QDesktopWidget()
|
|
||||||
: QWidget(*new QDesktopWidgetPrivate, nullptr, Qt::Desktop)
|
|
||||||
{
|
|
||||||
Q_D(QDesktopWidget);
|
|
||||||
setObjectName(QLatin1String("desktop"));
|
|
||||||
d->updateScreens();
|
|
||||||
QObjectPrivate::connect(qApp, &QApplication::screenAdded, d, &QDesktopWidgetPrivate::updateScreens);
|
|
||||||
}
|
|
||||||
|
|
||||||
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"
|
|
@ -1,91 +0,0 @@
|
|||||||
/****************************************************************************
|
|
||||||
**
|
|
||||||
** Copyright (C) 2020 The Qt Company Ltd.
|
|
||||||
** Contact: https://www.qt.io/licensing/
|
|
||||||
**
|
|
||||||
** This file is part of the QtWidgets module of the Qt Toolkit.
|
|
||||||
**
|
|
||||||
** $QT_BEGIN_LICENSE:LGPL$
|
|
||||||
** Commercial License Usage
|
|
||||||
** Licensees holding valid commercial Qt licenses may use this file in
|
|
||||||
** accordance with the commercial license agreement provided with the
|
|
||||||
** Software or, alternatively, in accordance with the terms contained in
|
|
||||||
** a written agreement between you and The Qt Company. For licensing terms
|
|
||||||
** and conditions see https://www.qt.io/terms-conditions. For further
|
|
||||||
** information use the contact form at https://www.qt.io/contact-us.
|
|
||||||
**
|
|
||||||
** GNU Lesser General Public License Usage
|
|
||||||
** Alternatively, this file may be used under the terms of the GNU Lesser
|
|
||||||
** General Public License version 3 as published by the Free Software
|
|
||||||
** Foundation and appearing in the file LICENSE.LGPL3 included in the
|
|
||||||
** packaging of this file. Please review the following information to
|
|
||||||
** ensure the GNU Lesser General Public License version 3 requirements
|
|
||||||
** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
|
|
||||||
**
|
|
||||||
** GNU General Public License Usage
|
|
||||||
** Alternatively, this file may be used under the terms of the GNU
|
|
||||||
** General Public License version 2.0 or (at your option) the GNU General
|
|
||||||
** Public license version 3 or any later version approved by the KDE Free
|
|
||||||
** Qt Foundation. The licenses are as published by the Free Software
|
|
||||||
** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
|
|
||||||
** included in the packaging of this file. Please review the following
|
|
||||||
** information to ensure the GNU General Public License requirements will
|
|
||||||
** be met: https://www.gnu.org/licenses/gpl-2.0.html and
|
|
||||||
** https://www.gnu.org/licenses/gpl-3.0.html.
|
|
||||||
**
|
|
||||||
** $QT_END_LICENSE$
|
|
||||||
**
|
|
||||||
****************************************************************************/
|
|
||||||
|
|
||||||
//
|
|
||||||
// W A R N I N G
|
|
||||||
// -------------
|
|
||||||
//
|
|
||||||
// This file is not part of the Qt API. It exists for the convenience
|
|
||||||
// of other Qt classes. This header file may change from version to
|
|
||||||
// version without notice, or even be removed.
|
|
||||||
//
|
|
||||||
// We mean it.
|
|
||||||
//
|
|
||||||
|
|
||||||
#ifndef QDESKTOPWIDGET_P_H
|
|
||||||
#define QDESKTOPWIDGET_P_H
|
|
||||||
|
|
||||||
#include <QtWidgets/private/qtwidgetsglobal_p.h>
|
|
||||||
#include "private/qwidget_p.h"
|
|
||||||
|
|
||||||
#include <QtGui/qscreen.h>
|
|
||||||
#include <QtCore/private/qflatmap_p.h>
|
|
||||||
|
|
||||||
QT_BEGIN_NAMESPACE
|
|
||||||
|
|
||||||
class QDesktopWidgetPrivate;
|
|
||||||
|
|
||||||
class Q_WIDGETS_EXPORT QDesktopWidget : public QWidget
|
|
||||||
{
|
|
||||||
Q_OBJECT
|
|
||||||
public:
|
|
||||||
QDesktopWidget();
|
|
||||||
~QDesktopWidget();
|
|
||||||
|
|
||||||
QWidget *widgetForScreen(QScreen *qScreen) const;
|
|
||||||
|
|
||||||
private:
|
|
||||||
Q_DISABLE_COPY(QDesktopWidget)
|
|
||||||
Q_DECLARE_PRIVATE(QDesktopWidget)
|
|
||||||
};
|
|
||||||
|
|
||||||
class QDesktopWidgetPrivate : public QWidgetPrivate
|
|
||||||
{
|
|
||||||
Q_DECLARE_PUBLIC(QDesktopWidget)
|
|
||||||
|
|
||||||
public:
|
|
||||||
~QDesktopWidgetPrivate();
|
|
||||||
void updateScreens();
|
|
||||||
|
|
||||||
QFlatMap<QScreen*, QWidget*> screenWidgets;
|
|
||||||
};
|
|
||||||
|
|
||||||
QT_END_NAMESPACE
|
|
||||||
|
|
||||||
#endif // QDESKTOPWIDGET_QPA_P_H
|
|
@ -14,7 +14,6 @@ network_remote_stresstest \
|
|||||||
network_stresstest \
|
network_stresstest \
|
||||||
qcursor \
|
qcursor \
|
||||||
qdesktopservices \
|
qdesktopservices \
|
||||||
qdesktopwidget \
|
|
||||||
qgraphicsitem \
|
qgraphicsitem \
|
||||||
qgraphicsitemgroup \
|
qgraphicsitemgroup \
|
||||||
qgraphicslayout/flicker \
|
qgraphicslayout/flicker \
|
||||||
|
Loading…
x
Reference in New Issue
Block a user