Skip to content

Commit

Permalink
small changes
Browse files Browse the repository at this point in the history
  • Loading branch information
jhideki committed Mar 25, 2024
1 parent ef0eb18 commit 901cc4d
Show file tree
Hide file tree
Showing 3 changed files with 11 additions and 7 deletions.
8 changes: 5 additions & 3 deletions src/callbacks.rs
Original file line number Diff line number Diff line change
@@ -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;
Expand All @@ -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 {
Expand Down
9 changes: 5 additions & 4 deletions src/main.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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;

Expand Down Expand Up @@ -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);
}
Expand All @@ -71,15 +70,17 @@ fn spawn_hook(
}

fn key_listener(sender: Arc<Sender<WindowManagerMessage>>, 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) =
Expand Down
1 change: 1 addition & 0 deletions src/window_manager.rs
Original file line number Diff line number Diff line change
Expand Up @@ -119,6 +119,7 @@ impl WindowManager {
self.clear_windows();
self.set_windows();
}
self.print_windows();
}

#[allow(dead_code)]
Expand Down

0 comments on commit 901cc4d

Please sign in to comment.