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 10 namespace aura { 11 namespace client { 12 DefaultCaptureClient(Window * root_window)13DefaultCaptureClient::DefaultCaptureClient(Window* root_window) 14 : root_window_(root_window), 15 capture_window_(NULL) { 16 SetCaptureClient(root_window_, this); 17 } 18 ~DefaultCaptureClient()19DefaultCaptureClient::~DefaultCaptureClient() { 20 SetCaptureClient(root_window_, NULL); 21 } 22 SetCapture(Window * window)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 ReleaseCapture(Window * window)43void DefaultCaptureClient::ReleaseCapture(Window* window) { 44 if (capture_window_ != window) 45 return; 46 SetCapture(NULL); 47 } 48 GetCaptureWindow()49Window* DefaultCaptureClient::GetCaptureWindow() { 50 return capture_window_; 51 } 52 GetGlobalCaptureWindow()53Window* DefaultCaptureClient::GetGlobalCaptureWindow() { 54 return capture_window_; 55 } 56 57 } // namespace client 58 } // namespace aura 59