Do not list desktop widgets and desktop screen widgets as top-levels.
Change-Id: Iea4905d802213848594d2ad0266696e5edb884f8 Reviewed-by: Samuel Rødal <samuel.rodal@digia.com> Reviewed-by: Oliver Wolff <oliver.wolff@digia.com>bb10
parent
79d4f5b628
commit
b047f48612
|
|
@ -666,7 +666,7 @@ QWindowList QGuiApplication::topLevelWindows()
|
|||
const QWindowList &list = QGuiApplicationPrivate::window_list;
|
||||
QWindowList topLevelWindows;
|
||||
for (int i = 0; i < list.size(); i++) {
|
||||
if (!list.at(i)->parent()) {
|
||||
if (!list.at(i)->parent() && list.at(i)->type() != Qt::Desktop) {
|
||||
// Top windows of embedded QAxServers do not have QWindow parents,
|
||||
// but they are not true top level windows, so do not include them.
|
||||
const bool embedded = list.at(i)->handle() && list.at(i)->handle()->isEmbedded(0);
|
||||
|
|
|
|||
|
|
@ -61,9 +61,8 @@ QT_BEGIN_NAMESPACE
|
|||
class QDesktopScreenWidget : public QWidget {
|
||||
Q_OBJECT
|
||||
public:
|
||||
QDesktopScreenWidget(int screenNumber = -1)
|
||||
QDesktopScreenWidget(int screenNumber = -1) : QWidget(0, Qt::Desktop)
|
||||
{
|
||||
setWindowFlags(Qt::Desktop);
|
||||
setVisible(false);
|
||||
QTLWExtra *topData = d_func()->topData();
|
||||
topData->screenIndex = screenNumber;
|
||||
|
|
|
|||
|
|
@ -42,6 +42,7 @@
|
|||
|
||||
#include <QtTest/QtTest>
|
||||
#include <QtWidgets/QDesktopWidget>
|
||||
#include <QtGui/QWindow>
|
||||
#include <QDebug>
|
||||
|
||||
class tst_QDesktopWidget : public QObject
|
||||
|
|
@ -63,6 +64,7 @@ private slots:
|
|||
void screenNumberForQPoint();
|
||||
void availableGeometry();
|
||||
void screenGeometry();
|
||||
void topLevels();
|
||||
};
|
||||
|
||||
tst_QDesktopWidget::tst_QDesktopWidget()
|
||||
|
|
@ -177,6 +179,21 @@ void tst_QDesktopWidget::screenGeometry()
|
|||
}
|
||||
}
|
||||
|
||||
void tst_QDesktopWidget::topLevels()
|
||||
{
|
||||
// Desktop widgets/windows should not be listed as top-levels.
|
||||
int topLevelDesktopWidgets = 0;
|
||||
int topLevelDesktopWindows = 0;
|
||||
foreach (const QWidget *w, QApplication::topLevelWidgets())
|
||||
if (w->windowType() == Qt::Desktop)
|
||||
topLevelDesktopWidgets++;
|
||||
foreach (const QWindow *w, QGuiApplication::topLevelWindows())
|
||||
if (w->type() == Qt::Desktop)
|
||||
topLevelDesktopWindows++;
|
||||
QCOMPARE(topLevelDesktopWidgets, 0);
|
||||
QCOMPARE(topLevelDesktopWindows, 0);
|
||||
}
|
||||
|
||||
QTEST_MAIN(tst_QDesktopWidget)
|
||||
#include "tst_qdesktopwidget.moc"
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue