diff options
Diffstat (limited to 'kde-plasma/kwin/files/kwin-5.23.3-enable-window-rules-for-all-xdg-toplevel.patch')
-rw-r--r-- | kde-plasma/kwin/files/kwin-5.23.3-enable-window-rules-for-all-xdg-toplevel.patch | 132 |
1 files changed, 0 insertions, 132 deletions
diff --git a/kde-plasma/kwin/files/kwin-5.23.3-enable-window-rules-for-all-xdg-toplevel.patch b/kde-plasma/kwin/files/kwin-5.23.3-enable-window-rules-for-all-xdg-toplevel.patch deleted file mode 100644 index fa52bd7a3481..000000000000 --- a/kde-plasma/kwin/files/kwin-5.23.3-enable-window-rules-for-all-xdg-toplevel.patch +++ /dev/null @@ -1,132 +0,0 @@ -From 1ba7b5ec63b61fa00b7eac59a1beca12323fefb3 Mon Sep 17 00:00:00 2001 -From: Vlad Zahorodnii <vlad.zahorodnii@kde.org> -Date: Wed, 17 Nov 2021 18:36:00 +0200 -Subject: [PATCH] wayland: Enable window rules for all xdg-toplevel - -If a window wants to be initially shown in fullscreen mode, it will -issue an xdg_toplevel.set_fullscreen request before the first surface -commit. - -If a window wants to be shown in fullscreen mode and there hasn't been -any first surface commit, kwin will cache the request and apply -fullscreen mode when checking window rules in the initialize() function. - -On the other hand, window rules are disabled for plasma surfaces. The -motivation behind that was to forbid user from messing with plasma's -surfaces (this change was suggested during redesign of xdg-shell -implementation). - -As it turns out, there are cases where plasma may ask to show a window -in fullscreen mode, which also has a plasma surface installed, e.g. -fullscreen application dashboard. - -In order to fix the dashboard, this change allows window rules to be -applied to xdg-toplevel windows that also have plasma surfaces installed. - -As is, xdg-toplevel surfaces and plasma surfaces are very different in -nature. Adding more quirks to handle plasma surfaces in -XdgToplevelClient is not worth the effort and there are better -alternatives, e.g. layer-shell. - - -(cherry picked from commit 039b1d031e3e30c238c8d67ade376c6d52297d81) ---- - src/xdgshellclient.cpp | 65 +++++++++++++++++++++--------------------- - 1 file changed, 32 insertions(+), 33 deletions(-) - -diff --git a/src/xdgshellclient.cpp b/src/xdgshellclient.cpp -index 9e8216a3a0..b4427b8cf7 100644 ---- a/src/xdgshellclient.cpp -+++ b/src/xdgshellclient.cpp -@@ -647,7 +647,7 @@ void XdgToplevelClient::updateDecoration(bool check_workspace_pos, bool force) - - bool XdgToplevelClient::supportsWindowRules() const - { -- return !m_plasmaShellSurface; -+ return true; - } - - StrutRect XdgToplevelClient::strutRect(StrutArea area) const -@@ -946,7 +946,7 @@ void XdgToplevelClient::handleWindowClassChanged() - { - const QByteArray applicationId = m_shellSurface->windowClass().toUtf8(); - setResourceClass(resourceName(), applicationId); -- if (shellSurface()->isConfigured() && supportsWindowRules()) { -+ if (shellSurface()->isConfigured()) { - evaluateWindowRules(); - } - setDesktopFileName(applicationId); -@@ -1196,40 +1196,39 @@ void XdgToplevelClient::initialize() - // is sent if the client has called the set_mode() request with csd mode. - updateDecoration(false, true); - -- if (supportsWindowRules()) { -- setupWindowRules(false); -- -- moveResize(rules()->checkGeometry(frameGeometry(), true)); -- maximize(rules()->checkMaximize(initialMaximizeMode(), true)); -- setFullScreen(rules()->checkFullScreen(initialFullScreenMode(), true), false); -- setOnActivities(rules()->checkActivity(activities(), true)); -- setDesktops(rules()->checkDesktops(desktops(), true)); -- setDesktopFileName(rules()->checkDesktopFile(desktopFileName(), true).toUtf8()); -- if (rules()->checkMinimize(isMinimized(), true)) { -- minimize(true); // No animation. -- } -- setSkipTaskbar(rules()->checkSkipTaskbar(skipTaskbar(), true)); -- setSkipPager(rules()->checkSkipPager(skipPager(), true)); -- setSkipSwitcher(rules()->checkSkipSwitcher(skipSwitcher(), true)); -- setKeepAbove(rules()->checkKeepAbove(keepAbove(), true)); -- setKeepBelow(rules()->checkKeepBelow(keepBelow(), true)); -- setShortcut(rules()->checkShortcut(shortcut().toString(), true)); -- setNoBorder(rules()->checkNoBorder(noBorder(), true)); -+ setupWindowRules(false); -+ -+ moveResize(rules()->checkGeometry(frameGeometry(), true)); -+ maximize(rules()->checkMaximize(initialMaximizeMode(), true)); -+ setFullScreen(rules()->checkFullScreen(initialFullScreenMode(), true), false); -+ setOnActivities(rules()->checkActivity(activities(), true)); -+ setDesktops(rules()->checkDesktops(desktops(), true)); -+ setDesktopFileName(rules()->checkDesktopFile(desktopFileName(), true).toUtf8()); -+ if (rules()->checkMinimize(isMinimized(), true)) { -+ minimize(true); // No animation. -+ } -+ setSkipTaskbar(rules()->checkSkipTaskbar(skipTaskbar(), true)); -+ setSkipPager(rules()->checkSkipPager(skipPager(), true)); -+ setSkipSwitcher(rules()->checkSkipSwitcher(skipSwitcher(), true)); -+ setKeepAbove(rules()->checkKeepAbove(keepAbove(), true)); -+ setKeepBelow(rules()->checkKeepBelow(keepBelow(), true)); -+ setShortcut(rules()->checkShortcut(shortcut().toString(), true)); -+ setNoBorder(rules()->checkNoBorder(noBorder(), true)); -+ -+ // Don't place the client if its position is set by a rule. -+ if (rules()->checkPosition(invalidPoint, true) != invalidPoint) { -+ needsPlacement = false; -+ } - -- // Don't place the client if its position is set by a rule. -- if (rules()->checkPosition(invalidPoint, true) != invalidPoint) { -- needsPlacement = false; -- } -+ // Don't place the client if the maximize state is set by a rule. -+ if (requestedMaximizeMode() != MaximizeRestore) { -+ needsPlacement = false; -+ } - -- // Don't place the client if the maximize state is set by a rule. -- if (requestedMaximizeMode() != MaximizeRestore) { -- needsPlacement = false; -- } -+ discardTemporaryRules(); -+ RuleBook::self()->discardUsed(this, false); // Remove Apply Now rules. -+ updateWindowRules(Rules::All); - -- discardTemporaryRules(); -- RuleBook::self()->discardUsed(this, false); // Remove Apply Now rules. -- updateWindowRules(Rules::All); -- } - if (isRequestedFullScreen()) { - needsPlacement = false; - } --- -GitLab - |