// 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_