Skip to content

Commit f3b9bd9

Browse files
committed
chore(examples): update winit to 0.30
1 parent 53cf96f commit f3b9bd9

File tree

2 files changed

+48
-13
lines changed

2 files changed

+48
-13
lines changed

Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ features = [
4242
x11-dl = "2.21"
4343

4444
[dev-dependencies]
45-
winit = "0.29"
45+
winit = "0.30"
4646
tao = "0.30"
4747
eframe = "0.27"
4848
iced = "0.12.1"

examples/winit.rs

Lines changed: 47 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,14 @@ use global_hotkey::{
66
hotkey::{Code, HotKey, Modifiers},
77
GlobalHotKeyEvent, GlobalHotKeyManager, HotKeyState,
88
};
9-
use winit::event_loop::{ControlFlow, EventLoopBuilder};
9+
use winit::{
10+
application::ApplicationHandler,
11+
event::WindowEvent,
12+
event_loop::{ActiveEventLoop, EventLoop},
13+
window::WindowId,
14+
};
1015

1116
fn main() {
12-
let event_loop = EventLoopBuilder::new().build().unwrap();
13-
1417
let hotkeys_manager = GlobalHotKeyManager::new().unwrap();
1518

1619
let hotkey = HotKey::new(Some(Modifiers::SHIFT), Code::KeyD);
@@ -21,19 +24,51 @@ fn main() {
2124
hotkeys_manager.register(hotkey2).unwrap();
2225
hotkeys_manager.register(hotkey3).unwrap();
2326

24-
let global_hotkey_channel = GlobalHotKeyEvent::receiver();
27+
let event_loop = EventLoop::<AppEvent>::with_user_event().build().unwrap();
28+
let proxy = event_loop.create_proxy();
29+
30+
GlobalHotKeyEvent::set_event_handler(Some(move |event| {
31+
let _ = proxy.send_event(AppEvent::HotKey(event));
32+
}));
33+
34+
let mut app = App {
35+
hotkeys_manager,
36+
hotkey2,
37+
};
38+
39+
event_loop.run_app(&mut app).unwrap()
40+
}
41+
42+
#[derive(Debug)]
43+
enum AppEvent {
44+
HotKey(GlobalHotKeyEvent),
45+
}
46+
47+
struct App {
48+
hotkeys_manager: GlobalHotKeyManager,
49+
hotkey2: HotKey,
50+
}
51+
52+
impl ApplicationHandler<AppEvent> for App {
53+
fn resumed(&mut self, _event_loop: &ActiveEventLoop) {}
2554

26-
event_loop
27-
.run(move |_event, event_loop| {
28-
event_loop.set_control_flow(ControlFlow::Poll);
55+
fn window_event(
56+
&mut self,
57+
_event_loop: &ActiveEventLoop,
58+
_window_id: WindowId,
59+
_event: WindowEvent,
60+
) {
61+
}
2962

30-
if let Ok(event) = global_hotkey_channel.try_recv() {
63+
fn user_event(&mut self, _event_loop: &ActiveEventLoop, event: AppEvent) {
64+
match event {
65+
AppEvent::HotKey(event) => {
3166
println!("{event:?}");
3267

33-
if hotkey2.id() == event.id && event.state == HotKeyState::Released {
34-
hotkeys_manager.unregister(hotkey2).unwrap();
68+
if self.hotkey2.id() == event.id && event.state == HotKeyState::Released {
69+
self.hotkeys_manager.unregister(self.hotkey2).unwrap();
3570
}
3671
}
37-
})
38-
.unwrap();
72+
}
73+
}
3974
}

0 commit comments

Comments
 (0)