summaryrefslogtreecommitdiffstats
path: root/tests/manual
diff options
context:
space:
mode:
authorZhang Hao <zhanghao@uniontech.com>2022-01-10 14:59:22 +0100
committerLiang Qi <liang.qi@qt.io>2022-01-12 03:17:47 +0100
commit38a66aa53a26eca4aef1e82f5c059efb82f977a8 (patch)
treed48651507ce9c1777e513ef4f194899c7bd2d66f /tests/manual
parent8f7bebb611958fe937c5bd38947f75620cfb94a8 (diff)
xcb: Correctly update primary screen status with RandR 1.5
This amends d8f37d94e537aaab4fa960b80aacabe79bcc14c4 . Fixes: QTBUG-99605 Pick-to: 6.3 Done-with: Liang Qi <liang.qi@qt.io> Change-Id: Ia4cf67d6ebeed36596c0342302aa0b4af01769bc Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
Diffstat (limited to 'tests/manual')
-rw-r--r--tests/manual/qscreen_xrandr/tst_qscreen_xrandr.cpp35
1 files changed, 34 insertions, 1 deletions
diff --git a/tests/manual/qscreen_xrandr/tst_qscreen_xrandr.cpp b/tests/manual/qscreen_xrandr/tst_qscreen_xrandr.cpp
index 166b11e2f6..293dec47b4 100644
--- a/tests/manual/qscreen_xrandr/tst_qscreen_xrandr.cpp
+++ b/tests/manual/qscreen_xrandr/tst_qscreen_xrandr.cpp
@@ -1,6 +1,6 @@
/****************************************************************************
**
-** Copyright (C) 2020 The Qt Company Ltd.
+** Copyright (C) 2022 The Qt Company Ltd.
** Contact: https://www.qt.io/licensing/
**
** This file is part of the test suite of the Qt Toolkit.
@@ -42,6 +42,7 @@ private slots:
void xrandr_15_merge_and_unmerge();
void xrandr_15_scale();
void xrandr_15_off_and_on();
+ void xrandr_15_primary();
private:
void xrandr_process(const QStringList &arguments = {});
@@ -199,6 +200,38 @@ void tst_QScreen_Xrandr::xrandr_15_off_and_on()
}
}
+void tst_QScreen_Xrandr::xrandr_15_primary()
+{
+ QList<QScreen *> screens = QGuiApplication::screens();
+ int ss = screens.size();
+ if (ss < 2)
+ QSKIP("This test requires at least two screens.");
+
+ QStringList names;
+ for (QScreen *s : screens)
+ names << s->name();
+
+ qDebug() << "All screens: " << names;
+ QScreen *ps = qGuiApp->primaryScreen();
+ qDebug() << "Current primary screen: " << ps;
+
+ QStringList args;
+ for (QString name : names) {
+ qDebug() << "Trying to set primary screen:" << name;
+ args.clear();
+ args << "--output" << name << "--primary";
+ xrandr_process(args);
+ QTest::qWait(500);
+
+ QScreen *ps = qGuiApp->primaryScreen();
+ qDebug() << "Current primary screen: " << ps;
+ if (ps) {
+ qDebug() << "primary screen name: " << ps->name();
+ QVERIFY(ps->name() == name);
+ }
+ }
+}
+
void tst_QScreen_Xrandr::xrandr_process(const QStringList &args)
{
QString prog = "xrandr";