diff options
author | Zhang Hao <zhanghao@uniontech.com> | 2022-01-10 14:59:22 +0100 |
---|---|---|
committer | Liang Qi <liang.qi@qt.io> | 2022-01-12 03:17:47 +0100 |
commit | 38a66aa53a26eca4aef1e82f5c059efb82f977a8 (patch) | |
tree | d48651507ce9c1777e513ef4f194899c7bd2d66f /tests/manual | |
parent | 8f7bebb611958fe937c5bd38947f75620cfb94a8 (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.cpp | 35 |
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"; |