add MouseMoved event when ENTER_NOTIFY happens
This commit is contained in:
parent
fd1a3a4d2e
commit
486bb1f069
|
@ -611,13 +611,23 @@ impl Window {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// mouse entering the window
|
|
||||||
// TODO: might need to consider the window used in `xcb::cast_event::<xcb::MotionNotifyEvent>(&event)`
|
|
||||||
xcb::ENTER_NOTIFY => {
|
xcb::ENTER_NOTIFY => {
|
||||||
handler.on_event(
|
handler.on_event(
|
||||||
&mut crate::Window::new(self),
|
&mut crate::Window::new(self),
|
||||||
Event::Mouse(MouseEvent::CursorEntered),
|
Event::Mouse(MouseEvent::CursorEntered),
|
||||||
);
|
);
|
||||||
|
// since no `MOTION_NOTIFY` event is generated when `ENTER_NOTIFY` is generated,
|
||||||
|
// we generate a CursorMoved as well, so the mouse position from here isn't lost
|
||||||
|
let event = unsafe { xcb::cast_event::<xcb::EnterNotifyEvent>(&event) };
|
||||||
|
let physical_pos = PhyPoint::new(event.event_x() as i32, event.event_y() as i32);
|
||||||
|
let logical_pos = physical_pos.to_logical(&self.window_info);
|
||||||
|
handler.on_event(
|
||||||
|
&mut crate::Window::new(self),
|
||||||
|
Event::Mouse(MouseEvent::CursorMoved {
|
||||||
|
position: logical_pos,
|
||||||
|
modifiers: key_mods(event.state()),
|
||||||
|
}),
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
xcb::LEAVE_NOTIFY => {
|
xcb::LEAVE_NOTIFY => {
|
||||||
|
|
Loading…
Reference in a new issue