aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ports/glutin/window.rs21
1 files changed, 15 insertions, 6 deletions
diff --git a/ports/glutin/window.rs b/ports/glutin/window.rs
index 22f9664fcb2..a6efae6aab4 100644
--- a/ports/glutin/window.rs
+++ b/ports/glutin/window.rs
@@ -260,13 +260,22 @@ impl Window {
Event::Resized(width, height) => {
self.event_queue.borrow_mut().push(WindowEvent::Resize(Size2D::typed(width, height)));
}
- Event::MouseInput(element_state, mouse_button, _) => {
- // FIXME(#11130, pcwalton): The third field should be used.
+ Event::MouseInput(element_state, mouse_button, pos) => {
if mouse_button == MouseButton::Left ||
- mouse_button == MouseButton::Right {
- let mouse_pos = self.mouse_pos.get();
- self.handle_mouse(mouse_button, element_state, mouse_pos.x, mouse_pos.y);
- }
+ mouse_button == MouseButton::Right {
+ match pos {
+ Some((x, y)) => {
+ self.mouse_pos.set(Point2D::new(x, y));
+ self.event_queue.borrow_mut().push(
+ WindowEvent::MouseWindowMoveEventClass(Point2D::typed(x as f32, y as f32)));
+ self.handle_mouse(mouse_button, element_state, x, y);
+ }
+ None => {
+ let mouse_pos = self.mouse_pos.get();
+ self.handle_mouse(mouse_button, element_state, mouse_pos.x, mouse_pos.y);
+ }
+ }
+ }
}
Event::MouseMoved(x, y) => {
self.mouse_pos.set(Point2D::new(x, y));