Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(528)

Unified Diff: ash/wm/workspace/workspace_manager.h

Issue 11417150: Implement workspace scrubbing (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 8 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: ash/wm/workspace/workspace_manager.h
diff --git a/ash/wm/workspace/workspace_manager.h b/ash/wm/workspace/workspace_manager.h
index e59eada1c6ea9d7d1c4898926fc050fcfde8b101..a0df84ccd54615e537139b1bce5b9d79466d0b24 100644
--- a/ash/wm/workspace/workspace_manager.h
+++ b/ash/wm/workspace/workspace_manager.h
@@ -78,9 +78,24 @@ class ASH_EXPORT WorkspaceManager : public ash::ShellObserver {
// when a new Window is being added.
aura::Window* GetParentForNewWindow(aura::Window* window);
+ // Called by the workspace cycler to hide the currently active workspace.
+ // The currently active workspace is moved to |hidden_workspaces_|.
+ // Returns false if there are no workspaces which can be hidden. This will be
+ // the case if the desktop workspace is currently active.
+ bool CycleAwayFromCurrentlyActiveWorkspace();
sadrul 2012/11/23 20:02:07 Where does it cycle to?
+
+ // Called by the workspace cycler to activate the workspace in
+ // |hidden_workspaces_| which was most recently added. Activating the
+ // workspace moves it to |workspaces_|.
+ // Returns false if |hidden_workspaces| is empty.
+ bool CycleToNextHiddenWorkspace();
+
// Starts the animation that occurs on first login.
void DoInitialAnimation();
+ // Returns the window of the currently active workspace.
+ aura::Window* GetActiveWorkspaceWindow() const;
+
// ShellObserver overrides:
virtual void OnAppTerminating() OVERRIDE;
@@ -137,11 +152,11 @@ class ASH_EXPORT WorkspaceManager : public ash::ShellObserver {
// Moves all the non-maximized child windows of |workspace| to the desktop
// stacked beneath |stack_beneath| (if non-NULL). After moving child windows
- // if |workspace| contains no children it is deleted, otherwise it it moved to
- // |pending_workspaces_|.
- void MoveWorkspaceToPendingOrDelete(Workspace* workspace,
- aura::Window* stack_beneath,
- SwitchReason reason);
+ // if |workspace| contains no children it is deleted. Otherwise, it is moved
+ // to |hidden_workspaces_|.
+ void MoveWorkspaceToHiddenOrDelete(Workspace* workspace,
+ aura::Window* stack_beneath,
+ SwitchReason reason);
// Moves the children of |window| to the desktop. This excludes certain
// windows. If |stack_beneath| is non-NULL the windows are stacked beneath it.
@@ -207,11 +222,14 @@ class ASH_EXPORT WorkspaceManager : public ash::ShellObserver {
// which identifies the desktop.
Workspaces workspaces_;
- // The set of workspaces not currently active. Workspaces ended up here in
- // two scenarios:
- // . Prior to adding a window a new worskpace is created for it. The
- // Workspace is added to this set.
- // . When the maximized window is minimized the workspace is added here.
+ // List of inactive workspaces which were deactivated as a result of a user
+ // action. Workspaces are moved here from |workspaces_| when the workspace's
+ // maximized window is minimized or hidden. The workspace is moved back to
+ // |workspaces_| when one of its windows is activated.
+ Workspaces hidden_workspaces_;
+
+ // Set of workspaces that have never been activated. Workspaces for new
+ // windows prior to those windows being activated are added to this set.
// Once any window in the workspace is activated the workspace is moved to
// |workspaces_|.
std::set<Workspace*> pending_workspaces_;
@@ -219,10 +237,10 @@ class ASH_EXPORT WorkspaceManager : public ash::ShellObserver {
// Owned by the Shell. May be NULL.
ShelfLayoutManager* shelf_;
- // Whether or not we're in MoveWorkspaceToPendingOrDelete(). As
- // MoveWorkspaceToPendingOrDelete() may trigger another call to
- // MoveWorkspaceToPendingOrDelete() we use this to avoid doing anything if
- // already in MoveWorkspaceToPendingOrDelete().
+ // Whether or not we're in MoveWorkspaceToHiddenOrDelete(). As
+ // MoveWorkspaceToHiddenOrDelete() may trigger another call to
+ // MoveWorkspaceToHiddenOrDelete() we use this to avoid doing anything if
+ // already in MoveWorkspaceToHiddenOrDelete().
bool in_move_;
// Ideally we would delete workspaces when not needed. Unfortunately doing so

Powered by Google App Engine
This is Rietveld 408576698