diff --git a/src/kwin.kcfg b/src/kwin.kcfg
index dd0949b833..0945be128e 100644
--- a/src/kwin.kcfg
+++ b/src/kwin.kcfg
@@ -100,9 +100,6 @@
false
-
- true
-
false
diff --git a/src/main_x11.cpp b/src/main_x11.cpp
index a6ccdc8ffe..473d77d3da 100644
--- a/src/main_x11.cpp
+++ b/src/main_x11.cpp
@@ -310,6 +310,8 @@ void ApplicationX11::performStartup()
notifyKSplash();
notifyStarted();
+
+ connect(Cursors::self()->mouse(), &Cursor::posChanged, this, qOverload(&Workspace::setActiveOutput));
});
// we need to do an XSync here, otherwise the QPA might crash us later on
Xcb::sync();
diff --git a/src/options.cpp b/src/options.cpp
index f7caec0b32..4a3fd2e4c6 100644
--- a/src/options.cpp
+++ b/src/options.cpp
@@ -41,7 +41,6 @@ Options::Options(QObject *parent)
, m_shadeHover(false)
, m_shadeHoverInterval(0)
, m_separateScreenFocus(false)
- , m_activeMouseScreen(false)
, m_placement(PlacementNone)
, m_activationDesktopPolicy(Options::defaultActivationDesktopPolicy())
, m_borderSnapZone(0)
@@ -248,15 +247,6 @@ void Options::setSeparateScreenFocus(bool separateScreenFocus)
Q_EMIT separateScreenFocusChanged(m_separateScreenFocus);
}
-void Options::setActiveMouseScreen(bool activeMouseScreen)
-{
- if (m_activeMouseScreen == activeMouseScreen) {
- return;
- }
- m_activeMouseScreen = activeMouseScreen;
- Q_EMIT activeMouseScreenChanged();
-}
-
void Options::setPlacement(PlacementPolicy placement)
{
if (m_placement == placement) {
@@ -836,7 +826,6 @@ void Options::syncFromKcfgc()
setFocusPolicy(m_settings->focusPolicy());
setNextFocusPrefersMouse(m_settings->nextFocusPrefersMouse());
setSeparateScreenFocus(m_settings->separateScreenFocus());
- setActiveMouseScreen(m_settings->activeMouseScreen());
setRollOverDesktops(m_settings->rollOverDesktops());
setFocusStealingPreventionLevel(m_settings->focusStealingPreventionLevel());
setActivationDesktopPolicy(m_settings->activationDesktopPolicy());
diff --git a/src/options.h b/src/options.h
index 2304761450..eb101b7f86 100644
--- a/src/options.h
+++ b/src/options.h
@@ -107,7 +107,6 @@ class KWIN_EXPORT Options : public QObject
* Whether to see Xinerama screens separately for focus (in Alt+Tab, when activating next client)
*/
Q_PROPERTY(bool separateScreenFocus READ isSeparateScreenFocus WRITE setSeparateScreenFocus NOTIFY separateScreenFocusChanged)
- Q_PROPERTY(bool activeMouseScreen READ activeMouseScreen WRITE setActiveMouseScreen NOTIFY activeMouseScreenChanged)
Q_PROPERTY(PlacementPolicy placement READ placement WRITE setPlacement NOTIFY placementChanged)
Q_PROPERTY(ActivationDesktopPolicy activationDesktopPolicy READ activationDesktopPolicy WRITE setActivationDesktopPolicy NOTIFY activationDesktopPolicyChanged)
Q_PROPERTY(bool focusPolicyIsReasonable READ focusPolicyIsReasonable NOTIFY focusPolicyIsResonableChanged)
@@ -332,11 +331,6 @@ public:
return m_separateScreenFocus;
}
- bool activeMouseScreen() const
- {
- return m_activeMouseScreen;
- }
-
PlacementPolicy placement() const
{
return m_placement;
@@ -728,7 +722,6 @@ public:
void setShadeHover(bool shadeHover);
void setShadeHoverInterval(int shadeHoverInterval);
void setSeparateScreenFocus(bool separateScreenFocus);
- void setActiveMouseScreen(bool activeMouseScreen);
void setPlacement(PlacementPolicy placement);
void setActivationDesktopPolicy(ActivationDesktopPolicy activationDesktopPolicy);
void setBorderSnapZone(int borderSnapZone);
@@ -931,7 +924,6 @@ Q_SIGNALS:
void shadeHoverChanged();
void shadeHoverIntervalChanged();
void separateScreenFocusChanged(bool);
- void activeMouseScreenChanged();
void placementChanged();
void activationDesktopPolicyChanged();
void borderSnapZoneChanged();
@@ -995,7 +987,6 @@ private:
bool m_shadeHover;
int m_shadeHoverInterval;
bool m_separateScreenFocus;
- bool m_activeMouseScreen;
PlacementPolicy m_placement;
ActivationDesktopPolicy m_activationDesktopPolicy;
int m_borderSnapZone;
diff --git a/src/pointer_input.cpp b/src/pointer_input.cpp
index 28537d9aab..b797266377 100644
--- a/src/pointer_input.cpp
+++ b/src/pointer_input.cpp
@@ -846,7 +846,7 @@ void PointerInputRedirection::updatePosition(const QPointF &pos, std::chrono::mi
m_pos = p;
- workspace()->setActiveCursorOutput(m_pos);
+ workspace()->setActiveOutput(m_pos);
m_cursor->updateCursorOutputs(m_pos);
Q_EMIT input()->globalPointerChanged(m_pos);
diff --git a/src/tablet_input.cpp b/src/tablet_input.cpp
index 5f8de839ac..d3f20a93f8 100644
--- a/src/tablet_input.cpp
+++ b/src/tablet_input.cpp
@@ -70,7 +70,7 @@ void TabletInputRedirection::tabletToolEvent(KWin::InputRedirection::TabletEvent
}
update();
- workspace()->setActiveCursorOutput(pos);
+ workspace()->setActiveOutput(pos);
const auto button = m_tipDown ? Qt::LeftButton : Qt::NoButton;
diff --git a/src/touch_input.cpp b/src/touch_input.cpp
index a4d098d37c..44042a132a 100644
--- a/src/touch_input.cpp
+++ b/src/touch_input.cpp
@@ -138,7 +138,7 @@ void TouchInputRedirection::processDown(qint32 id, const QPointF &pos, std::chro
m_activeTouchPoints.insert(id);
if (m_activeTouchPoints.count() == 1) {
update();
- workspace()->setActiveCursorOutput(pos);
+ workspace()->setActiveOutput(pos);
}
input()->setLastInputHandler(this);
input()->processSpies(std::bind(&InputEventSpy::touchDown, std::placeholders::_1, id, pos, time));
diff --git a/src/useractions.cpp b/src/useractions.cpp
index 9b8fe2004c..d6b24317ea 100644
--- a/src/useractions.cpp
+++ b/src/useractions.cpp
@@ -1255,66 +1255,39 @@ void Workspace::slotWindowToDesktop(VirtualDesktop *desktop)
}
}
-static bool screenSwitchImpossible()
-{
- if (!options->activeMouseScreen()) {
- return false;
- }
- QStringList args;
- args << QStringLiteral("--passivepopup") << i18n("The window manager is configured to consider the screen with the mouse on it as active one.\n"
- "Therefore it is not possible to switch to a screen explicitly.")
- << QStringLiteral("20");
- KProcess::startDetached(QStringLiteral("kdialog"), args);
- return true;
-}
-
void Workspace::slotSwitchToScreen(Output *output)
{
- if (!screenSwitchImpossible()) {
- switchToOutput(output);
- }
+ switchToOutput(output);
}
void Workspace::slotSwitchToLeftScreen()
{
- if (!screenSwitchImpossible()) {
- switchToOutput(findOutput(activeOutput(), Direction::DirectionWest, true));
- }
+ switchToOutput(findOutput(activeOutput(), Direction::DirectionWest, true));
}
void Workspace::slotSwitchToRightScreen()
{
- if (!screenSwitchImpossible()) {
- switchToOutput(findOutput(activeOutput(), Direction::DirectionEast, true));
- }
+ switchToOutput(findOutput(activeOutput(), Direction::DirectionEast, true));
}
void Workspace::slotSwitchToAboveScreen()
{
- if (!screenSwitchImpossible()) {
- switchToOutput(findOutput(activeOutput(), Direction::DirectionNorth, true));
- }
+ switchToOutput(findOutput(activeOutput(), Direction::DirectionNorth, true));
}
void Workspace::slotSwitchToBelowScreen()
{
- if (!screenSwitchImpossible()) {
- switchToOutput(findOutput(activeOutput(), Direction::DirectionSouth, true));
- }
+ switchToOutput(findOutput(activeOutput(), Direction::DirectionSouth, true));
}
void Workspace::slotSwitchToPrevScreen()
{
- if (!screenSwitchImpossible()) {
- switchToOutput(findOutput(activeOutput(), Direction::DirectionPrev, true));
- }
+ switchToOutput(findOutput(activeOutput(), Direction::DirectionPrev, true));
}
void Workspace::slotSwitchToNextScreen()
{
- if (!screenSwitchImpossible()) {
- switchToOutput(findOutput(activeOutput(), Direction::DirectionNext, true));
- }
+ switchToOutput(findOutput(activeOutput(), Direction::DirectionNext, true));
}
void Workspace::slotWindowToScreen(Output *output)
diff --git a/src/workspace.cpp b/src/workspace.cpp
index 7ce39899ac..a09656086f 100644
--- a/src/workspace.cpp
+++ b/src/workspace.cpp
@@ -1348,9 +1348,6 @@ void Workspace::updateOutputs(const QList