| // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #ifndef ASH_DISPLAY_SCREEN_POSITION_CONTROLLER_H_ |
| #define ASH_DISPLAY_SCREEN_POSITION_CONTROLLER_H_ |
| |
| #include <vector> |
| |
| #include "base/macros.h" |
| #include "ui/aura/client/screen_position_client.h" |
| |
| namespace ash { |
| |
| class ScreenPositionController : public aura::client::ScreenPositionClient { |
| public: |
| // Finds the root window at |location| in |window|'s coordinates |
| // from given |root_windows| and returns the found root window and |
| // location in that root window's coordinates. The function usually |
| // returns |window->GetRootWindow()|, but if the mouse pointer is |
| // moved outside the |window|'s root while the mouse is captured, it |
| // returns the other root window. |
| static void ConvertHostPointToRelativeToRootWindow( |
| aura::Window* root_window, |
| const std::vector<aura::Window*>& root_windows, |
| gfx::Point* point_in_host, |
| aura::Window** target_window); |
| |
| ScreenPositionController() {} |
| ~ScreenPositionController() override {} |
| |
| // aura::client::ScreenPositionClient overrides: |
| void ConvertPointToScreen(const aura::Window* window, |
| gfx::Point* point) override; |
| void ConvertPointFromScreen(const aura::Window* window, |
| gfx::Point* point) override; |
| void ConvertHostPointToScreen(aura::Window* window, |
| gfx::Point* point) override; |
| void SetBounds(aura::Window* window, |
| const gfx::Rect& bounds, |
| const display::Display& display) override; |
| |
| private: |
| DISALLOW_COPY_AND_ASSIGN(ScreenPositionController); |
| }; |
| |
| } // namespace ash |
| |
| #endif // ASH_DISPLAY_SCREEN_POSITION_CONTROLLER_H_ |