From 6bcca8ebc5a30cfe46694120401f8f0abc8544f8 Mon Sep 17 00:00:00 2001 From: mrmiywj Date: Sun, 19 Jun 2016 16:15:25 +0800 Subject: [PATCH] when window gains focus, update mouse coordinate --- ports/glutin/window.rs | 21 +++++++++++++++------ 1 file 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));