| Index: ash/wm/dock/dock_layout_manager.h
|
| diff --git a/ash/wm/panels/panel_layout_manager.h b/ash/wm/dock/dock_layout_manager.h
|
| similarity index 52%
|
| copy from ash/wm/panels/panel_layout_manager.h
|
| copy to ash/wm/dock/dock_layout_manager.h
|
| index fd0bc5c29ae06f257be54a33c29ba8deea5f304b..0a09a459701a2accb5a667adaa1a15c3cc44e1a2 100644
|
| --- a/ash/wm/panels/panel_layout_manager.h
|
| +++ b/ash/wm/dock/dock_layout_manager.h
|
| @@ -2,23 +2,18 @@
|
| // Use of this source code is governed by a BSD-style license that can be
|
| // found in the LICENSE file.
|
|
|
| -#ifndef ASH_WM_PANELS_PANEL_LAYOUT_MANAGER_H_
|
| -#define ASH_WM_PANELS_PANEL_LAYOUT_MANAGER_H_
|
| -
|
| -#include <list>
|
| +#ifndef ASH_WM_DOCK_DOCK_LAYOUT_MANAGER_H_
|
| +#define ASH_WM_DOCK_DOCK_LAYOUT_MANAGER_H_
|
|
|
| #include "ash/ash_export.h"
|
| -#include "ash/launcher/launcher_icon_observer.h"
|
| #include "ash/shelf/shelf_layout_manager_observer.h"
|
| #include "ash/shell_observer.h"
|
| +#include "ash/wm/property_util.h"
|
| #include "base/basictypes.h"
|
| #include "base/compiler_specific.h"
|
| -#include "base/memory/scoped_ptr.h"
|
| -#include "base/memory/weak_ptr.h"
|
| #include "ui/aura/client/activation_change_observer.h"
|
| #include "ui/aura/layout_manager.h"
|
| #include "ui/aura/window_observer.h"
|
| -#include "ui/keyboard/keyboard_controller.h"
|
| #include "ui/keyboard/keyboard_controller_observer.h"
|
|
|
| namespace aura {
|
| @@ -29,49 +24,47 @@ namespace gfx {
|
| class Rect;
|
| }
|
|
|
| -namespace views {
|
| -class Widget;
|
| -}
|
| -
|
| namespace ash {
|
| class Launcher;
|
|
|
| namespace internal {
|
| -class PanelCalloutWidget;
|
| class ShelfLayoutManager;
|
|
|
| -// PanelLayoutManager is responsible for organizing panels within the
|
| -// workspace. It is associated with a specific container window (i.e.
|
| -// kShellWindowId_PanelContainer) and controls the layout of any windows
|
| +// DockLayoutManager is responsible for organizing windows within the
|
| +// dock (gutter). It is associated with a specific container window (i.e.
|
| +// kShellWindowId_DockContainer) and controls the layout of any windows
|
| // added to that container.
|
| //
|
| -// The constructor takes a |panel_container| argument which is expected to set
|
| +// The constructor takes a |dock_container| argument which is expected to set
|
| // its layout manager to this instance, e.g.:
|
| -// panel_container->SetLayoutManager(new PanelLayoutManager(panel_container));
|
| +// dock_container->SetLayoutManager(new DockLayoutManager(dock_container));
|
|
|
| -class ASH_EXPORT PanelLayoutManager
|
| +class ASH_EXPORT DockLayoutManager
|
| : public aura::LayoutManager,
|
| - public ash::LauncherIconObserver,
|
| public ash::ShellObserver,
|
| public aura::WindowObserver,
|
| public aura::client::ActivationChangeObserver,
|
| public keyboard::KeyboardControllerObserver,
|
| - public ShelfLayoutManagerObserver {
|
| + public ash::ShelfLayoutManagerObserver {
|
| public:
|
| - explicit PanelLayoutManager(aura::Window* panel_container);
|
| - virtual ~PanelLayoutManager();
|
| + explicit DockLayoutManager(aura::Window* dock_container);
|
| + virtual ~DockLayoutManager();
|
|
|
| - // Call Shutdown() before deleting children of panel_container.
|
| + // Call Shutdown() before deleting children of dock_container.
|
| void Shutdown();
|
|
|
| - void StartDragging(aura::Window* panel);
|
| + void StartDragging(aura::Window* window);
|
| void FinishDragging();
|
|
|
| - void ToggleMinimize(aura::Window* panel);
|
| + void ToggleMinimize(aura::Window* window);
|
|
|
| ash::Launcher* launcher() { return launcher_; }
|
| void SetLauncher(ash::Launcher* launcher);
|
|
|
| + // checks if the window touches the screen edge (no dock yet) or has entered
|
| + // existing dock area
|
| + static DockEdge FindDockEdge(aura::Window* window);
|
| +
|
| // Overridden from aura::LayoutManager:
|
| virtual void OnWindowResized() OVERRIDE;
|
| virtual void OnWindowAddedToLayout(aura::Window* child) OVERRIDE;
|
| @@ -82,9 +75,6 @@ class ASH_EXPORT PanelLayoutManager
|
| virtual void SetChildBounds(aura::Window* child,
|
| const gfx::Rect& requested_bounds) OVERRIDE;
|
|
|
| - // Overridden from ash::LauncherIconObserver
|
| - virtual void OnLauncherIconPositionsChanged() OVERRIDE;
|
| -
|
| // Overridden from ash::ShellObserver
|
| virtual void OnShelfAlignmentChanged(aura::RootWindow* root_window) OVERRIDE;
|
|
|
| @@ -104,58 +94,30 @@ class ASH_EXPORT PanelLayoutManager
|
| ShelfVisibilityState new_state) OVERRIDE;
|
|
|
| private:
|
| - friend class PanelLayoutManagerTest;
|
| - friend class PanelWindowResizerTest;
|
| -
|
| - views::Widget* CreateCalloutWidget();
|
| -
|
| - struct PanelInfo{
|
| - PanelInfo() : window(NULL), callout_widget(NULL), slide_in(false) {}
|
| -
|
| - bool operator==(const aura::Window* other_window) const {
|
| - return window == other_window;
|
| - }
|
| + friend class DockLayoutManagerTest;
|
| + friend class DockWindowResizerTest;
|
|
|
| - // A weak pointer to the panel window.
|
| - aura::Window* window;
|
| - // The callout widget for this panel. This pointer must be managed
|
| - // manually as this structure is used in a std::list. See
|
| - // http://www.chromium.org/developers/smart-pointer-guidelines
|
| - PanelCalloutWidget* callout_widget;
|
| + // minimize / restore window and relayout
|
| + void MinimizeWindow(aura::Window* window);
|
| + void RestoreWindow(aura::Window* window);
|
|
|
| - // True on new and restored panel windows until the panel has been
|
| - // positioned. The first time Relayout is called the panel will slide into
|
| - // position and this will be set to false.
|
| - bool slide_in;
|
| - };
|
| -
|
| - typedef std::list<PanelInfo> PanelList;
|
| -
|
| - void MinimizePanel(aura::Window* panel);
|
| - void RestorePanel(aura::Window* panel);
|
| -
|
| - // Called whenever the panel layout might change.
|
| + // Called whenever the window layout might change.
|
| void Relayout();
|
|
|
| - // Called whenever the panel stacking order needs to be updated (e.g. focus
|
| - // changes or a panel is moved).
|
| - void UpdateStacking(aura::Window* active_panel);
|
| -
|
| - // Update the callout arrows for all managed panels.
|
| - void UpdateCallouts();
|
| + // Called whenever the window stacking order needs to be updated (e.g. focus
|
| + // changes or a window is moved).
|
| + void UpdateStacking(aura::Window* active_window);
|
|
|
| // Overridden from keyboard::KeyboardControllerObserver:
|
| virtual void OnKeyboardBoundsChanging(
|
| const gfx::Rect& keyboard_bounds) OVERRIDE;
|
|
|
| // Parent window associated with this layout manager.
|
| - aura::Window* panel_container_;
|
| + aura::Window* dock_container_;
|
| // Protect against recursive calls to Relayout().
|
| bool in_layout_;
|
| - // Ordered list of unowned pointers to panel windows.
|
| - PanelList panel_windows_;
|
| - // The panel being dragged.
|
| - aura::Window* dragged_panel_;
|
| + // The docked window being dragged.
|
| + aura::Window* dragged_window_;
|
| // The launcher we are observing for launcher icon changes.
|
| Launcher* launcher_;
|
| // The shelf layout manager being observed for visibility changes.
|
| @@ -163,15 +125,19 @@ class ASH_EXPORT PanelLayoutManager
|
| // Tracks the visibility of the shelf. Defaults to false when there is no
|
| // shelf.
|
| bool shelf_hidden_;
|
| - // The last active panel. Used to maintain stacking even if no panels are
|
| - // currently focused.
|
| - aura::Window* last_active_panel_;
|
| - base::WeakPtrFactory<PanelLayoutManager> weak_factory_;
|
|
|
| - DISALLOW_COPY_AND_ASSIGN(PanelLayoutManager);
|
| + // side of the screen the dock is positioned at
|
| + enum DockAlignment {
|
| + DOCK_ALIGNMENT_NONE,
|
| + DOCK_ALIGNMENT_LEFT,
|
| + DOCK_ALIGNMENT_RIGHT,
|
| + };
|
| + DockAlignment alignment_;
|
| +
|
| + DISALLOW_COPY_AND_ASSIGN(DockLayoutManager);
|
| };
|
|
|
| } // namespace internal
|
| } // namespace ash
|
|
|
| -#endif // ASH_WM_PANELS_PANEL_LAYOUT_MANAGER_H_
|
| +#endif // ASH_WM_DOCK_DOCK_LAYOUT_MANAGER_H_
|
|
|