// 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_WM_PUBLIC_ACTIVATION_CHANGE_OBSERVER_H_ #define UI_WM_PUBLIC_ACTIVATION_CHANGE_OBSERVER_H_ #include "ui/aura/aura_export.h" namespace aura { class Window; namespace client { class AURA_EXPORT ActivationChangeObserver { public: // The reason or cause of a window activation change. enum class ActivationReason { // When a window is activated due to a call to the ActivationClient API. ACTIVATION_CLIENT, // When a user clicks or taps a window in the 2-dimensional screen space. INPUT_EVENT, // When a new window is activated as a side effect of a window // disposition changing. WINDOW_DISPOSITION_CHANGED, }; // Called when |gained_active| gains focus, or there is no active window // (|gained_active| is NULL in this case.) |lost_active| refers to the // previous active window or NULL if there was no previously active // window. |reason| specifies the cause of the activation change. virtual void OnWindowActivated(ActivationReason reason, Window* gained_active, Window* lost_active) = 0; // Called when during window activation the currently active window is // selected for activation. This can happen when a window requested for // activation cannot be activated because a system modal window is active. virtual void OnAttemptToReactivateWindow(aura::Window* request_active, aura::Window* actual_active) {} protected: virtual ~ActivationChangeObserver() {} }; // Gets/Sets the ActivationChangeObserver for a specific window. This observer // is notified after the ActivationClient notifies all registered observers. AURA_EXPORT void SetActivationChangeObserver( Window* window, ActivationChangeObserver* observer); AURA_EXPORT ActivationChangeObserver* GetActivationChangeObserver( Window* window); } // namespace client } // namespace aura #endif // UI_WM_PUBLIC_ACTIVATION_CHANGE_OBSERVER_H_