Skip to content

Commit 62fd808

Browse files
committed
web: update DeviceEvent::Button to DeviceEvent::PointerButton
1 parent 13050d9 commit 62fd808

File tree

1 file changed

+61
-9
lines changed

1 file changed

+61
-9
lines changed

winit-web/src/event_loop/runner.rs

Lines changed: 61 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,8 @@ use web_sys::{Document, KeyboardEvent, Navigator, PageTransitionEvent, PointerEv
1212
use web_time::{Duration, Instant};
1313
use winit_core::application::ApplicationHandler;
1414
use winit_core::event::{
15-
DeviceEvent, DeviceId, ElementState, RawKeyEvent, StartCause, WindowEvent,
15+
ButtonSource, DeviceEvent, DeviceId, ElementState, PointerSource, RawKeyEvent, StartCause,
16+
WindowEvent,
1617
};
1718
use winit_core::event_loop::{ControlFlow, DeviceEvents};
1819
use winit_core::window::WindowId;
@@ -315,9 +316,10 @@ impl Shared {
315316
return;
316317
}
317318

318-
// chorded button event
319-
let device_id = event::mkdid(event.pointer_id());
319+
let pointer_id = event.pointer_id();
320+
let device_id = event::mkdid(pointer_id);
320321

322+
// chorded button event
321323
if let Some(button) = backend::event::raw_button(&event) {
322324
let state = if backend::event::pointer_buttons(&event)
323325
.contains(ButtonsState::from_bits_retain(button))
@@ -327,9 +329,25 @@ impl Shared {
327329
ElementState::Released
328330
};
329331

332+
let kind = backend::event::pointer_kind(&event, pointer_id);
333+
let source = match backend::event::pointer_source(&event, kind) {
334+
PointerSource::Mouse => {
335+
ButtonSource::Mouse(backend::event::mouse_button(button))
336+
},
337+
PointerSource::Touch { finger_id, force } => {
338+
ButtonSource::Touch { finger_id, force }
339+
},
340+
PointerSource::TabletTool { kind, data } => ButtonSource::TabletTool {
341+
kind,
342+
button: backend::event::tool_button(button),
343+
data,
344+
},
345+
PointerSource::Unknown => ButtonSource::Unknown(button),
346+
};
347+
330348
runner.send_event(Event::DeviceEvent {
331349
device_id,
332-
event: DeviceEvent::Button { button: button.into(), state },
350+
event: DeviceEvent::PointerButton { button: source, state },
333351
});
334352

335353
return;
@@ -376,11 +394,28 @@ impl Shared {
376394
return;
377395
}
378396

397+
let pointer_id = event.pointer_id();
398+
let kind = backend::event::pointer_kind(&event, pointer_id);
379399
let button = backend::event::raw_button(&event).expect("no pointer button pressed");
400+
let source = match backend::event::pointer_source(&event, kind) {
401+
PointerSource::Mouse => {
402+
ButtonSource::Mouse(backend::event::mouse_button(button))
403+
},
404+
PointerSource::Touch { finger_id, force } => {
405+
ButtonSource::Touch { finger_id, force }
406+
},
407+
PointerSource::TabletTool { kind, data } => ButtonSource::TabletTool {
408+
kind,
409+
button: backend::event::tool_button(button),
410+
data,
411+
},
412+
PointerSource::Unknown => ButtonSource::Unknown(button),
413+
};
414+
380415
runner.send_event(Event::DeviceEvent {
381-
device_id: event::mkdid(event.pointer_id()),
382-
event: DeviceEvent::Button {
383-
button: button.into(),
416+
device_id: event::mkdid(pointer_id),
417+
event: DeviceEvent::PointerButton {
418+
button: source,
384419
state: ElementState::Pressed,
385420
},
386421
});
@@ -395,11 +430,28 @@ impl Shared {
395430
return;
396431
}
397432

433+
let pointer_id = event.pointer_id();
434+
let kind = backend::event::pointer_kind(&event, pointer_id);
398435
let button = backend::event::raw_button(&event).expect("no pointer button pressed");
436+
let source = match backend::event::pointer_source(&event, kind) {
437+
PointerSource::Mouse => {
438+
ButtonSource::Mouse(backend::event::mouse_button(button))
439+
},
440+
PointerSource::Touch { finger_id, force } => {
441+
ButtonSource::Touch { finger_id, force }
442+
},
443+
PointerSource::TabletTool { kind, data } => ButtonSource::TabletTool {
444+
kind,
445+
button: backend::event::tool_button(button),
446+
data,
447+
},
448+
PointerSource::Unknown => ButtonSource::Unknown(button),
449+
};
450+
399451
runner.send_event(Event::DeviceEvent {
400452
device_id: event::mkdid(event.pointer_id()),
401-
event: DeviceEvent::Button {
402-
button: button.into(),
453+
event: DeviceEvent::PointerButton {
454+
button: source,
403455
state: ElementState::Released,
404456
},
405457
});

0 commit comments

Comments
 (0)