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 #ifndef UI_AURA_CLIENT_CAPTURE_CLIENT_H_ 6 #define UI_AURA_CLIENT_CAPTURE_CLIENT_H_ 7 8 #include "ui/aura/aura_export.h" 9 10 namespace aura { 11 class Window; 12 13 namespace client { 14 15 // An interface implemented by an object that manages input capture. 16 class AURA_EXPORT CaptureClient { 17 public: 18 // Does a capture on the |window|. 19 virtual void SetCapture(Window* window) = 0; 20 21 // Releases a capture from the |window|. 22 virtual void ReleaseCapture(Window* window) = 0; 23 24 // Returns the current capture window. This may only return a Window if the 25 // Window that has capture is a child of the Window the CaptureClient is 26 // installed on. GetGlobalCaptureWindow() can be used to locate the Window 27 // that has capture regardless of the Window the CaptureClient is installed 28 // on. 29 virtual Window* GetCaptureWindow() = 0; 30 31 // See description of GetCaptureWindow() for details. 32 virtual Window* GetGlobalCaptureWindow() = 0; 33 34 protected: ~CaptureClient()35 virtual ~CaptureClient() {} 36 }; 37 38 // Sets/Gets the capture client on the root Window. 39 AURA_EXPORT void SetCaptureClient(Window* root_window, 40 CaptureClient* client); 41 AURA_EXPORT CaptureClient* GetCaptureClient(Window* root_window); 42 43 // A utility function to get the current capture window. Returns NULL 44 // if the window doesn't have a root window, or there is no capture window. 45 AURA_EXPORT Window* GetCaptureWindow(Window* window); 46 47 } // namespace clients 48 } // namespace aura 49 50 #endif // UI_AURA_CLIENT_CAPTURE_CLIENT_H_ 51