default_capture_client.cc revision 5821806d5e7f356e8fa4b058a389a808ea183019
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 root_window_->gesture_recognizer()->TransferEventsTo(capture_window_, window); 26 27 Window* old_capture_window = capture_window_; 28 capture_window_ = window; 29 30 if (capture_window_) 31 root_window_->SetNativeCapture(); 32 else 33 root_window_->ReleaseNativeCapture(); 34 35 root_window_->UpdateCapture(old_capture_window, capture_window_); 36} 37 38void DefaultCaptureClient::ReleaseCapture(Window* window) { 39 if (capture_window_ != window) 40 return; 41 SetCapture(NULL); 42} 43 44Window* DefaultCaptureClient::GetCaptureWindow() { 45 return capture_window_; 46} 47 48} // namespace client 49} // namespace aura 50