summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorWolfgang Müller2025-02-11 23:48:07 +0100
committerWolfgang Müller2025-02-11 23:48:07 +0100
commitb4f5fbc87018385cd90b309d57eb694f9b94543a (patch)
treedd5db1d81495af1089ace095b575271851230d56
parent90ab986d37bc6fcd2771312d6e44ff21a68087de (diff)
downloadportage-roles-b4f5fbc87018385cd90b309d57eb694f9b94543a.tar.gz
desktop-plasma: Remove patches for kde-plasma/kwin
These are now released in Plasma 6.3.0.
-rw-r--r--desktop-plasma/patches/kde-plasma/kwin/0001-kcms-tabbox-Do-not-automatically-disable-highlightWi.patch176
-rw-r--r--desktop-plasma/patches/kde-plasma/kwin/0001-tabbox-Correctly-reset-an-invalid-index.patch55
-rw-r--r--desktop-plasma/patches/kde-plasma/kwin/0002-tabbox-Only-skip-active-window-if-it-is-in-the-clien.patch121
-rw-r--r--desktop-plasma/patches/kde-plasma/kwin/0003-autotests-Add-tabbox-test-for-when-the-client-is-out.patch165
4 files changed, 0 insertions, 517 deletions
diff --git a/desktop-plasma/patches/kde-plasma/kwin/0001-kcms-tabbox-Do-not-automatically-disable-highlightWi.patch b/desktop-plasma/patches/kde-plasma/kwin/0001-kcms-tabbox-Do-not-automatically-disable-highlightWi.patch
deleted file mode 100644
index 1fd3aa5..0000000
--- a/desktop-plasma/patches/kde-plasma/kwin/0001-kcms-tabbox-Do-not-automatically-disable-highlightWi.patch
+++ /dev/null
@@ -1,176 +0,0 @@
-From 1df05486ab86d28b108a5f63f9f26f9d3a40e15f Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Wolfgang=20M=C3=BCller?= <wolf@oriole.systems>
-Date: Tue, 22 Oct 2024 15:15:29 +0200
-Subject: [PATCH] kcms/tabbox: Do not automatically disable highlightWindows
- effect
-
-highlightWindows is an internal effect used to highlight one specific
-window whilst hiding all others. It's used by the tabbox and by
-plasmashell when hovering over a thumbnail.
-
-The user may enable or disable usage of this effect for the main and
-alternative task switcher. If it is enabled for neither, we currently
-disable the entire effect, regardless of whether or not it is still in
-use by plasmashell. This is not visible immediately, but will take until
-the next reboot or login to become active.
-
-As a dedicated configuration toggle for this internal effect is missing,
-the user cannot reasonably enable this feature again. They would have to
-know to enable either task switcher to use this effect again and, since
-the effect isn't reloaded automatically, reboot or relogin.
-
-Since this is an internal effect, we should simply not allow it to be
-disabled globally via either task switcher setting. Both tabbox and
-plasmashell already carry their own configuration settings to enable
-usage of this effect, so users can still tweak the behaviour there
-without also affecting other components.
----
- src/kcms/tabbox/CMakeLists.txt | 2 +-
- src/kcms/tabbox/kwinpluginssettings.kcfg | 12 ------------
- src/kcms/tabbox/kwinpluginssettings.kcfgc | 6 ------
- src/kcms/tabbox/kwintabboxdata.cpp | 7 -------
- src/kcms/tabbox/kwintabboxdata.h | 3 ---
- src/kcms/tabbox/main.cpp | 10 ----------
- 6 files changed, 1 insertion(+), 39 deletions(-)
- delete mode 100644 src/kcms/tabbox/kwinpluginssettings.kcfg
- delete mode 100644 src/kcms/tabbox/kwinpluginssettings.kcfgc
-
-diff --git a/src/kcms/tabbox/CMakeLists.txt b/src/kcms/tabbox/CMakeLists.txt
-index 12b9d056e7..6579b06565 100644
---- a/src/kcms/tabbox/CMakeLists.txt
-+++ b/src/kcms/tabbox/CMakeLists.txt
-@@ -14,7 +14,7 @@ set(kcm_kwintabbox_PART_SRCS
- ki18n_wrap_ui(kcm_kwintabbox_PART_SRCS main.ui)
- qt_add_dbus_interface(kcm_kwintabbox_PART_SRCS ${KWin_SOURCE_DIR}/src/org.kde.kwin.Effects.xml kwin_effects_interface)
-
--kconfig_add_kcfg_files(kcm_kwintabbox_PART_SRCS kwintabboxsettings.kcfgc kwinswitcheffectsettings.kcfgc kwinpluginssettings.kcfgc)
-+kconfig_add_kcfg_files(kcm_kwintabbox_PART_SRCS kwintabboxsettings.kcfgc kwinswitcheffectsettings.kcfgc)
- kcoreaddons_add_plugin(kcm_kwintabbox SOURCES ${kcm_kwintabbox_PART_SRCS} INSTALL_NAMESPACE "plasma/kcms/systemsettings_qwidgets")
-
- kcmutils_generate_desktop_file(kcm_kwintabbox)
-diff --git a/src/kcms/tabbox/kwinpluginssettings.kcfg b/src/kcms/tabbox/kwinpluginssettings.kcfg
-deleted file mode 100644
-index c3f3a1bce5..0000000000
---- a/src/kcms/tabbox/kwinpluginssettings.kcfg
-+++ /dev/null
-@@ -1,12 +0,0 @@
--<?xml version="1.0" encoding="UTF-8"?>
--<kcfg xmlns="http://www.kde.org/standards/kcfg/1.0"
-- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-- xsi:schemaLocation="http://www.kde.org/standards/kcfg/1.0
-- http://www.kde.org/standards/kcfg/1.0/kcfg.xsd" >
-- <kcfgfile name="kwinrc" />
-- <group name="Plugins">
-- <entry key="highlightwindowEnabled" type="Bool">
-- <default>true</default>
-- </entry>
-- </group>
--</kcfg>
-diff --git a/src/kcms/tabbox/kwinpluginssettings.kcfgc b/src/kcms/tabbox/kwinpluginssettings.kcfgc
-deleted file mode 100644
-index 38a966b75a..0000000000
---- a/src/kcms/tabbox/kwinpluginssettings.kcfgc
-+++ /dev/null
-@@ -1,6 +0,0 @@
--File=kwinpluginssettings.kcfg
--NameSpace=KWin::TabBox
--ClassName=PluginsSettings
--Mutators=true
--DefaultValueGetters=true
--ParentInConstructor=true
-diff --git a/src/kcms/tabbox/kwintabboxdata.cpp b/src/kcms/tabbox/kwintabboxdata.cpp
-index 86def04499..c8c7fd7a57 100644
---- a/src/kcms/tabbox/kwintabboxdata.cpp
-+++ b/src/kcms/tabbox/kwintabboxdata.cpp
-@@ -9,7 +9,6 @@
-
- #include "kwintabboxdata.h"
-
--#include "kwinpluginssettings.h"
- #include "kwinswitcheffectsettings.h"
- #include "kwintabboxsettings.h"
- #include "shortcutsettings.h"
-@@ -23,7 +22,6 @@ KWinTabboxData::KWinTabboxData(QObject *parent)
- : KCModuleData(parent)
- , m_tabBoxConfig(new TabBoxSettings(QStringLiteral("TabBox"), this))
- , m_tabBoxAlternativeConfig(new TabBoxSettings(QStringLiteral("TabBoxAlternative"), this))
-- , m_pluginsConfig(new PluginsSettings(this))
- , m_shortcutConfig(new ShortcutSettings(this))
- {
- registerSkeleton(m_tabBoxConfig);
-@@ -41,11 +39,6 @@ TabBoxSettings *KWinTabboxData::tabBoxAlternativeConfig() const
- return m_tabBoxAlternativeConfig;
- }
-
--PluginsSettings *KWinTabboxData::pluginsConfig() const
--{
-- return m_pluginsConfig;
--}
--
- ShortcutSettings *KWinTabboxData::shortcutConfig() const
- {
- return m_shortcutConfig;
-diff --git a/src/kcms/tabbox/kwintabboxdata.h b/src/kcms/tabbox/kwintabboxdata.h
-index db9db137af..89af34835d 100644
---- a/src/kcms/tabbox/kwintabboxdata.h
-+++ b/src/kcms/tabbox/kwintabboxdata.h
-@@ -19,7 +19,6 @@ namespace TabBox
- {
- class TabBoxSettings;
- class SwitchEffectSettings;
--class PluginsSettings;
- class ShortcutSettings;
-
- class KWinTabboxData : public KCModuleData
-@@ -31,13 +30,11 @@ public:
-
- TabBoxSettings *tabBoxConfig() const;
- TabBoxSettings *tabBoxAlternativeConfig() const;
-- PluginsSettings *pluginsConfig() const;
- ShortcutSettings *shortcutConfig() const;
-
- private:
- TabBoxSettings *m_tabBoxConfig;
- TabBoxSettings *m_tabBoxAlternativeConfig;
-- PluginsSettings *m_pluginsConfig;
- ShortcutSettings *m_shortcutConfig;
- };
-
-diff --git a/src/kcms/tabbox/main.cpp b/src/kcms/tabbox/main.cpp
-index 308dd17705..e6ef8c3593 100644
---- a/src/kcms/tabbox/main.cpp
-+++ b/src/kcms/tabbox/main.cpp
-@@ -37,7 +37,6 @@
- #include <KPackage/PackageLoader>
-
- // own
--#include "kwinpluginssettings.h"
- #include "kwintabboxconfigform.h"
- #include "kwintabboxdata.h"
- #include "kwintabboxsettings.h"
-@@ -229,8 +228,6 @@ void KWinTabBoxConfig::load()
- m_data->tabBoxAlternativeConfig()->load();
- m_data->shortcutConfig()->load();
-
-- m_data->pluginsConfig()->load();
--
- m_primaryTabBoxUi->updateUiFromConfig();
- m_alternativeTabBoxUi->updateUiFromConfig();
-
-@@ -239,13 +236,6 @@ void KWinTabBoxConfig::load()
-
- void KWinTabBoxConfig::save()
- {
-- // effects
-- const bool highlightWindows = m_primaryTabBoxUi->highlightWindows() || m_alternativeTabBoxUi->highlightWindows();
--
-- // activate effects if they are used otherwise deactivate them.
-- m_data->pluginsConfig()->setHighlightwindowEnabled(highlightWindows);
-- m_data->pluginsConfig()->save();
--
- m_data->tabBoxConfig()->save();
- m_data->tabBoxAlternativeConfig()->save();
- m_data->shortcutConfig()->save();
---
-2.47.0
-
diff --git a/desktop-plasma/patches/kde-plasma/kwin/0001-tabbox-Correctly-reset-an-invalid-index.patch b/desktop-plasma/patches/kde-plasma/kwin/0001-tabbox-Correctly-reset-an-invalid-index.patch
deleted file mode 100644
index f188b33..0000000
--- a/desktop-plasma/patches/kde-plasma/kwin/0001-tabbox-Correctly-reset-an-invalid-index.patch
+++ /dev/null
@@ -1,55 +0,0 @@
-From ce4a56a522bf073512878392f7bc7e6a833ebfe3 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Wolfgang=20M=C3=BCller?= <wolf@oriole.systems>
-Date: Wed, 23 Oct 2024 16:49:21 +0200
-Subject: [PATCH 1/3] tabbox: Correctly reset an invalid index
-
-When resetting the tabbox before making it visible, we want to set the
-index to the active window as our starting point. It might happen that
-the active window is not part of the selection model, for example when
-the tabbox is showing only windows on other desktops or activities. If
-this happens the index is invalid, so we want to take care to set the
-index to the first item instead.
-
-Currently we handle this by first attempting to set the index to the
-active window with setCurrentClient() and then afterwards checking
-whether currentIndex() is valid. However, setCurrentIndex() only changes
-the index if it is valid, so the index is never changed and remains at
-its previous valid position. This makes the following check with
-currentIndex() irrelevant and the index is never reset to the first
-item.
-
-What this means in practice is that a tabbox whose client list does not
-contain the active window initially has whichever client selected that
-corresponds to the index set in a previous invocation of tabbox.
-
-To fix this, look up the index of the active window first and only set
-the current index to it if it is valid. Otherwise set the current index
-to the first item.
----
- src/tabbox/tabbox.cpp | 10 ++++------
- 1 file changed, 4 insertions(+), 6 deletions(-)
-
-diff --git a/src/tabbox/tabbox.cpp b/src/tabbox/tabbox.cpp
-index 42d80f77d3..f3bbfa99bc 100644
---- a/src/tabbox/tabbox.cpp
-+++ b/src/tabbox/tabbox.cpp
-@@ -424,12 +424,10 @@ void TabBox::reset(bool partial_reset)
- {
- m_tabBox->createModel(partial_reset);
- if (!partial_reset) {
-- if (Workspace::self()->activeWindow()) {
-- setCurrentClient(Workspace::self()->activeWindow());
-- }
-- // it's possible that the active client is not part of the model
-- // in that case the index is invalid
-- if (!m_tabBox->currentIndex().isValid()) {
-+ const QModelIndex activeIndex = m_tabBox->index(workspace()->activeWindow());
-+ if (activeIndex.isValid()) {
-+ setCurrentIndex(activeIndex);
-+ } else {
- setCurrentIndex(m_tabBox->first());
- }
- } else {
---
-2.47.0
-
diff --git a/desktop-plasma/patches/kde-plasma/kwin/0002-tabbox-Only-skip-active-window-if-it-is-in-the-clien.patch b/desktop-plasma/patches/kde-plasma/kwin/0002-tabbox-Only-skip-active-window-if-it-is-in-the-clien.patch
deleted file mode 100644
index 1ed9912..0000000
--- a/desktop-plasma/patches/kde-plasma/kwin/0002-tabbox-Only-skip-active-window-if-it-is-in-the-clien.patch
+++ /dev/null
@@ -1,121 +0,0 @@
-From 52afb2a52b17b82fd85150f40200b186517e49f4 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Wolfgang=20M=C3=BCller?= <wolf@oriole.systems>
-Date: Wed, 23 Oct 2024 18:45:46 +0200
-Subject: [PATCH 2/3] tabbox: Only skip active window if it is in the client
- list
-
-When invoking the tabbox we initially advance the selection by one,
-assuming the first item in the client list is the active window which
-we'd like to skip. However, since we allow the user to apply a filter to
-the clients displayed in the list, we might end up with the active
-window missing from the current client list and skipping over an
-unrelated client. When using focus chain switching this means we skip
-over the last focused window, making quick switching between two windows
-impossible.
-
-Instead of advancing the selection unconditionally, make sure not to
-advance if the client list does not contain the active window and we are
-in the initial invocation of the tabbox in navigatingThroughWindows().
----
- src/tabbox/tabbox.cpp | 25 +++++++++++++++++++------
- src/tabbox/tabbox.h | 7 ++++++-
- 2 files changed, 25 insertions(+), 7 deletions(-)
-
-diff --git a/src/tabbox/tabbox.cpp b/src/tabbox/tabbox.cpp
-index f3bbfa99bc..5d6b2cb569 100644
---- a/src/tabbox/tabbox.cpp
-+++ b/src/tabbox/tabbox.cpp
-@@ -478,6 +478,11 @@ void TabBox::setCurrentIndex(QModelIndex index, bool notifyEffects)
- }
- }
-
-+bool TabBox::haveActiveClient()
-+{
-+ return m_tabBox->index(m_tabBox->activeClient()).isValid();
-+}
-+
- void TabBox::show()
- {
- Q_EMIT tabBoxAdded(m_tabBoxMode);
-@@ -808,9 +813,7 @@ void TabBox::navigatingThroughWindows(bool forward, const QKeySequence &shortcut
- CDEWalkThroughWindows(forward);
- } else {
- if (areModKeysDepressed(shortcut)) {
-- if (startKDEWalkThroughWindows(mode)) {
-- KDEWalkThroughWindows(forward);
-- }
-+ startKDEWalkThroughWindows(forward, mode);
- } else {
- // if the shortcut has no modifiers, don't show the tabbox,
- // don't grab, but simply go to the next window
-@@ -898,7 +901,7 @@ bool TabBox::toggleMode(TabBoxMode mode)
- return true;
- }
-
--bool TabBox::startKDEWalkThroughWindows(TabBoxMode mode)
-+bool TabBox::startKDEWalkThroughWindows(bool forward, TabBoxMode mode)
- {
- if (!establishTabBoxGrab()) {
- return false;
-@@ -911,13 +914,19 @@ bool TabBox::startKDEWalkThroughWindows(TabBoxMode mode)
-
- setMode(mode);
- reset();
-+
-+ if (haveActiveClient()) {
-+ nextPrev(forward);
-+ }
-+
-+ delayedShow();
-+
- return true;
- }
-
- void TabBox::KDEWalkThroughWindows(bool forward)
- {
- nextPrev(forward);
-- delayedShow();
- }
-
- void TabBox::CDEWalkThroughWindows(bool forward)
-@@ -979,7 +988,11 @@ void TabBox::KDEOneStepThroughWindows(bool forward, TabBoxMode mode)
- {
- setMode(mode);
- reset();
-- nextPrev(forward);
-+
-+ if (haveActiveClient()) {
-+ nextPrev(forward);
-+ }
-+
- if (Window *c = currentClient()) {
- Workspace::self()->activateWindow(c);
- shadeActivate(c);
-diff --git a/src/tabbox/tabbox.h b/src/tabbox/tabbox.h
-index ec4ca2ba28..72e43b3a2e 100644
---- a/src/tabbox/tabbox.h
-+++ b/src/tabbox/tabbox.h
-@@ -93,6 +93,11 @@ public:
- */
- void setCurrentClient(Window *newClient);
-
-+ /**
-+ * Return whether the active client is present in the client list.
-+ */
-+ bool haveActiveClient();
-+
- void setMode(TabBoxMode mode);
- TabBoxMode mode() const
- {
-@@ -228,7 +233,7 @@ private:
- explicit TabBox(QObject *parent);
- void loadConfig(const KConfigGroup &config, TabBoxConfig &tabBoxConfig);
-
-- bool startKDEWalkThroughWindows(TabBoxMode mode); // TabBoxWindowsMode | TabBoxWindowsAlternativeMode
-+ bool startKDEWalkThroughWindows(bool forward, TabBoxMode mode); // TabBoxWindowsMode | TabBoxWindowsAlternativeMode
- void navigatingThroughWindows(bool forward, const QKeySequence &shortcut, TabBoxMode mode); // TabBoxWindowsMode | TabBoxWindowsAlternativeMode
- void KDEWalkThroughWindows(bool forward);
- void CDEWalkThroughWindows(bool forward);
---
-2.47.0
-
diff --git a/desktop-plasma/patches/kde-plasma/kwin/0003-autotests-Add-tabbox-test-for-when-the-client-is-out.patch b/desktop-plasma/patches/kde-plasma/kwin/0003-autotests-Add-tabbox-test-for-when-the-client-is-out.patch
deleted file mode 100644
index 7ca29af..0000000
--- a/desktop-plasma/patches/kde-plasma/kwin/0003-autotests-Add-tabbox-test-for-when-the-client-is-out.patch
+++ /dev/null
@@ -1,165 +0,0 @@
-From 31d2ac0ac4c1f6a94422dddadeb4f6199d3f42ca Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Wolfgang=20M=C3=BCller?= <wolf@oriole.systems>
-Date: Thu, 24 Oct 2024 14:09:30 +0200
-Subject: [PATCH 3/3] autotests: Add tabbox test for when the client is outside
- the model
-
-The last two commits fix tabbox behaviour when the active client is
-missing from the client list (e.g. when the tabbox only shows windows on
-other screens, desktops, or activities). Since both commits depend on
-each other, only add the test now.
----
- autotests/integration/tabbox_test.cpp | 124 ++++++++++++++++++++++++++
- 1 file changed, 124 insertions(+)
-
-diff --git a/autotests/integration/tabbox_test.cpp b/autotests/integration/tabbox_test.cpp
-index 63a2acc6ec..1ccda0cd28 100644
---- a/autotests/integration/tabbox_test.cpp
-+++ b/autotests/integration/tabbox_test.cpp
-@@ -8,6 +8,7 @@
- */
- #include "kwin_wayland_test.h"
-
-+#include "core/outputbackend.h"
- #include "input.h"
- #include "pointer_input.h"
- #include "tabbox/tabbox.h"
-@@ -38,6 +39,7 @@ private Q_SLOTS:
- void testMoveBackward();
- void testCapsLock();
- void testKeyboardFocus();
-+ void testActiveClientOutsideModel();
- };
-
- void TabBoxTest::initTestCase()
-@@ -289,5 +291,127 @@ void TabBoxTest::testKeyboardFocus()
- QVERIFY(enteredSpy.wait());
- }
-
-+void TabBoxTest::testActiveClientOutsideModel()
-+{
-+#if !KWIN_BUILD_GLOBALSHORTCUTS
-+ QSKIP("Can't test shortcuts without shortcuts");
-+ return;
-+#endif
-+
-+ // This test verifies behaviour when the active client is outside the
-+ // client list model:
-+ //
-+ // 1) reset() should correctly set the index to 0 if the active window is
-+ // not part of the client list.
-+ // 2) the selection should not be advanced initially if the active window
-+ // is not part of the client list.
-+
-+ const auto outputs = kwinApp()->outputBackend()->outputs();
-+
-+ // Initially, set up MultiScreenMode such that alt+tab will only switch
-+ // within windows on the same screen.
-+ KConfigGroup group = kwinApp()->config()->group(QStringLiteral("TabBox"));
-+ group.writeEntry("MultiScreenMode", "1");
-+ group.sync();
-+ workspace()->slotReconfigure();
-+
-+ // Create a window on the left output
-+ std::unique_ptr<KWayland::Client::Surface> leftSurface1(Test::createSurface());
-+ std::unique_ptr<Test::XdgToplevel> leftShellSurface1(Test::createXdgToplevelSurface(leftSurface1.get()));
-+ auto l1 = Test::renderAndWaitForShown(leftSurface1.get(), QSize(100, 50), Qt::blue);
-+ l1->move(QPointF(50, 100));
-+ QVERIFY(l1);
-+ QVERIFY(l1->isActive());
-+ QCOMPARE(l1->output(), outputs[0]);
-+
-+ // Create three windows on the right output
-+ std::unique_ptr<KWayland::Client::Surface> rightSurface1(Test::createSurface());
-+ std::unique_ptr<Test::XdgToplevel> rightShellSurface1(Test::createXdgToplevelSurface(rightSurface1.get()));
-+ auto r1 = Test::renderAndWaitForShown(rightSurface1.get(), QSize(100, 50), Qt::blue);
-+ r1->move(QPointF(1280 + 50, 100));
-+ QVERIFY(r1);
-+ QVERIFY(r1->isActive());
-+ QCOMPARE(r1->output(), outputs[1]);
-+ std::unique_ptr<KWayland::Client::Surface> rightSurface2(Test::createSurface());
-+ std::unique_ptr<Test::XdgToplevel> rightShellSurface2(Test::createXdgToplevelSurface(rightSurface2.get()));
-+ auto r2 = Test::renderAndWaitForShown(rightSurface2.get(), QSize(100, 50), Qt::red);
-+ r2->move(QPointF(1280 + 50, 100));
-+ QVERIFY(r2);
-+ QVERIFY(r2->isActive());
-+ QCOMPARE(r2->output(), outputs[1]);
-+ std::unique_ptr<KWayland::Client::Surface> rightSurface3(Test::createSurface());
-+ std::unique_ptr<Test::XdgToplevel> rightShellSurface3(Test::createXdgToplevelSurface(rightSurface3.get()));
-+ auto r3 = Test::renderAndWaitForShown(rightSurface3.get(), QSize(100, 50), Qt::red);
-+ r3->move(QPointF(1280 + 50, 100));
-+ QVERIFY(r3);
-+ QVERIFY(r3->isActive());
-+ QCOMPARE(r3->output(), outputs[1]);
-+
-+ // Focus r3 such that we're on the right output
-+ input()->pointer()->warp(r3->frameGeometry().center());
-+ QCOMPARE(workspace()->activeOutput(), outputs[1]);
-+
-+ // Setup tabbox signal spies
-+ QSignalSpy tabboxAddedSpy(workspace()->tabbox(), &TabBox::TabBox::tabBoxAdded);
-+ QSignalSpy tabboxClosedSpy(workspace()->tabbox(), &TabBox::TabBox::tabBoxClosed);
-+
-+ // Press Alt+Tab, this will only show clients on the same output
-+ quint32 timestamp = 0;
-+ Test::keyboardKeyPressed(KEY_LEFTALT, timestamp++);
-+ QCOMPARE(input()->keyboardModifiers(), Qt::AltModifier);
-+ Test::keyboardKeyPressed(KEY_TAB, timestamp++);
-+ Test::keyboardKeyReleased(KEY_TAB, timestamp++);
-+
-+ QVERIFY(tabboxAddedSpy.wait());
-+ QVERIFY(workspace()->tabbox()->isGrabbed());
-+
-+ // Release Alt+Tab. This will have moved our index to 1 and focused r2 (the
-+ // previously created window)
-+ Test::keyboardKeyReleased(KEY_LEFTALT, timestamp++);
-+ QCOMPARE(tabboxClosedSpy.count(), 1);
-+ QCOMPARE(workspace()->tabbox()->isGrabbed(), false);
-+ QCOMPARE(workspace()->activeWindow(), r2);
-+
-+ // Now reconfigure MultiScreenMode such that alt+tab will only switch
-+ // between windows on the other screen
-+ group.writeEntry("MultiScreenMode", 2);
-+ group.sync();
-+ workspace()->slotReconfigure();
-+
-+ // Activate and focus l1 to switch to the left output
-+ workspace()->activateWindow(l1);
-+ QCOMPARE(workspace()->activeWindow(), l1);
-+ input()->pointer()->warp(l1->frameGeometry().center());
-+ QCOMPARE(workspace()->activeOutput(), outputs[0]);
-+
-+ // Press Alt+Tab, this will show only clients on the other output. Our old
-+ // index from the last invocation of tabbox should be reset to 0 since the
-+ // active window (l1) cannot be located in the current client list
-+ Test::keyboardKeyPressed(KEY_LEFTALT, timestamp++);
-+ QCOMPARE(input()->keyboardModifiers(), Qt::AltModifier);
-+ Test::keyboardKeyPressed(KEY_TAB, timestamp++);
-+ Test::keyboardKeyReleased(KEY_TAB, timestamp++);
-+
-+ QVERIFY(tabboxAddedSpy.wait());
-+ QVERIFY(workspace()->tabbox()->isGrabbed());
-+
-+ // Release Alt. With a correctly reset index we should start from the
-+ // beginning, skip advancing one window and focus r2 - the last window in
-+ // focus on the other output
-+ Test::keyboardKeyReleased(KEY_LEFTALT, timestamp++);
-+ QCOMPARE(tabboxClosedSpy.count(), 2);
-+ QCOMPARE(workspace()->tabbox()->isGrabbed(), false);
-+ QCOMPARE(workspace()->activeWindow(), r2);
-+
-+ rightSurface3.reset();
-+ QVERIFY(Test::waitForWindowClosed(r3));
-+ rightSurface2.reset();
-+ QVERIFY(Test::waitForWindowClosed(r2));
-+ rightSurface1.reset();
-+ QVERIFY(Test::waitForWindowClosed(r1));
-+ leftSurface1.reset();
-+ QVERIFY(Test::waitForWindowClosed(l1));
-+}
-+
- WAYLANDTEST_MAIN(TabBoxTest)
- #include "tabbox_test.moc"
---
-2.47.0
-