default_capture_client.cc revision c2e0dbddbe15c98d52c4786dac06cb8952a8ae6d
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/root_window.h" 8 9namespace aura { 10namespace client { 11 12DefaultCaptureClient::DefaultCaptureClient(RootWindow* root_window) 13 : root_window_(root_window), 14 capture_window_(NULL) { 15 client::SetCaptureClient(root_window_, this); 16} 17 18DefaultCaptureClient::~DefaultCaptureClient() { 19 client::SetCaptureClient(root_window_, NULL); 20} 21 22void DefaultCaptureClient::SetCapture(Window* window) { 23 if (capture_window_ == window) 24 return; 25 if (window) 26 root_window_->gesture_recognizer()-> 27 TransferEventsTo(capture_window_, window); 28 29 Window* old_capture_window = capture_window_; 30 capture_window_ = window; 31 32 if (capture_window_) 33 root_window_->SetNativeCapture(); 34 else 35 root_window_->ReleaseNativeCapture(); 36 37 root_window_->UpdateCapture(old_capture_window, capture_window_); 38} 39 40void DefaultCaptureClient::ReleaseCapture(Window* window) { 41 if (capture_window_ != window) 42 return; 43 SetCapture(NULL); 44} 45 46Window* DefaultCaptureClient::GetCaptureWindow() { 47 return capture_window_; 48} 49 50} // namespace client 51} // namespace aura 52