Home | History | Annotate | Download | only in widget
      1 // Copyright (c) 2012 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/widget/native_widget_aura_window_observer.h"
      6 
      7 #include "ui/aura/client/activation_client.h"
      8 #include "ui/aura/root_window.h"
      9 #include "ui/aura/window.h"
     10 
     11 namespace views {
     12 
     13 NativeWidgetAuraWindowObserver::NativeWidgetAuraWindowObserver(
     14     gfx::NativeView native_view,
     15     internal::NativeWidgetDelegate* delegate)
     16     : native_view_(native_view),
     17       delegate_(delegate) {
     18   native_view_->GetRootWindow()->AddObserver(this);
     19   native_view_->AddObserver(this);
     20   aura::client::GetActivationClient(native_view_->GetRootWindow())->
     21       AddObserver(this);
     22 }
     23 
     24 NativeWidgetAuraWindowObserver::~NativeWidgetAuraWindowObserver() {
     25   CleanUpObservers();
     26 }
     27 
     28 void NativeWidgetAuraWindowObserver::OnWindowActivated(
     29     aura::Window* gained_active,
     30     aura::Window* lost_active) {
     31   if (!gained_active || gained_active->transient_parent() != native_view_)
     32     delegate_->EnableInactiveRendering();
     33 }
     34 
     35 void NativeWidgetAuraWindowObserver::OnWindowRemovingFromRootWindow(
     36     aura::Window* window) {
     37   if (window != native_view_)
     38     return;
     39   CleanUpObservers();
     40 }
     41 
     42 void NativeWidgetAuraWindowObserver::CleanUpObservers() {
     43   if (!native_view_)
     44     return;
     45   native_view_->GetRootWindow()->RemoveObserver(this);
     46   native_view_->RemoveObserver(this);
     47   aura::client::GetActivationClient(native_view_->GetRootWindow())->
     48       RemoveObserver(this);
     49   native_view_ = NULL;
     50 }
     51 
     52 }  // namespace views
     53