diff options
author | sky@chromium.org <sky@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-04-12 15:26:03 +0000 |
---|---|---|
committer | sky@chromium.org <sky@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-04-12 15:26:03 +0000 |
commit | 24eea16cb849a85b22ff6460358ecfcfe4f81279 (patch) | |
tree | b1b3a757edf28fb07ad78374c6926d94dc9f99d6 /ash/wm/property_util.cc | |
parent | 6a24fccd5c2e34a7522438a92cef6e7de41c2ec8 (diff) | |
download | chromium_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.cc | 41 |
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; } } |