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 10namespace aura { 11class Window; 12 13namespace client { 14 15// An interface implemented by an object that manages input capture. 16class 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: 35 virtual ~CaptureClient() {} 36}; 37 38// Sets/Gets the capture client on the root Window. 39AURA_EXPORT void SetCaptureClient(Window* root_window, 40 CaptureClient* client); 41AURA_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. 45AURA_EXPORT Window* GetCaptureWindow(Window* window); 46 47} // namespace clients 48} // namespace aura 49 50#endif // UI_AURA_CLIENT_CAPTURE_CLIENT_H_ 51