@@ -260,13 +260,22 @@ impl Window {
260260 Event :: Resized ( width, height) => {
261261 self . event_queue . borrow_mut ( ) . push ( WindowEvent :: Resize ( Size2D :: typed ( width, height) ) ) ;
262262 }
263- Event :: MouseInput ( element_state, mouse_button, _) => {
264- // FIXME(#11130, pcwalton): The third field should be used.
263+ Event :: MouseInput ( element_state, mouse_button, pos) => {
265264 if mouse_button == MouseButton :: Left ||
266- mouse_button == MouseButton :: Right {
267- let mouse_pos = self . mouse_pos . get ( ) ;
268- self . handle_mouse ( mouse_button, element_state, mouse_pos. x , mouse_pos. y ) ;
269- }
265+ mouse_button == MouseButton :: Right {
266+ match pos {
267+ Some ( ( x, y) ) => {
268+ self . mouse_pos . set ( Point2D :: new ( x, y) ) ;
269+ self . event_queue . borrow_mut ( ) . push (
270+ WindowEvent :: MouseWindowMoveEventClass ( Point2D :: typed ( x as f32 , y as f32 ) ) ) ;
271+ self . handle_mouse ( mouse_button, element_state, x, y) ;
272+ }
273+ None => {
274+ let mouse_pos = self . mouse_pos . get ( ) ;
275+ self . handle_mouse ( mouse_button, element_state, mouse_pos. x , mouse_pos. y ) ;
276+ }
277+ }
278+ }
270279 }
271280 Event :: MouseMoved ( x, y) => {
272281 self . mouse_pos . set ( Point2D :: new ( x, y) ) ;
0 commit comments