Commit 4ef853de authored by James Cook's avatar James Cook Committed by Commit Bot

cros: Fix Widget::GetWindowBoundsInScreen under mus

This is needed to get the touch hud application running out-of-process.
GetWindowBoundsInScreen was returning root-window coordinates, not
screen coordinates.

Bug: 840380
Test: added to views_mus_unittest
Change-Id: I1364d17a6eb87a748e50c5367dcf9164c25b5274
Reviewed-on: https://chromium-review.googlesource.com/1058320Reviewed-by: default avatarScott Violet <sky@chromium.org>
Commit-Queue: James Cook <jamescook@chromium.org>
Cr-Commit-Position: refs/heads/master@{#558752}
parent dcf44780
...@@ -513,7 +513,11 @@ void DesktopWindowTreeHostMus::GetWindowPlacement( ...@@ -513,7 +513,11 @@ void DesktopWindowTreeHostMus::GetWindowPlacement(
} }
gfx::Rect DesktopWindowTreeHostMus::GetWindowBoundsInScreen() const { gfx::Rect DesktopWindowTreeHostMus::GetWindowBoundsInScreen() const {
return gfx::ConvertRectToDIP(GetScaleFactor(), GetBoundsInPixels()); gfx::Point display_origin = GetDisplay().bounds().origin();
gfx::Rect bounds_in_dip =
gfx::ConvertRectToDIP(GetScaleFactor(), GetBoundsInPixels());
bounds_in_dip.Offset(display_origin.x(), display_origin.y());
return bounds_in_dip;
} }
gfx::Rect DesktopWindowTreeHostMus::GetClientAreaBoundsInScreen() const { gfx::Rect DesktopWindowTreeHostMus::GetClientAreaBoundsInScreen() const {
......
...@@ -23,6 +23,7 @@ ...@@ -23,6 +23,7 @@
#include "ui/events/base_event_utils.h" #include "ui/events/base_event_utils.h"
#include "ui/events/event.h" #include "ui/events/event.h"
#include "ui/views/mus/mus_client.h" #include "ui/views/mus/mus_client.h"
#include "ui/views/mus/screen_mus.h"
#include "ui/views/test/views_test_base.h" #include "ui/views/test/views_test_base.h"
#include "ui/views/widget/widget.h" #include "ui/views/widget/widget.h"
#include "ui/views/widget/widget_delegate.h" #include "ui/views/widget/widget_delegate.h"
...@@ -367,4 +368,32 @@ TEST_F(DesktopWindowTreeHostMusTest, CreateFullscreenWidget) { ...@@ -367,4 +368,32 @@ TEST_F(DesktopWindowTreeHostMusTest, CreateFullscreenWidget) {
} }
} }
TEST_F(DesktopWindowTreeHostMusTest, GetWindowBoundsInScreen) {
ScreenMus* screen = MusClient::Get()->screen();
// Add a second display to the right of the primary.
const int64_t kSecondDisplayId = 222;
screen->display_list().AddDisplay(
display::Display(kSecondDisplayId, gfx::Rect(800, 0, 640, 480)),
display::DisplayList::Type::NOT_PRIMARY);
// Verify bounds for a widget on the first display.
Widget widget1;
Widget::InitParams params1(Widget::InitParams::TYPE_WINDOW);
params1.ownership = Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET;
params1.bounds = gfx::Rect(0, 0, 100, 100);
widget1.Init(params1);
EXPECT_EQ(gfx::Rect(0, 0, 100, 100), widget1.GetWindowBoundsInScreen());
// Verify bounds for a widget on the secondary display.
Widget widget2;
Widget::InitParams params2(Widget::InitParams::TYPE_WINDOW);
params2.ownership = Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET;
params2.bounds = gfx::Rect(0, 0, 100, 100);
widget2.Init(params2);
aura::WindowTreeHostMus::ForWindow(widget2.GetNativeWindow())
->set_display_id(kSecondDisplayId);
EXPECT_EQ(gfx::Rect(800, 0, 100, 100), widget2.GetWindowBoundsInScreen());
}
} // namespace views } // namespace views
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment