diff options
author | tomaka <pierre.krieger1708@gmail.com> | 2015-05-06 16:56:24 +0200 |
---|---|---|
committer | tomaka <pierre.krieger1708@gmail.com> | 2015-05-06 16:56:24 +0200 |
commit | 119bd6393f5f3b8e1510ba6ab3281c8fb387449f (patch) | |
tree | 05340ea2480ff82440c55bbf968604a44447b0cf | |
parent | 2d97e0380feb90aa802bc1e56aad0936eda8cc81 (diff) | |
parent | d9f0d92584af1d76779cb8cb4a70762c889970f5 (diff) | |
download | glutin-119bd6393f5f3b8e1510ba6ab3281c8fb387449f.tar.gz glutin-119bd6393f5f3b8e1510ba6ab3281c8fb387449f.zip |
Merge pull request #405 from tomaka/win32-wheel
[Breaking change] Fix mouse wheel value on win32 and return a f64 instead of i32 in the MouseWheel event
-rw-r--r-- | src/api/cocoa/mod.rs | 2 | ||||
-rw-r--r-- | src/api/win32/callback.rs | 3 | ||||
-rw-r--r-- | src/api/x11/mod.rs | 4 | ||||
-rw-r--r-- | src/events.rs | 6 |
4 files changed, 9 insertions, 6 deletions
diff --git a/src/api/cocoa/mod.rs b/src/api/cocoa/mod.rs index a3c58f9..55ae617 100644 --- a/src/api/cocoa/mod.rs +++ b/src/api/cocoa/mod.rs @@ -275,7 +275,7 @@ impl<'a> Iterator for PollEventsIterator<'a> { self.window.delegate.state.pending_events.lock().unwrap().extend(events.into_iter()); event }, - NSScrollWheel => { Some(MouseWheel(event.scrollingDeltaY() as i32)) }, + NSScrollWheel => { Some(MouseWheel(event.scrollingDeltaX() as f64, event.scrollingDeltaY() as f64)) }, _ => { None }, }; diff --git a/src/api/win32/callback.rs b/src/api/win32/callback.rs index e852eeb..1ea95a5 100644 --- a/src/api/win32/callback.rs +++ b/src/api/win32/callback.rs @@ -114,8 +114,9 @@ pub unsafe extern "system" fn callback(window: winapi::HWND, msg: winapi::UINT, let value = (wparam >> 16) as i16; let value = value as i32; + let value = value as f64 / winapi::WHEEL_DELTA as f64; - send_event(window, MouseWheel(value)); + send_event(window, MouseWheel(0.0, value)); 0 }, diff --git a/src/api/x11/mod.rs b/src/api/x11/mod.rs index 9946243..7d7c048 100644 --- a/src/api/x11/mod.rs +++ b/src/api/x11/mod.rs @@ -241,11 +241,11 @@ impl<'a> Iterator for PollEventsIterator<'a> { ffi::Button2 => Some(Middle), ffi::Button3 => Some(Right), ffi::Button4 => { - self.window.pending_events.lock().unwrap().push_back(MouseWheel(1)); + self.window.pending_events.lock().unwrap().push_back(MouseWheel(0.0, 1.0)); None } ffi::Button5 => { - self.window.pending_events.lock().unwrap().push_back(MouseWheel(-1)); + self.window.pending_events.lock().unwrap().push_back(MouseWheel(0.0, -1.0)); None } _ => None diff --git a/src/events.rs b/src/events.rs index 957e0c3..7962706 100644 --- a/src/events.rs +++ b/src/events.rs @@ -25,9 +25,11 @@ pub enum Event { /// The parameter are the (x,y) coords in pixels relative to the top-left corner of the window. MouseMoved((i32, i32)), + /// Returns the horizontal and vertical mouse scrolling. + /// /// A positive value indicates that the wheel was rotated forward, away from the user; - /// a negative value indicates that the wheel was rotated backward, toward the user. - MouseWheel(i32), + /// a negative value indicates that the wheel was rotated backward, toward the user. + MouseWheel(f64, f64), /// An event from the mouse has been received. MouseInput(ElementState, MouseButton), |