From 5a6dcef7eaede5815318e7821121fd8476e3287f Mon Sep 17 00:00:00 2001 From: LGUG2Z Date: Mon, 8 Jan 2024 10:22:01 -0800 Subject: [PATCH] fix(wm): update border colour on ws change This commit ensures that the border colour is set appropriately for monocle and stack containers after workspace switching operations. fix #621 --- komorebi/src/process_command.rs | 25 ++++++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/komorebi/src/process_command.rs b/komorebi/src/process_command.rs index e529e5df..b0380507 100644 --- a/komorebi/src/process_command.rs +++ b/komorebi/src/process_command.rs @@ -1325,13 +1325,36 @@ impl WindowManager { | SocketMessage::InvisibleBorders(_) | SocketMessage::WorkAreaOffset(_) | SocketMessage::CycleMoveWindow(_) - | SocketMessage::MoveWindow(_) => { + | SocketMessage::MoveWindow(_) + | SocketMessage::CycleFocusMonitor(_) + | SocketMessage::CycleFocusWorkspace(_) + | SocketMessage::FocusMonitorNumber(_) + | SocketMessage::FocusMonitorWorkspaceNumber(_, _) + | SocketMessage::FocusWorkspaceNumber(_) => { let foreground = WindowsApi::foreground_window()?; let foreground_window = Window { hwnd: foreground }; let mut rect = WindowsApi::window_rect(foreground_window.hwnd())?; rect.top -= self.invisible_borders.bottom; rect.bottom += self.invisible_borders.bottom; + let monocle = BORDER_COLOUR_MONOCLE.load(Ordering::SeqCst); + if monocle != 0 { + if self.focused_workspace()?.monocle_container().is_some() { + BORDER_COLOUR_CURRENT.store( + monocle, + Ordering::SeqCst, + ); + } + } + + let stack = BORDER_COLOUR_STACK.load(Ordering::SeqCst); + if stack != 0 { + if self.focused_container()?.windows().len() > 1 { + BORDER_COLOUR_CURRENT + .store(stack, Ordering::SeqCst); + } + } + let border = Border::from(BORDER_HWND.load(Ordering::SeqCst)); border.set_position(foreground_window, &self.invisible_borders, false)?; }