Index: components/mus/ws/event_dispatcher.h |
diff --git a/components/mus/ws/event_dispatcher.h b/components/mus/ws/event_dispatcher.h |
index 81bf4a09a122d4b6b890e73a342de88e3c5e6176..f9bcdc3336aadfbacde8fbc15d6011731609a4d9 100644 |
--- a/components/mus/ws/event_dispatcher.h |
+++ b/components/mus/ws/event_dispatcher.h |
@@ -60,6 +60,15 @@ class EventDispatcher : public ServerWindowObserver { |
// (indicated by returning |false|). |
bool SetCaptureWindow(ServerWindow* capture_window, bool in_nonclient_area); |
+ ServerWindow* system_modal_window() { return system_modal_window_; } |
+ const ServerWindow* system_modal_window() const { |
+ return system_modal_window_; |
+ } |
+ |
+ // |window| cannot be nullptr. The only way to unset system modal window is by |
+ // destroying it. |
+ bool SetSystemModalWindow(ServerWindow* window); |
+ |
// Retrieves the ServerWindow of the last mouse move. |
ServerWindow* mouse_cursor_source_window() const { |
return mouse_cursor_source_window_; |
@@ -148,9 +157,11 @@ class EventDispatcher : public ServerWindowObserver { |
// way we continue to eat events until the up/cancel is received. |
void CancelPointerEventsToTarget(ServerWindow* window); |
- // Returns true if we're currently an observer for |window|. We are an |
- // observer for a window if any pointer events are targeting it. |
- bool IsObservingWindow(ServerWindow* window); |
+ // Used to observe a window. Can be called multiple times on a window. To |
+ // unobserve a window, UnobserveWindow() should be called the same number of |
+ // times. |
+ void ObserveWindow(ServerWindow* winodw); |
+ void UnobserveWindow(ServerWindow* winodw); |
// Returns an Accelerator bound to the specified code/flags, and of the |
// matching |phase|. Otherwise returns null. |
@@ -166,9 +177,12 @@ class EventDispatcher : public ServerWindowObserver { |
EventDispatcherDelegate* delegate_; |
ServerWindow* root_; |
- ServerWindow* capture_window_; |
+ ServerWindow* capture_window_; |
bool capture_window_in_nonclient_area_; |
+ |
+ ServerWindow* system_modal_window_; |
+ |
bool mouse_button_down_; |
ServerWindow* mouse_cursor_source_window_; |
@@ -188,6 +202,9 @@ class EventDispatcher : public ServerWindowObserver { |
// cancel or up. |
PointerIdToTargetMap pointer_targets_; |
+ // Keeps track of number of observe requests for observed windows. |
+ std::map<const ServerWindow*, uint8_t> observed_windows_; |
+ |
DISALLOW_COPY_AND_ASSIGN(EventDispatcher); |
}; |