summaryrefslogtreecommitdiffstats
path: root/ash/wm/property_util.cc
diff options
context:
space:
mode:
authoroshima@chromium.org <oshima@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-07-18 16:40:06 +0000
committeroshima@chromium.org <oshima@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-07-18 16:40:06 +0000
commit8d625fbd16a1d20f5e34bd01b83b0402bd3b4c80 (patch)
tree4fd429027e6fe44e79e8395ae63d6542d7edf657 /ash/wm/property_util.cc
parent87cc09add3a1a9ef94aaec1865fc3aaa23720aaa (diff)
downloadchromium_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.cc22
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);
}