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