mirror of
https://github.com/servo/servo.git
synced 2025-07-22 14:53:49 +01:00
Fix mouse button handling
This commit is contained in:
parent
7df1849e89
commit
e15bc7516c
3 changed files with 16 additions and 6 deletions
|
@ -896,7 +896,7 @@ impl<Window: WindowMethods + ?Sized> IOCompositor<Window> {
|
|||
result.point_in_viewport.to_untyped(),
|
||||
Some(UntrustedNodeAddress(result.tag.0 as *const c_void)),
|
||||
Some(result.point_relative_to_item.to_untyped()),
|
||||
MouseButton::Left as u16,
|
||||
button as u16,
|
||||
);
|
||||
|
||||
let pipeline_id = PipelineId::from_webrender(result.pipeline);
|
||||
|
|
|
@ -1188,7 +1188,7 @@ impl Document {
|
|||
pub fn handle_mouse_event(
|
||||
&self,
|
||||
js_runtime: *mut JSRuntime,
|
||||
_button: MouseButton,
|
||||
button: MouseButton,
|
||||
client_point: Point2D<f32>,
|
||||
mouse_event_type: MouseEventType,
|
||||
node_address: Option<UntrustedNodeAddress>,
|
||||
|
@ -1244,7 +1244,11 @@ impl Document {
|
|||
false,
|
||||
false,
|
||||
false,
|
||||
0i16,
|
||||
match &button {
|
||||
MouseButton::Left => 0i16,
|
||||
MouseButton::Middle => 1i16,
|
||||
MouseButton::Right => 2i16,
|
||||
},
|
||||
pressed_mouse_buttons,
|
||||
None,
|
||||
point_in_node,
|
||||
|
|
|
@ -261,14 +261,20 @@ impl Window {
|
|||
use servo::script_traits::MouseButton;
|
||||
|
||||
let max_pixel_dist = 10.0 * self.servo_hidpi_factor().get();
|
||||
let mouse_button = match &button {
|
||||
winit::MouseButton::Left => MouseButton::Left,
|
||||
winit::MouseButton::Right => MouseButton::Right,
|
||||
winit::MouseButton::Middle => MouseButton::Middle,
|
||||
_ => MouseButton::Left,
|
||||
};
|
||||
let event = match action {
|
||||
ElementState::Pressed => {
|
||||
self.mouse_down_point.set(coords);
|
||||
self.mouse_down_button.set(Some(button));
|
||||
MouseWindowEvent::MouseDown(MouseButton::Left, coords.to_f32())
|
||||
MouseWindowEvent::MouseDown(mouse_button, coords.to_f32())
|
||||
},
|
||||
ElementState::Released => {
|
||||
let mouse_up_event = MouseWindowEvent::MouseUp(MouseButton::Left, coords.to_f32());
|
||||
let mouse_up_event = MouseWindowEvent::MouseUp(mouse_button, coords.to_f32());
|
||||
match self.mouse_down_button.get() {
|
||||
None => mouse_up_event,
|
||||
Some(but) if button == but => {
|
||||
|
@ -280,7 +286,7 @@ impl Window {
|
|||
self.event_queue
|
||||
.borrow_mut()
|
||||
.push(WindowEvent::MouseWindowEventClass(mouse_up_event));
|
||||
MouseWindowEvent::Click(MouseButton::Left, coords.to_f32())
|
||||
MouseWindowEvent::Click(mouse_button, coords.to_f32())
|
||||
} else {
|
||||
mouse_up_event
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue