| // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #ifndef UI_AURA_CLIENT_EVENT_CLIENT_H_ |
| #define UI_AURA_CLIENT_EVENT_CLIENT_H_ |
| |
| #include "ui/aura/aura_export.h" |
| |
| namespace ui { |
| class EventTarget; |
| } |
| |
| namespace aura { |
| class Window; |
| namespace client { |
| |
| // An interface implemented by an object that alters event processing. |
| class AURA_EXPORT EventClient { |
| public: |
| // Returns true if events can be processed by |window| or any of its children. |
| virtual bool CanProcessEventsWithinSubtree(const Window* window) const = 0; |
| |
| // Returns the top level EventTarget for the current environment. |
| virtual ui::EventTarget* GetToplevelEventTarget() = 0; |
| |
| protected: |
| virtual ~EventClient() {} |
| }; |
| |
| // Sets/Gets the event client on the root Window. |
| AURA_EXPORT void SetEventClient(Window* root_window, EventClient* client); |
| AURA_EXPORT EventClient* GetEventClient(const Window* root_window); |
| |
| } // namespace clients |
| } // namespace aura |
| |
| #endif // UI_AURA_CLIENT_EVENT_CLIENT_H_ |