Home | History | Annotate | Download | only in focus
      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
     14 WidgetFocusManager* WidgetFocusManager::GetInstance() {
     15   return Singleton<WidgetFocusManager>::get();
     16 }
     17 
     18 void WidgetFocusManager::AddFocusChangeListener(
     19     WidgetFocusChangeListener* listener) {
     20   focus_change_listeners_.AddObserver(listener);
     21 }
     22 
     23 void WidgetFocusManager::RemoveFocusChangeListener(
     24     WidgetFocusChangeListener* listener) {
     25   focus_change_listeners_.RemoveObserver(listener);
     26 }
     27 
     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));
     33   }
     34 }
     35 
     36 WidgetFocusManager::WidgetFocusManager() : enabled_(true) {}
     37 
     38 WidgetFocusManager::~WidgetFocusManager() {}
     39 
     40 // AutoNativeNotificationDisabler ----------------------------------------------
     41 
     42 AutoNativeNotificationDisabler::AutoNativeNotificationDisabler() {
     43   WidgetFocusManager::GetInstance()->DisableNotifications();
     44 }
     45 
     46 AutoNativeNotificationDisabler::~AutoNativeNotificationDisabler() {
     47   WidgetFocusManager::GetInstance()->EnableNotifications();
     48 }
     49 
     50 }  // namespace views
     51