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 9 namespace views { 10 11 // WidgetFocusManager ---------------------------------------------------------- 12 13 // static GetInstance()14WidgetFocusManager* WidgetFocusManager::GetInstance() { 15 return Singleton<WidgetFocusManager>::get(); 16 } 17 AddFocusChangeListener(WidgetFocusChangeListener * listener)18void WidgetFocusManager::AddFocusChangeListener( 19 WidgetFocusChangeListener* listener) { 20 focus_change_listeners_.AddObserver(listener); 21 } 22 RemoveFocusChangeListener(WidgetFocusChangeListener * listener)23void WidgetFocusManager::RemoveFocusChangeListener( 24 WidgetFocusChangeListener* listener) { 25 focus_change_listeners_.RemoveObserver(listener); 26 } 27 OnWidgetFocusEvent(gfx::NativeView focused_before,gfx::NativeView focused_now)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 WidgetFocusManager()36WidgetFocusManager::WidgetFocusManager() : enabled_(true) {} 37 ~WidgetFocusManager()38WidgetFocusManager::~WidgetFocusManager() {} 39 40 // AutoNativeNotificationDisabler ---------------------------------------------- 41 AutoNativeNotificationDisabler()42AutoNativeNotificationDisabler::AutoNativeNotificationDisabler() { 43 WidgetFocusManager::GetInstance()->DisableNotifications(); 44 } 45 ~AutoNativeNotificationDisabler()46AutoNativeNotificationDisabler::~AutoNativeNotificationDisabler() { 47 WidgetFocusManager::GetInstance()->EnableNotifications(); 48 } 49 50 } // namespace views 51