added dispatching for mousedown and mouseup events, fixes #5705

This commit is contained in:
Peter 2015-04-16 10:41:02 -04:00
parent b0a7d1bf86
commit c069d1753e
4 changed files with 79 additions and 31 deletions

View file

@ -237,21 +237,22 @@ impl Window {
MouseWindowEvent::MouseDown(MouseButton::Left, TypedPoint2D(x as f32, y as f32))
}
ElementState::Released => {
let mouse_up_event = MouseWindowEvent::MouseUp(MouseButton::Left, TypedPoint2D(x as f32, y as f32));
match self.mouse_down_button.get() {
None => (),
None => mouse_up_event,
Some(but) if button == but => {
let pixel_dist = self.mouse_down_point.get() - Point2D(x, y);
let pixel_dist = ((pixel_dist.x * pixel_dist.x +
pixel_dist.y * pixel_dist.y) as f64).sqrt();
if pixel_dist < max_pixel_dist {
let click_event = MouseWindowEvent::Click(
MouseButton::Left, TypedPoint2D(x as f32, y as f32));
self.event_queue.borrow_mut().push(WindowEvent::MouseWindowEventClass(click_event));
self.event_queue.borrow_mut().push(WindowEvent::MouseWindowEventClass(mouse_up_event));
MouseWindowEvent::Click(MouseButton::Left, TypedPoint2D(x as f32, y as f32))
} else {
mouse_up_event
}
}
Some(_) => (),
},
Some(_) => mouse_up_event,
}
MouseWindowEvent::MouseUp(MouseButton::Left, TypedPoint2D(x as f32, y as f32))
}
};
self.event_queue.borrow_mut().push(WindowEvent::MouseWindowEventClass(event));