diff options
author | oshima@chromium.org <oshima@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-07-18 16:40:06 +0000 |
---|---|---|
committer | oshima@chromium.org <oshima@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-07-18 16:40:06 +0000 |
commit | 8d625fbd16a1d20f5e34bd01b83b0402bd3b4c80 (patch) | |
tree | 4fd429027e6fe44e79e8395ae63d6542d7edf657 /ash/wm/property_util.cc | |
parent | 87cc09add3a1a9ef94aaec1865fc3aaa23720aaa (diff) | |
download | chromium_src-8d625fbd16a1d20f5e34bd01b83b0402bd3b4c80.zip chromium_src-8d625fbd16a1d20f5e34bd01b83b0402bd3b4c80.tar.gz chromium_src-8d625fbd16a1d20f5e34bd01b83b0402bd3b4c80.tar.bz2 |
* Use Virtual Screen Coordinates in more places
- When setting widget bounds.
- Workspace Manager
- When resizing
- Restore bounds
* Refactored ScreenPositionClient to manage Screen coordinates for different configurations.
* Renamed GetBounds/SetBounds methods to GetScreen/ParentBounds to make it clear that in which coordinates you're dealing with.
* I used InScreen/InParent for RestoreBounds because RestoreParent/ScreenBounds sounds strange.
Converted Linux/Aura to use ScreenPositionClient.
BUG=123160
TEST=several tests are updated to match VSC. added screen_ash_unittests. I'll update rest of tests when this is enable by default.
Review URL: https://chromiumcodereview.appspot.com/10696023
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@147250 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'ash/wm/property_util.cc')
-rw-r--r-- | ash/wm/property_util.cc | 22 |
1 files changed, 18 insertions, 4 deletions
diff --git a/ash/wm/property_util.cc b/ash/wm/property_util.cc index a51d298..8453ce3 100644 --- a/ash/wm/property_util.cc +++ b/ash/wm/property_util.cc @@ -5,6 +5,7 @@ #include "ash/wm/property_util.h" #include "ash/ash_export.h" +#include "ash/screen_ash.h" #include "ash/wm/window_properties.h" #include "ash/wm/window_util.h" #include "ui/aura/client/aura_constants.h" @@ -18,19 +19,32 @@ namespace { bool g_default_windows_persist_across_all_workspaces = false; } // namespace -void SetRestoreBounds(aura::Window* window, const gfx::Rect& bounds) { +void SetRestoreBoundsInScreen(aura::Window* window, const gfx::Rect& bounds) { window->SetProperty(aura::client::kRestoreBoundsKey, new gfx::Rect(bounds)); } +void SetRestoreBoundsInParent(aura::Window* window, const gfx::Rect& bounds) { + window->SetProperty( + aura::client::kRestoreBoundsKey, + new gfx::Rect(ScreenAsh::ConvertRectToScreen(window->parent(), bounds))); +} + void SetRestoreBoundsIfNotSet(aura::Window* window) { - if (!GetRestoreBounds(window)) - SetRestoreBounds(window, window->bounds()); + if (!GetRestoreBoundsInScreen(window)) + SetRestoreBoundsInParent(window, window->bounds()); } -const gfx::Rect* GetRestoreBounds(aura::Window* window) { +const gfx::Rect* GetRestoreBoundsInScreen(aura::Window* window) { return window->GetProperty(aura::client::kRestoreBoundsKey); } +gfx::Rect GetRestoreBoundsInParent(aura::Window* window) { + const gfx::Rect* rect = window->GetProperty(aura::client::kRestoreBoundsKey); + if (!rect) + return gfx::Rect(); + return ScreenAsh::ConvertRectFromScreen(window->parent(), *rect); +} + void ClearRestoreBounds(aura::Window* window) { window->ClearProperty(aura::client::kRestoreBoundsKey); } |