| // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #include "ui/aura/client/default_capture_client.h" |
| |
| #include "ui/aura/root_window.h" |
| #include "ui/aura/window.h" |
| |
| namespace aura { |
| namespace client { |
| |
| DefaultCaptureClient::DefaultCaptureClient(Window* root_window) |
| : root_window_(root_window), |
| capture_window_(NULL) { |
| SetCaptureClient(root_window_, this); |
| } |
| |
| DefaultCaptureClient::~DefaultCaptureClient() { |
| SetCaptureClient(root_window_, NULL); |
| } |
| |
| void DefaultCaptureClient::SetCapture(Window* window) { |
| if (capture_window_ == window) |
| return; |
| if (window) { |
| ui::GestureRecognizer::Get()->TransferEventsTo( |
| capture_window_, window); |
| } |
| |
| Window* old_capture_window = capture_window_; |
| capture_window_ = window; |
| |
| CaptureDelegate* capture_delegate = root_window_->GetDispatcher(); |
| if (capture_window_) |
| capture_delegate->SetNativeCapture(); |
| else |
| capture_delegate->ReleaseNativeCapture(); |
| |
| capture_delegate->UpdateCapture(old_capture_window, capture_window_); |
| } |
| |
| void DefaultCaptureClient::ReleaseCapture(Window* window) { |
| if (capture_window_ != window) |
| return; |
| SetCapture(NULL); |
| } |
| |
| Window* DefaultCaptureClient::GetCaptureWindow() { |
| return capture_window_; |
| } |
| |
| Window* DefaultCaptureClient::GetGlobalCaptureWindow() { |
| return capture_window_; |
| } |
| |
| } // namespace client |
| } // namespace aura |