summaryrefslogtreecommitdiffstats
path: root/ash/wm/property_util.cc
diff options
context:
space:
mode:
authorsky@chromium.org <sky@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-04-12 15:26:03 +0000
committersky@chromium.org <sky@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-04-12 15:26:03 +0000
commit24eea16cb849a85b22ff6460358ecfcfe4f81279 (patch)
treeb1b3a757edf28fb07ad78374c6926d94dc9f99d6 /ash/wm/property_util.cc
parent6a24fccd5c2e34a7522438a92cef6e7de41c2ec8 (diff)
downloadchromium_src-24eea16cb849a85b22ff6460358ecfcfe4f81279.zip
chromium_src-24eea16cb849a85b22ff6460358ecfcfe4f81279.tar.gz
chromium_src-24eea16cb849a85b22ff6460358ecfcfe4f81279.tar.bz2
Adds the ability for windows to persist across all workspaces. Chrome
makes the default that all windows persist across all workspaces and explicitly disables this for browsers. As part of this I promoted duplicated code from WorkspaceLayoutManager and AlwaysOnTopLayoutManager to BaseLayoutManager. BUG=122301,122390,121280,121784 TEST=see bugs, covered by unit tests too. R=ben@chromium.org Review URL: https://chromiumcodereview.appspot.com/10020061 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@131986 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'ash/wm/property_util.cc')
-rw-r--r--ash/wm/property_util.cc41
1 files changed, 37 insertions, 4 deletions
diff --git a/ash/wm/property_util.cc b/ash/wm/property_util.cc
index e412354..83082f6 100644
--- a/ash/wm/property_util.cc
+++ b/ash/wm/property_util.cc
@@ -12,12 +12,19 @@
#include "ui/gfx/rect.h"
DECLARE_WINDOW_PROPERTY_TYPE(bool)
+DECLARE_WINDOW_PROPERTY_TYPE(ash::WindowPersistsAcrossAllWorkspacesType)
namespace ash {
namespace {
-const aura::WindowProperty<bool> kWindowTrackedByWorkspaceSplitProp = {true};
+const aura::WindowProperty<bool> kWindowTrackedByWorkspaceProp = {true};
+
+const aura::WindowProperty<WindowPersistsAcrossAllWorkspacesType>
+ kWindowPersistsAcrossAllWorkspacesProp =
+ {WINDOW_PERSISTS_ACROSS_ALL_WORKSPACES_VALUE_DEFAULT};
+
+bool g_default_windows_persist_across_all_workspaces = false;
} // namespace
@@ -45,14 +52,40 @@ void ToggleMaximizedState(aura::Window* window) {
}
const aura::WindowProperty<bool>* const
- kWindowTrackedByWorkspaceSplitPropKey = &kWindowTrackedByWorkspaceSplitProp;
+ kWindowTrackedByWorkspacePropKey = &kWindowTrackedByWorkspaceProp;
+
+const aura::WindowProperty<WindowPersistsAcrossAllWorkspacesType>* const
+ kWindowPersistsAcrossAllWorkspacesPropKey =
+ &kWindowPersistsAcrossAllWorkspacesProp;
void SetTrackedByWorkspace(aura::Window* window, bool value) {
- window->SetProperty(kWindowTrackedByWorkspaceSplitPropKey, value);
+ window->SetProperty(kWindowTrackedByWorkspacePropKey, value);
}
bool GetTrackedByWorkspace(aura::Window* window) {
- return window->GetProperty(kWindowTrackedByWorkspaceSplitPropKey);
+ return window->GetProperty(kWindowTrackedByWorkspacePropKey);
+}
+
+void SetPersistsAcrossAllWorkspaces(
+ aura::Window* window,
+ WindowPersistsAcrossAllWorkspacesType type) {
+ window->SetProperty(kWindowPersistsAcrossAllWorkspacesPropKey, type);
+}
+
+bool GetPersistsAcrossAllWorkspaces(aura::Window* window) {
+ switch (window->GetProperty(kWindowPersistsAcrossAllWorkspacesPropKey)) {
+ case WINDOW_PERSISTS_ACROSS_ALL_WORKSPACES_VALUE_YES:
+ return true;
+ case WINDOW_PERSISTS_ACROSS_ALL_WORKSPACES_VALUE_NO:
+ return false;
+ case WINDOW_PERSISTS_ACROSS_ALL_WORKSPACES_VALUE_DEFAULT:
+ return g_default_windows_persist_across_all_workspaces;
+ }
+ return false;
+}
+
+void SetDefaultPersistsAcrossAllWorkspaces(bool value) {
+ g_default_windows_persist_across_all_workspaces = value;
}
}