diff options
-rw-r--r-- | components/compositing/compositor.rs | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/components/compositing/compositor.rs b/components/compositing/compositor.rs index 19cecbcf55d..2520f9235ab 100644 --- a/components/compositing/compositor.rs +++ b/components/compositing/compositor.rs @@ -1416,6 +1416,10 @@ impl<Window: WindowMethods + ?Sized> IOCompositor<Window> { } pub fn on_mouse_window_event_class(&mut self, mouse_window_event: MouseWindowEvent) { + if self.shutdown_state != ShutdownState::NotShuttingDown { + return; + } + if self.convert_mouse_to_touch { match mouse_window_event { MouseWindowEvent::Click(_, _) => {}, @@ -1513,6 +1517,10 @@ impl<Window: WindowMethods + ?Sized> IOCompositor<Window> { } pub fn on_mouse_window_move_event_class(&mut self, cursor: DevicePoint) { + if self.shutdown_state != ShutdownState::NotShuttingDown { + return; + } + if self.convert_mouse_to_touch { self.on_touch_move(TouchId(0), cursor); return; @@ -1571,6 +1579,10 @@ impl<Window: WindowMethods + ?Sized> IOCompositor<Window> { identifier: TouchId, location: DevicePoint, ) { + if self.shutdown_state != ShutdownState::NotShuttingDown { + return; + } + match event_type { TouchEventType::Down => self.on_touch_down(identifier, location), TouchEventType::Move => self.on_touch_move(identifier, location), @@ -1638,6 +1650,10 @@ impl<Window: WindowMethods + ?Sized> IOCompositor<Window> { } pub fn on_wheel_event(&mut self, delta: WheelDelta, p: DevicePoint) { + if self.shutdown_state != ShutdownState::NotShuttingDown { + return; + } + self.send_wheel_event(delta, p); } @@ -1647,6 +1663,10 @@ impl<Window: WindowMethods + ?Sized> IOCompositor<Window> { cursor: DeviceIntPoint, phase: TouchEventType, ) { + if self.shutdown_state != ShutdownState::NotShuttingDown { + return; + } + match phase { TouchEventType::Move => self.on_scroll_window_event(scroll_location, cursor), TouchEventType::Up | TouchEventType::Cancel => { @@ -1860,11 +1880,19 @@ impl<Window: WindowMethods + ?Sized> IOCompositor<Window> { } pub fn on_zoom_reset_window_event(&mut self) { + if self.shutdown_state != ShutdownState::NotShuttingDown { + return; + } + self.page_zoom = Scale::new(1.0); self.update_after_zoom_or_hidpi_change(); } pub fn on_zoom_window_event(&mut self, magnification: f32) { + if self.shutdown_state != ShutdownState::NotShuttingDown { + return; + } + self.page_zoom = Scale::new( (self.page_zoom.get() * magnification) .max(MIN_ZOOM) @@ -1887,6 +1915,10 @@ impl<Window: WindowMethods + ?Sized> IOCompositor<Window> { /// Simulate a pinch zoom pub fn on_pinch_zoom_window_event(&mut self, magnification: f32) { + if self.shutdown_state != ShutdownState::NotShuttingDown { + return; + } + // TODO: Scroll to keep the center in view? self.pending_scroll_zoom_events .push(ScrollZoomEvent::PinchZoom(magnification)); |