// Copyright (c) 2012 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef ASH_WM_PROPERTY_UTIL_H_ #define ASH_WM_PROPERTY_UTIL_H_ #include "ash/ash_export.h" namespace aura { class RootWindow; class Window; } namespace gfx { class Rect; } namespace ash { namespace internal { class RootWindowController; } // Sets the restore bounds property on |window| in the virtual screen // coordinates. Deletes existing bounds value if exists. ASH_EXPORT void SetRestoreBoundsInScreen(aura::Window* window, const gfx::Rect& screen_bounds); // Same as |SetRestoreBoundsInScreen| except that the bounds is in the // parent's coordinates. ASH_EXPORT void SetRestoreBoundsInParent(aura::Window* window, const gfx::Rect& parent_bounds); // Returns the restore bounds property on |window| in the virtual screen // coordinates. The bounds can be NULL if the bounds property does not // exist for |window|. |window| owns the bounds object. ASH_EXPORT const gfx::Rect* GetRestoreBoundsInScreen(aura::Window* window); // Same as |GetRestoreBoundsInScreen| except that it returns the // bounds in the parent's coordinates. ASH_EXPORT gfx::Rect GetRestoreBoundsInParent(aura::Window* window); // Deletes and clears the restore bounds property on |window|. ASH_EXPORT void ClearRestoreBounds(aura::Window* window); enum WindowPersistsAcrossAllWorkspacesType { WINDOW_PERSISTS_ACROSS_ALL_WORKSPACES_VALUE_DEFAULT, WINDOW_PERSISTS_ACROSS_ALL_WORKSPACES_VALUE_NO, WINDOW_PERSISTS_ACROSS_ALL_WORKSPACES_VALUE_YES, }; // Sets whether the specified window is tracked by workspace code. Default is // true. If set to false the workspace does not switch the current workspace, // nor does it attempt to impose constraints on the bounds of the window. This // is intended for tab dragging. ASH_EXPORT void SetTrackedByWorkspace(aura::Window* window, bool value); ASH_EXPORT bool GetTrackedByWorkspace(aura::Window* window); // Makes |window| persist across all workspaces. The default is controlled // by SetDefaultPersistsAcrossAllWorkspaces(). ASH_EXPORT void SetPersistsAcrossAllWorkspaces( aura::Window* window, WindowPersistsAcrossAllWorkspacesType type); ASH_EXPORT bool GetPersistsAcrossAllWorkspaces(aura::Window* window); // Sets the default value for whether windows persist across all workspaces. // The default is false. ASH_EXPORT void SetDefaultPersistsAcrossAllWorkspaces(bool value); // Sets/Gets the RootWindowController for |root_window|. ASH_EXPORT void SetRootWindowController( aura::RootWindow* root_window, internal::RootWindowController* controller); ASH_EXPORT internal::RootWindowController* GetRootWindowController( aura::RootWindow* root_window); } #endif // ASH_WM_PROPERTY_UTIL_H_