diff options
author | Volker Hilsheimer <volker.hilsheimer@qt.io> | 2020-10-14 23:40:34 +0200 |
---|---|---|
committer | Volker Hilsheimer <volker.hilsheimer@qt.io> | 2020-10-16 04:44:13 +0200 |
commit | 215594d664f6fc7057468a05a59344f08a78a976 (patch) | |
tree | c2c31c30383e4090c6da0f31a4fcf1ca098a769c /src/widgets/kernel/qdesktopwidget.cpp | |
parent | ef1905aebc4c4961c859bd781398dc6cea89d3a0 (diff) |
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>
Diffstat (limited to 'src/widgets/kernel/qdesktopwidget.cpp')
-rw-r--r-- | src/widgets/kernel/qdesktopwidget.cpp | 123 |
1 files changed, 0 insertions, 123 deletions
diff --git a/src/widgets/kernel/qdesktopwidget.cpp b/src/widgets/kernel/qdesktopwidget.cpp deleted file mode 100644 index 5c781222e1..0000000000 --- a/src/widgets/kernel/qdesktopwidget.cpp +++ /dev/null @@ -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" |