Chromium Code Reviews| Index: services/ui/ws/event_dispatcher.h |
| diff --git a/services/ui/ws/event_dispatcher.h b/services/ui/ws/event_dispatcher.h |
| index 1da07968bb4ba5868c01f88531e4509debdce0fd..a99a13d2d4ee546936e85fa8a6f6d0cf04178b05 100644 |
| --- a/services/ui/ws/event_dispatcher.h |
| +++ b/services/ui/ws/event_dispatcher.h |
| @@ -62,8 +62,10 @@ class EventDispatcher : public ServerWindowObserver, |
| // any events to the delegate. |
| void Reset(); |
| + const EventTargeter* event_targeter() const { return event_targeter_.get(); } |
|
sky
2017/06/02 23:28:20
EventTargeter is an implementation detail of Event
riajiang
2017/06/05 23:56:15
True, done.
|
| + |
| void SetMousePointerDisplayLocation(const gfx::Point& display_location, |
| - const int64_t display_id); |
| + int64_t display_id); |
| const gfx::Point& mouse_pointer_last_location() const { |
| return mouse_pointer_last_location_; |
| } |
| @@ -147,19 +149,33 @@ class EventDispatcher : public ServerWindowObserver, |
| // ANY and there is a matching accelerator with PRE_TARGET found, than only |
| // OnAccelerator() is called. The expectation is after the PRE_TARGET has been |
| // handled this is again called with an AcceleratorMatchPhase of POST_ONLY. |
| + // This may be asynchronous if we need to find the target window for |event| |
| + // asynchronously. |
| void ProcessEvent(const ui::Event& event, |
| - const int64_t display_id, |
| + int64_t display_id, |
| AcceleratorMatchPhase match_phase); |
| // EventTargeterDelegate: |
| ServerWindow* GetRootWindowContaining(gfx::Point* location_in_display, |
| int64_t* display_id) override; |
| + void ProcessNextEventFromQueue() override; |
| private: |
| friend class test::EventDispatcherTestApi; |
| void SetMouseCursorSourceWindow(ServerWindow* window); |
| + // Called after we found the target for the current mouse cursor to see if |
| + // |mouse_pointer_last_location_| and |mouse_pointer_display_id_| need to be |
| + // updated based on the new target we found. No need to call delegate's |
| + // OnMouseCursorLocationChanged since mouse location is the same in |
| + // screen-coord. |
| + // TODO(riajiang): No need to update mouse location after ozone drm can tell |
| + // us the right display the cursor is on for drag-n-drop events. |
| + // crbug.com/726470 |
| + void SetMousePointerLocation(const gfx::Point& new_mouse_location, |
| + int64_t new_mouse_display_id); |
| + |
| void ProcessKeyEvent(const ui::KeyEvent& event, |
| AcceleratorMatchPhase match_phase); |
| @@ -176,7 +192,24 @@ class EventDispatcher : public ServerWindowObserver, |
| // when no buttons on the mouse are down. |
| // This also generates exit events as appropriate. For example, if the mouse |
| // moves between one window to another an exit is generated on the first. |
| - void ProcessPointerEvent(const ui::PointerEvent& event); |
| + // |pointer_target| is the PointerTarget for |event| based on the |
| + // |deepest_window|, the deepest visible window for the root_location |
| + // of the |event|. |location_in_display| and |display_id| are updated values |
| + // for root_location and |event_display_id_| (e.g. during drag-n-drop). |
| + void ProcessPointerEventOnFoundTarget(const ui::PointerEvent& event, |
| + const PointerTarget& pointer_target, |
| + const DeepestWindow& deepest_window, |
| + const gfx::Point& location_in_display, |
| + int64_t display_id); |
| + |
| + void UpdateNonClientAreaForCurrentWindowOnFoundWindow( |
| + const DeepestWindow& deepest_window, |
| + const gfx::Point& location_in_display, |
| + int64_t display_id); |
| + void UpdateCursorProviderByLastKnownLocationOnFoundWindow( |
| + const DeepestWindow& deepest_window, |
| + const gfx::Point& location_in_display, |
| + int64_t display_id); |
| // Adds |pointer_target| to |pointer_targets_|. |
| void StartTrackingPointer(int32_t pointer_id, |
| @@ -189,7 +222,8 @@ class EventDispatcher : public ServerWindowObserver, |
| // pointer sends the appropriate event to the delegate and updates the |
| // currently tracked PointerTarget appropriately. |
| void UpdateTargetForPointer(int32_t pointer_id, |
| - const ui::LocatedEvent& event); |
| + const ui::PointerEvent& event, |
| + const PointerTarget& pointer_target); |
| // Returns true if any pointers are in the pressed/down state. |
| bool AreAnyPointersDown() const; |