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