From 02961693e18fa146e3fb6e31140d9f61a27d1887 Mon Sep 17 00:00:00 2001 From: elParaguayo Date: Fri, 12 Jul 2024 21:52:24 +0100 Subject: [PATCH] Bugfix ConditionalBorder ConditionalBorder adjusts the window size based on default value but it should adjust based on the previous border width. --- CHANGELOG | 1 + qtile_extras/layout/decorations/injections.py | 9 ++++++--- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index 9a224635..08d6b454 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,3 +1,4 @@ +2024-07-12: [BUGFIX] Fix bug where conditional border could resize window 2024-07-07: [FEATURE] Add `RoundedCorners` border decoration (Wayland only) 2024-07-07: [FEATURE] Add `ConditionalBorderWidth` to set border width depending on window conditions 2024-06-13: [FEATURE] Add new `CustomBorder` to draw window borders with user-defined functions diff --git a/qtile_extras/layout/decorations/injections.py b/qtile_extras/layout/decorations/injections.py index 827e9136..13cc6108 100644 --- a/qtile_extras/layout/decorations/injections.py +++ b/qtile_extras/layout/decorations/injections.py @@ -227,15 +227,18 @@ def new_place( respect_hints=False, ): if isinstance(borderwidth, ConditionalBorderWidth): + old = getattr(self, "_old_bw", borderwidth.default) newborder = borderwidth.get_border_for_window(self) - if newborder != borderwidth.default: - width += borderwidth.default * 2 + if newborder != old: + width += old * 2 width -= newborder * 2 - height += borderwidth.default * 2 + height += old * 2 height -= newborder * 2 else: newborder = borderwidth + self._old_bw = newborder + self._place( x, y,