// Copyright (c) 2011 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. #include "ui/views/focus/widget_focus_manager.h" #include "base/memory/singleton.h" namespace views { // WidgetFocusManager ---------------------------------------------------------- // static WidgetFocusManager* WidgetFocusManager::GetInstance() { return Singleton<WidgetFocusManager>::get(); } void WidgetFocusManager::AddFocusChangeListener( WidgetFocusChangeListener* listener) { focus_change_listeners_.AddObserver(listener); } void WidgetFocusManager::RemoveFocusChangeListener( WidgetFocusChangeListener* listener) { focus_change_listeners_.RemoveObserver(listener); } void WidgetFocusManager::OnWidgetFocusEvent(gfx::NativeView focused_before, gfx::NativeView focused_now) { if (enabled_ && focused_before != focused_now) { FOR_EACH_OBSERVER(WidgetFocusChangeListener, focus_change_listeners_, OnNativeFocusChange(focused_before, focused_now)); } } WidgetFocusManager::WidgetFocusManager() : enabled_(true) {} WidgetFocusManager::~WidgetFocusManager() {} // AutoNativeNotificationDisabler ---------------------------------------------- AutoNativeNotificationDisabler::AutoNativeNotificationDisabler() { WidgetFocusManager::GetInstance()->DisableNotifications(); } AutoNativeNotificationDisabler::~AutoNativeNotificationDisabler() { WidgetFocusManager::GetInstance()->EnableNotifications(); } } // namespace views