blob: b4e9fa323fb1830296fc8144293f2e99e5002790 [file] [log] [blame]
// 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 "ash/ash_export.h"
#include "base/macros.h"
#include "ui/aura/client/screen_position_client.h"
namespace ash {
class ASH_EXPORT 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::PointF* point) override;
void ConvertPointFromScreen(const aura::Window* window,
gfx::PointF* 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_