Skip to content
This repository has been archived by the owner on Jul 10, 2023. It is now read-only.

return coordinates in MouseWheel events #109

Merged
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[package]
name = "servo-glutin"
version = "0.6.6"
version = "0.7.0"
authors = ["The glutin contributors, Pierre Krieger <pierre.krieger1708@gmail.com>"]
description = "Cross-platform OpenGL context provider."
keywords = ["windowing", "opengl"]
Expand Down
6 changes: 5 additions & 1 deletion src/api/cocoa/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -1136,7 +1136,11 @@ unsafe fn NSEventToEvent(window: &Window, nsevent: id) -> Option<Event> {
appkit::NSEventPhaseEnded => TouchPhase::Ended,
_ => TouchPhase::Moved,
};
Some(Event::MouseWheel(delta, phase))
let mouse_position = match phase {
TouchPhase::Started => Some(get_mouse_position(window, nsevent)),
_ => None
};
Some(Event::MouseWheel(delta, phase, mouse_position))
},
appkit::NSEventTypePressure => {
Some(Event::TouchpadPressure(nsevent.pressure(), nsevent.stage()))
Expand Down
3 changes: 2 additions & 1 deletion src/api/wayland/events.rs
Original file line number Diff line number Diff line change
Expand Up @@ -101,7 +101,8 @@ pub fn translate_event(
MouseScrollDelta::PixelDelta(0.0, amplitude as f32)
}
},
TouchPhase::Moved
TouchPhase::Moved,
None
), surface))
} else {
None
Expand Down
2 changes: 1 addition & 1 deletion src/api/win32/callback.rs
Original file line number Diff line number Diff line change
Expand Up @@ -140,7 +140,7 @@ pub unsafe extern "system" fn callback(window: winapi::HWND, msg: winapi::UINT,
let value = value as i32;
let value = value as f32 / winapi::WHEEL_DELTA as f32;

send_event(window, MouseWheel(LineDelta(0.0, value), TouchPhase::Moved));
send_event(window, MouseWheel(LineDelta(0.0, value), TouchPhase::Moved, None));

0
},
Expand Down
5 changes: 3 additions & 2 deletions src/api/x11/input.rs
Original file line number Diff line number Diff line change
Expand Up @@ -201,7 +201,7 @@ impl XInputEventHandler {
} else {
-1.0
};
Some(MouseWheel(LineDelta(0.0, delta), TouchPhase::Moved))
Some(MouseWheel(LineDelta(0.0, delta), TouchPhase::Moved, None))
} else {
// emulated button event from a touch/smooth-scroll
// event. Ignore these events and handle scrolling
Expand Down Expand Up @@ -236,7 +236,8 @@ impl XInputEventHandler {

if scroll_delta.0.abs() > 0.0 || scroll_delta.1.abs() > 0.0 {
Some(MouseWheel(LineDelta(scroll_delta.0 as f32, scroll_delta.1 as f32),
TouchPhase::Moved))
TouchPhase::Moved,
None))
} else {
let new_cursor_pos = (event_data.event_x, event_data.event_y);
if new_cursor_pos != self.current_state.cursor_pos {
Expand Down
2 changes: 1 addition & 1 deletion src/events.rs
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ pub enum Event {
MouseMoved(i32, i32),

/// A mouse wheel movement or touchpad scroll occurred.
MouseWheel(MouseScrollDelta, TouchPhase),
MouseWheel(MouseScrollDelta, TouchPhase, Option<(i32, i32)>),
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should I bump up a version, since this does change the public API? (used in Servo at https://github.com/servo/servo/blob/master/ports/glutin/window.rs#L19)

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes.


/// An event from the mouse has been received.
MouseInput(ElementState, MouseButton, Option<(i32, i32)>),
Copy link
Member Author

@gterzian gterzian Dec 31, 2016

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Would we want to create a MousePosition struct, to try to be more descriptive than the current Option<(i32, i32)> ?

That way we could have:

  • MouseInput(ElementState, MouseButton, Option<MousePosition>)
  • MouseWheel(MouseScrollDelta, TouchPhase, Option<MousePosition>)

Expand Down