1// Copyright (c) 2011 The Chromium Authors. All rights reserved. 2// Use of this source code is governed by a BSD-style license that can be 3// found in the LICENSE file. 4 5#include "ui/views/focus/widget_focus_manager.h" 6 7#include "base/memory/singleton.h" 8 9namespace views { 10 11// WidgetFocusManager ---------------------------------------------------------- 12 13// static 14WidgetFocusManager* WidgetFocusManager::GetInstance() { 15 return Singleton<WidgetFocusManager>::get(); 16} 17 18void WidgetFocusManager::AddFocusChangeListener( 19 WidgetFocusChangeListener* listener) { 20 focus_change_listeners_.AddObserver(listener); 21} 22 23void WidgetFocusManager::RemoveFocusChangeListener( 24 WidgetFocusChangeListener* listener) { 25 focus_change_listeners_.RemoveObserver(listener); 26} 27 28void WidgetFocusManager::OnWidgetFocusEvent(gfx::NativeView focused_before, 29 gfx::NativeView focused_now) { 30 if (enabled_ && focused_before != focused_now) { 31 FOR_EACH_OBSERVER(WidgetFocusChangeListener, focus_change_listeners_, 32 OnNativeFocusChange(focused_before, focused_now)); 33 } 34} 35 36WidgetFocusManager::WidgetFocusManager() : enabled_(true) {} 37 38WidgetFocusManager::~WidgetFocusManager() {} 39 40// AutoNativeNotificationDisabler ---------------------------------------------- 41 42AutoNativeNotificationDisabler::AutoNativeNotificationDisabler() { 43 WidgetFocusManager::GetInstance()->DisableNotifications(); 44} 45 46AutoNativeNotificationDisabler::~AutoNativeNotificationDisabler() { 47 WidgetFocusManager::GetInstance()->EnableNotifications(); 48} 49 50} // namespace views 51