mirror of
https://github.com/italicsjenga/winit-sonoma-fix.git
synced 2025-01-11 05:21:31 +11:00
Implement CursorPositionChanged event for X11
This commit is contained in:
parent
5764b9c243
commit
433c5b956e
|
@ -18,6 +18,7 @@ pub type GLXPixmap = XID;
|
|||
pub type GLXWindow = XID;
|
||||
pub type Pixmap = XID;
|
||||
pub type Status = libc::c_int; // TODO: not sure
|
||||
pub type Time = libc::c_ulong;
|
||||
pub type Visual = (); // TODO: not sure
|
||||
pub type VisualID = libc::c_ulong; // TODO: not sure
|
||||
pub type Window = XID;
|
||||
|
@ -241,7 +242,7 @@ pub struct XClientMessageEvent {
|
|||
pub l: [libc::c_long, ..5],
|
||||
}
|
||||
|
||||
#[reprc(C)]
|
||||
#[repr(C)]
|
||||
pub struct XResizeRequestEvent {
|
||||
pub type_: libc::c_int,
|
||||
pub serial: libc::c_ulong,
|
||||
|
@ -252,6 +253,25 @@ pub struct XResizeRequestEvent {
|
|||
pub height: libc::c_int,
|
||||
}
|
||||
|
||||
#[repr(C)]
|
||||
pub struct XMotionEvent {
|
||||
pub type_: libc::c_int,
|
||||
pub serial: libc::c_ulong,
|
||||
pub send_event: Bool,
|
||||
pub display: *mut Display,
|
||||
pub window: Window,
|
||||
pub root: Window,
|
||||
pub subwindow: Window,
|
||||
pub time: Time,
|
||||
pub x: libc::c_int,
|
||||
pub y: libc::c_int,
|
||||
pub x_root: libc::c_int,
|
||||
pub y_root: libc::c_int,
|
||||
pub state: libc::c_uint,
|
||||
pub is_hint: libc::c_char,
|
||||
pub same_screen: Bool,
|
||||
}
|
||||
|
||||
#[link(name = "GL")]
|
||||
#[link(name = "X11")]
|
||||
extern "C" {
|
||||
|
|
|
@ -61,7 +61,7 @@ impl Window {
|
|||
let mut swa: ffi::XSetWindowAttributes = unsafe { mem::zeroed() };
|
||||
swa.colormap = cmap;
|
||||
swa.event_mask = ffi::ExposureMask | ffi::ResizeRedirectMask |
|
||||
ffi::VisibilityChangeMask | ffi::KeyPressMask;
|
||||
ffi::VisibilityChangeMask | ffi::KeyPressMask | ffi::PointerMotionMask;
|
||||
swa
|
||||
};
|
||||
|
||||
|
@ -168,6 +168,12 @@ impl Window {
|
|||
events.push(SizeChanged(rs_event.width as uint, rs_event.height as uint));
|
||||
},
|
||||
|
||||
ffi::MotionNotify => {
|
||||
use CursorPositionChanged;
|
||||
let event: &ffi::XMotionEvent = unsafe { mem::transmute(&xev) };
|
||||
events.push(CursorPositionChanged(event.x as uint, event.y as uint));
|
||||
},
|
||||
|
||||
_ => ()
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue