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/aura/client/default_capture_client.h" 6 7#include "ui/aura/window.h" 8#include "ui/aura/window_event_dispatcher.h" 9#include "ui/aura/window_tree_host.h" 10 11namespace aura { 12namespace client { 13 14DefaultCaptureClient::DefaultCaptureClient(Window* root_window) 15 : root_window_(root_window), 16 capture_window_(NULL) { 17 SetCaptureClient(root_window_, this); 18} 19 20DefaultCaptureClient::~DefaultCaptureClient() { 21 SetCaptureClient(root_window_, NULL); 22} 23 24void DefaultCaptureClient::SetCapture(Window* window) { 25 if (capture_window_ == window) 26 return; 27 if (window) { 28 ui::GestureRecognizer::Get()->TransferEventsTo( 29 capture_window_, window); 30 } 31 32 Window* old_capture_window = capture_window_; 33 capture_window_ = window; 34 35 CaptureDelegate* capture_delegate = root_window_->GetHost()->dispatcher(); 36 if (capture_window_) 37 capture_delegate->SetNativeCapture(); 38 else 39 capture_delegate->ReleaseNativeCapture(); 40 41 capture_delegate->UpdateCapture(old_capture_window, capture_window_); 42} 43 44void DefaultCaptureClient::ReleaseCapture(Window* window) { 45 if (capture_window_ != window) 46 return; 47 SetCapture(NULL); 48} 49 50Window* DefaultCaptureClient::GetCaptureWindow() { 51 return capture_window_; 52} 53 54Window* DefaultCaptureClient::GetGlobalCaptureWindow() { 55 return capture_window_; 56} 57 58} // namespace client 59} // namespace aura 60