From 2882bb8d5d6d0b16e76897e86d583f4addafb470 Mon Sep 17 00:00:00 2001 From: Peter Fajdiga Date: Fri, 22 Sep 2023 14:40:25 +0200 Subject: [PATCH] base pinning on `KwinClient.tile` instead of `frameGeometry` --- src/world/clientState/Floating.ts | 14 ++++++-------- src/world/clientState/Pinned.ts | 7 +++---- src/world/clientState/Tiled.ts | 16 +++++++--------- 3 files changed, 16 insertions(+), 21 deletions(-) diff --git a/src/world/clientState/Floating.ts b/src/world/clientState/Floating.ts index 0a7cbd1..7f68bcf 100644 --- a/src/world/clientState/Floating.ts +++ b/src/world/clientState/Floating.ts @@ -40,9 +40,9 @@ namespace ClientState { manager.connect(kwinClient.tileChanged, () => { // on X11, this fires after `frameGeometryChanged` - const quickTileMode = Clients.guessQuickTileMode(kwinClient); - if (quickTileMode !== Clients.QuickTileMode.Untiled) { + if (kwinClient.tile !== null) { world.do((clientManager, desktopManager) => { + const quickTileMode = Clients.guessQuickTileMode(kwinClient); clientManager.pinClient(kwinClient, quickTileMode); }); } @@ -51,12 +51,10 @@ namespace ClientState { manager.connect(kwinClient.frameGeometryChanged, () => { // on Wayland, this fires after `tileChanged` if (kwinClient.tile !== null) { - const quickTileMode = Clients.guessQuickTileMode(kwinClient); - if (quickTileMode !== Clients.QuickTileMode.Untiled) { - world.do((clientManager, desktopManager) => { - clientManager.pinClient(kwinClient, quickTileMode); - }); - } + world.do((clientManager, desktopManager) => { + const quickTileMode = Clients.guessQuickTileMode(kwinClient); + clientManager.pinClient(kwinClient, quickTileMode); + }); } }) diff --git a/src/world/clientState/Pinned.ts b/src/world/clientState/Pinned.ts index 35cad26..9ca9286 100644 --- a/src/world/clientState/Pinned.ts +++ b/src/world/clientState/Pinned.ts @@ -34,8 +34,7 @@ namespace ClientState { let oldActivities = kwinClient.activities; manager.connect(kwinClient.tileChanged, () => { - const quickTileMode = Clients.guessQuickTileMode(kwinClient); - if (quickTileMode === Clients.QuickTileMode.Untiled) { + if (kwinClient.tile === null) { world.do((clientManager, desktopManager) => { clientManager.unpinClient(kwinClient); }); @@ -43,8 +42,7 @@ namespace ClientState { }); manager.connect(kwinClient.frameGeometryChanged, (kwinClient: KwinClient, oldGeometry: QRect) => { - const quickTileMode = Clients.guessQuickTileMode(kwinClient); - if (quickTileMode === Clients.QuickTileMode.Untiled) { + if (kwinClient.tile === null) { world.do((clientManager, desktopManager) => { clientManager.unpinClient(kwinClient); }); @@ -52,6 +50,7 @@ namespace ClientState { } world.do((clientManager, desktopManager) => { + const quickTileMode = Clients.guessQuickTileMode(kwinClient); pinManager.setClient(kwinClient, quickTileMode); for (const desktop of desktopManager.getDesktopsForClient(kwinClient)) { desktop.onPinsChanged(); diff --git a/src/world/clientState/Tiled.ts b/src/world/clientState/Tiled.ts index b02e974..43f0342 100644 --- a/src/world/clientState/Tiled.ts +++ b/src/world/clientState/Tiled.ts @@ -84,13 +84,11 @@ namespace ClientState { manager.connect(kwinClient.frameGeometryChanged, (kwinClient: KwinClient, oldGeometry: QRect) => { // on Wayland, this fires after `tileChanged` if (kwinClient.tile !== null) { - const quickTileMode = Clients.guessQuickTileMode(kwinClient); - if (quickTileMode !== Clients.QuickTileMode.Untiled) { - world.do((clientManager, desktopManager) => { - clientManager.pinClient(kwinClient, quickTileMode); - }); - return; - } + world.do((clientManager, desktopManager) => { + const quickTileMode = Clients.guessQuickTileMode(kwinClient); + clientManager.pinClient(kwinClient, quickTileMode); + }); + return; } const newGeometry = client.kwinClient.frameGeometry; @@ -121,9 +119,9 @@ namespace ClientState { manager.connect(kwinClient.tileChanged, () => { // on X11, this fires after `frameGeometryChanged` - const quickTileMode = Clients.guessQuickTileMode(kwinClient); - if (quickTileMode !== Clients.QuickTileMode.Untiled) { + if (kwinClient.tile === null) { world.do((clientManager, desktopManager) => { + const quickTileMode = Clients.guessQuickTileMode(kwinClient); clientManager.pinClient(kwinClient, quickTileMode); }); }