Updating trunk VERSION from 2139.0 to 2140.0
[chromium-blink-merge.git] / ui / views / focus / widget_focus_manager.cc
blobd50d490d669d8651cc6c027831d14eb30a077f41
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"
9 namespace views {
11 // WidgetFocusManager ----------------------------------------------------------
13 // static
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();
50 } // namespace views