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 namespace views { 8 9 // WidgetFocusManager ---------------------------------------------------------- 10 11 // static GetInstance()12WidgetFocusManager* WidgetFocusManager::GetInstance() { 13 static base::NoDestructor<WidgetFocusManager> instance; 14 return instance.get(); 15 } 16 17 WidgetFocusManager::~WidgetFocusManager() = default; 18 AddFocusChangeListener(WidgetFocusChangeListener * listener)19void WidgetFocusManager::AddFocusChangeListener( 20 WidgetFocusChangeListener* listener) { 21 focus_change_listeners_.AddObserver(listener); 22 } 23 RemoveFocusChangeListener(WidgetFocusChangeListener * listener)24void WidgetFocusManager::RemoveFocusChangeListener( 25 WidgetFocusChangeListener* listener) { 26 focus_change_listeners_.RemoveObserver(listener); 27 } 28 OnNativeFocusChanged(gfx::NativeView focused_now)29void WidgetFocusManager::OnNativeFocusChanged(gfx::NativeView focused_now) { 30 if (enabled_) { 31 for (WidgetFocusChangeListener& observer : focus_change_listeners_) 32 observer.OnNativeFocusChanged(focused_now); 33 } 34 } 35 36 WidgetFocusManager::WidgetFocusManager() = default; 37 38 // AutoNativeNotificationDisabler ---------------------------------------------- 39 AutoNativeNotificationDisabler()40AutoNativeNotificationDisabler::AutoNativeNotificationDisabler() { 41 WidgetFocusManager::GetInstance()->DisableNotifications(); 42 } 43 ~AutoNativeNotificationDisabler()44AutoNativeNotificationDisabler::~AutoNativeNotificationDisabler() { 45 WidgetFocusManager::GetInstance()->EnableNotifications(); 46 } 47 48 } // namespace views 49