From 41e18bccc6c3bb4ed2d33d9bd21e42d63e55d504 Mon Sep 17 00:00:00 2001 From: LGUG2Z Date: Tue, 27 May 2025 08:12:56 -0700 Subject: [PATCH] fix(stackbar): show regular cursor on hover This commit ensures that the WM_SETCURSOR message is handled by stackbar windows by setting the cursor to the default IDC_ARROW, which prevents the spinning "Loading" icon from showing on hover. re #1456 --- komorebi/src/stackbar_manager/stackbar.rs | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/komorebi/src/stackbar_manager/stackbar.rs b/komorebi/src/stackbar_manager/stackbar.rs index b02b6b16..b3863dfa 100644 --- a/komorebi/src/stackbar_manager/stackbar.rs +++ b/komorebi/src/stackbar_manager/stackbar.rs @@ -58,15 +58,19 @@ use windows::Win32::UI::WindowsAndMessaging::CreateWindowExW; use windows::Win32::UI::WindowsAndMessaging::DefWindowProcW; use windows::Win32::UI::WindowsAndMessaging::DispatchMessageW; use windows::Win32::UI::WindowsAndMessaging::GetMessageW; +use windows::Win32::UI::WindowsAndMessaging::LoadCursorW; use windows::Win32::UI::WindowsAndMessaging::PostQuitMessage; +use windows::Win32::UI::WindowsAndMessaging::SetCursor; use windows::Win32::UI::WindowsAndMessaging::SetLayeredWindowAttributes; use windows::Win32::UI::WindowsAndMessaging::TranslateMessage; use windows::Win32::UI::WindowsAndMessaging::CS_HREDRAW; use windows::Win32::UI::WindowsAndMessaging::CS_VREDRAW; +use windows::Win32::UI::WindowsAndMessaging::IDC_ARROW; use windows::Win32::UI::WindowsAndMessaging::LWA_COLORKEY; use windows::Win32::UI::WindowsAndMessaging::MSG; use windows::Win32::UI::WindowsAndMessaging::WM_DESTROY; use windows::Win32::UI::WindowsAndMessaging::WM_LBUTTONDOWN; +use windows::Win32::UI::WindowsAndMessaging::WM_SETCURSOR; use windows::Win32::UI::WindowsAndMessaging::WNDCLASSW; use windows::Win32::UI::WindowsAndMessaging::WS_EX_LAYERED; use windows::Win32::UI::WindowsAndMessaging::WS_EX_TOOLWINDOW; @@ -312,6 +316,16 @@ impl Stackbar { ) -> LRESULT { unsafe { match msg { + WM_SETCURSOR => match LoadCursorW(None, IDC_ARROW) { + Ok(cursor) => { + SetCursor(Some(cursor)); + LRESULT(0) + } + Err(error) => { + tracing::error!("{error}"); + LRESULT(1) + } + }, WM_LBUTTONDOWN => { let stackbars_containers = STACKBARS_CONTAINERS.lock(); if let Some(container) = stackbars_containers.get(&(hwnd.0 as isize)) {