diff options
-rw-r--r-- | ports/glutin/window.rs | 21 |
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)); |