From 901cc4d60244e517919c4367a27a9be097eb4e19 Mon Sep 17 00:00:00 2001 From: Jonathan Ami <126116089+jonathan-ami@users.noreply.github.com> Date: Mon, 25 Mar 2024 11:03:28 -0700 Subject: [PATCH] small changes --- src/callbacks.rs | 8 +++++--- src/main.rs | 9 +++++---- src/window_manager.rs | 1 + 3 files changed, 11 insertions(+), 7 deletions(-) diff --git a/src/callbacks.rs b/src/callbacks.rs index f31f4e6..efafa6c 100644 --- a/src/callbacks.rs +++ b/src/callbacks.rs @@ -1,6 +1,6 @@ use crate::window::Window; use crate::window_manager::WindowManager; -use crate::{LEADER_PRESSED, NEW_FOREGROUND_SET}; +use crate::{HOTKEY_PRESSED, NEW_FOREGROUND_SET}; use std::sync::atomic::Ordering; use windows::Win32::Foundation::{BOOL, HWND, LPARAM}; use windows::Win32::UI::Accessibility::HWINEVENTHOOK; @@ -18,10 +18,12 @@ pub unsafe extern "system" fn win_event_proc( _: u32, _: u32, ) { - let leader_pressed = LEADER_PRESSED.load(Ordering::Acquire); - if event == EVENT_SYSTEM_FOREGROUND && !leader_pressed { + let hotkey_pressed = HOTKEY_PRESSED.load(Ordering::Relaxed); + if event == EVENT_SYSTEM_FOREGROUND && !hotkey_pressed { let _ = PostMessageW(None, NEW_FOREGROUND_SET, None, None); } + + HOTKEY_PRESSED.store(false, Ordering::Relaxed); } pub unsafe extern "system" fn enum_windows_proc(hwnd: HWND, lparam: LPARAM) -> BOOL { diff --git a/src/main.rs b/src/main.rs index 2bbe705..f7824c9 100644 --- a/src/main.rs +++ b/src/main.rs @@ -21,7 +21,7 @@ use windows::Win32::UI::WindowsAndMessaging::{ MSG, WINEVENT_OUTOFCONTEXT, WM_HOTKEY, WM_USER, }; -static LEADER_PRESSED: AtomicBool = AtomicBool::new(false); +static HOTKEY_PRESSED: AtomicBool = AtomicBool::new(false); const NEW_FOREGROUND_SET: u32 = WM_USER + 1; const EXIT_PROGRAM: u32 = WM_USER + 2; @@ -50,7 +50,6 @@ fn spawn_hook( unsafe { if GetMessageW(&mut msg, None, 0, 0).into() { if msg.message == NEW_FOREGROUND_SET { - println!("new foreground set in handle_callback"); if let Err(err) = sender.send(WindowManagerMessage::ClearWindows) { println!("{}", err); } @@ -71,15 +70,17 @@ fn spawn_hook( } fn key_listener(sender: Arc>, callback_thread_id: u32) { + println!("key listener running..."); + let mut leader_pressed = false; unsafe { let mut msg: MSG = MSG::default(); while GetMessageW(&mut msg, None, 0, 0).into() { if msg.message == WM_HOTKEY { - let leader_pressed = LEADER_PRESSED.load(Ordering::Relaxed); + HOTKEY_PRESSED.store(true, Ordering::Relaxed); let wparam = msg.wParam.0 as i32; match handle_hotkey(wparam, &sender, leader_pressed) { Ok(leader) => { - LEADER_PRESSED.store(leader, Ordering::Relaxed); + leader_pressed = leader; } Err(e) => { if let Err(e) = diff --git a/src/window_manager.rs b/src/window_manager.rs index 0a02762..45bb93d 100644 --- a/src/window_manager.rs +++ b/src/window_manager.rs @@ -119,6 +119,7 @@ impl WindowManager { self.clear_windows(); self.set_windows(); } + self.print_windows(); } #[allow(dead_code)]