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.
5 #include "ui/views/focus/widget_focus_manager.h"
7 #include "base/memory/singleton.h"
11 // WidgetFocusManager ----------------------------------------------------------
14 WidgetFocusManager
* WidgetFocusManager::GetInstance() {
15 return Singleton
<WidgetFocusManager
>::get();
18 void WidgetFocusManager::AddFocusChangeListener(
19 WidgetFocusChangeListener
* listener
) {
20 focus_change_listeners_
.AddObserver(listener
);
23 void WidgetFocusManager::RemoveFocusChangeListener(
24 WidgetFocusChangeListener
* listener
) {
25 focus_change_listeners_
.RemoveObserver(listener
);
28 void 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
));
36 WidgetFocusManager::WidgetFocusManager() : enabled_(true) {}
38 WidgetFocusManager::~WidgetFocusManager() {}
40 // AutoNativeNotificationDisabler ----------------------------------------------
42 AutoNativeNotificationDisabler::AutoNativeNotificationDisabler() {
43 WidgetFocusManager::GetInstance()->DisableNotifications();
46 AutoNativeNotificationDisabler::~AutoNativeNotificationDisabler() {
47 WidgetFocusManager::GetInstance()->EnableNotifications();