| Index: ash/common/wm/overview/window_grid.h
|
| diff --git a/ash/common/wm/overview/window_grid.h b/ash/common/wm/overview/window_grid.h
|
| deleted file mode 100644
|
| index 67f4f567a117e390af09df0f17674d82214ea7d2..0000000000000000000000000000000000000000
|
| --- a/ash/common/wm/overview/window_grid.h
|
| +++ /dev/null
|
| @@ -1,198 +0,0 @@
|
| -// Copyright 2014 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_COMMON_WM_OVERVIEW_WINDOW_GRID_H_
|
| -#define ASH_COMMON_WM_OVERVIEW_WINDOW_GRID_H_
|
| -
|
| -#include <stddef.h>
|
| -
|
| -#include <memory>
|
| -#include <set>
|
| -#include <vector>
|
| -
|
| -#include "ash/common/wm/overview/window_selector.h"
|
| -#include "ash/common/wm/window_state_observer.h"
|
| -#include "base/macros.h"
|
| -#include "base/scoped_observer.h"
|
| -#include "ui/aura/window_observer.h"
|
| -
|
| -namespace views {
|
| -class Widget;
|
| -}
|
| -
|
| -namespace wm {
|
| -class Shadow;
|
| -}
|
| -
|
| -namespace ash {
|
| -
|
| -class WindowSelectorItem;
|
| -
|
| -// Represents a grid of windows in the Overview Mode in a particular root
|
| -// window, and manages a selection widget that can be moved with the arrow keys.
|
| -// The idea behind the movement strategy is that it should be possible to access
|
| -// any window pressing a given arrow key repeatedly.
|
| -// +-------+ +-------+ +-------+
|
| -// | 0 | | 1 | | 2 |
|
| -// +-------+ +-------+ +-------+
|
| -// +-------+ +-------+ +-------+
|
| -// | 3 | | 4 | | 5 |
|
| -// +-------+ +-------+ +-------+
|
| -// +-------+
|
| -// | 6 |
|
| -// +-------+
|
| -// Example sequences:
|
| -// - Going right to left
|
| -// 0, 1, 2, 3, 4, 5, 6
|
| -// The selector is switched to the next window grid (if available) or wrapped if
|
| -// it reaches the end of its movement sequence.
|
| -class ASH_EXPORT WindowGrid : public aura::WindowObserver,
|
| - public wm::WindowStateObserver {
|
| - public:
|
| - WindowGrid(WmWindow* root_window,
|
| - const std::vector<WmWindow*>& window_list,
|
| - WindowSelector* window_selector);
|
| - ~WindowGrid() override;
|
| -
|
| - // Exits overview mode, fading out the |shield_widget_| if necessary.
|
| - void Shutdown();
|
| -
|
| - // Prepares the windows in this grid for overview. This will restore all
|
| - // minimized windows and ensure they are visible.
|
| - void PrepareForOverview();
|
| -
|
| - // Positions all the windows in rows of equal height scaling each window to
|
| - // fit that height.
|
| - // Layout is done in 2 stages maintaining fixed MRU ordering.
|
| - // 1. Optimal height is determined. In this stage |height| is bisected to find
|
| - // maximum height which still allows all the windows to fit.
|
| - // 2. Row widths are balanced. In this stage the available width is reduced
|
| - // until some windows are no longer fitting or until the difference between
|
| - // the narrowest and the widest rows starts growing.
|
| - // Overall this achieves the goals of maximum size for previews (or maximum
|
| - // row height which is equivalent assuming fixed height), balanced rows and
|
| - // minimal wasted space.
|
| - // Optionally animates the windows to their targets when |animate| is true.
|
| - void PositionWindows(bool animate);
|
| -
|
| - // Updates |selected_index_| according to the specified |direction| and calls
|
| - // MoveSelectionWidget(). Returns |true| if the new selection index is out of
|
| - // this window grid bounds.
|
| - bool Move(WindowSelector::Direction direction, bool animate);
|
| -
|
| - // Returns the target selected window, or NULL if there is none selected.
|
| - WindowSelectorItem* SelectedWindow() const;
|
| -
|
| - // Returns true if a window is contained in any of the WindowSelectorItems
|
| - // this grid owns.
|
| - bool Contains(const WmWindow* window) const;
|
| -
|
| - // Dims the items whose titles do not contain |pattern| and prevents their
|
| - // selection. The pattern has its accents removed and is converted to
|
| - // lowercase in a l10n sensitive context.
|
| - // If |pattern| is empty, no item is dimmed.
|
| - void FilterItems(const base::string16& pattern);
|
| -
|
| - // Called when |window| is about to get closed. If the |window| is currently
|
| - // selected the implementation fades out |selection_widget_| to transparent
|
| - // opacity, effectively hiding the selector widget.
|
| - void WindowClosing(WindowSelectorItem* window);
|
| -
|
| - // Returns true if the grid has no more windows.
|
| - bool empty() const { return window_list_.empty(); }
|
| -
|
| - // Returns how many window selector items are in the grid.
|
| - size_t size() const { return window_list_.size(); }
|
| -
|
| - // Returns true if the selection widget is active.
|
| - bool is_selecting() const { return selection_widget_ != nullptr; }
|
| -
|
| - // Returns the root window in which the grid displays the windows.
|
| - const WmWindow* root_window() const { return root_window_; }
|
| -
|
| - const std::vector<std::unique_ptr<WindowSelectorItem>>& window_list() const {
|
| - return window_list_;
|
| - }
|
| -
|
| - // aura::WindowObserver:
|
| - void OnWindowDestroying(aura::Window* window) override;
|
| - // TODO(flackr): Handle window bounds changed in WindowSelectorItem.
|
| - void OnWindowBoundsChanged(aura::Window* window,
|
| - const gfx::Rect& old_bounds,
|
| - const gfx::Rect& new_bounds) override;
|
| -
|
| - // wm::WindowStateObserver:
|
| - void OnPostWindowStateTypeChange(wm::WindowState* window_state,
|
| - wm::WindowStateType old_type) override;
|
| -
|
| - private:
|
| - friend class WindowSelectorTest;
|
| -
|
| - // Initializes the screen shield widget.
|
| - void InitShieldWidget();
|
| -
|
| - // Internal function to initialize the selection widget.
|
| - void InitSelectionWidget(WindowSelector::Direction direction);
|
| -
|
| - // Moves the selection widget to the specified |direction|.
|
| - void MoveSelectionWidget(WindowSelector::Direction direction,
|
| - bool recreate_selection_widget,
|
| - bool out_of_bounds,
|
| - bool animate);
|
| -
|
| - // Moves the selection widget to the targeted window.
|
| - void MoveSelectionWidgetToTarget(bool animate);
|
| -
|
| - // Attempts to fit all |rects| inside |bounds|. The method ensures that
|
| - // the |rects| vector has appropriate size and populates it with the values
|
| - // placing Rects next to each other left-to-right in rows of equal |height|.
|
| - // While fitting |rects| several metrics are collected that can be used by the
|
| - // caller. |max_bottom| specifies the bottom that the rects are extending to.
|
| - // |min_right| and |max_right| report the right bound of the narrowest and the
|
| - // widest rows respectively. In-values of the |max_bottom|, |min_right| and
|
| - // |max_right| parameters are ignored and their values are always initialized
|
| - // inside this method. Returns true on success and false otherwise.
|
| - bool FitWindowRectsInBounds(const gfx::Rect& bounds,
|
| - int height,
|
| - std::vector<gfx::Rect>* rects,
|
| - int* max_bottom,
|
| - int* min_right,
|
| - int* max_right);
|
| -
|
| - // Root window the grid is in.
|
| - WmWindow* root_window_;
|
| -
|
| - // Pointer to the window selector that spawned this grid.
|
| - WindowSelector* window_selector_;
|
| -
|
| - // Vector containing all the windows in this grid.
|
| - std::vector<std::unique_ptr<WindowSelectorItem>> window_list_;
|
| -
|
| - ScopedObserver<aura::Window, WindowGrid> window_observer_;
|
| - ScopedObserver<wm::WindowState, WindowGrid> window_state_observer_;
|
| -
|
| - // Widget that darkens the screen background.
|
| - std::unique_ptr<views::Widget> shield_widget_;
|
| -
|
| - // Widget that indicates to the user which is the selected window.
|
| - std::unique_ptr<views::Widget> selection_widget_;
|
| -
|
| - // Shadow around the selector.
|
| - std::unique_ptr<::wm::Shadow> selector_shadow_;
|
| -
|
| - // Current selected window position.
|
| - size_t selected_index_;
|
| -
|
| - // Number of columns in the grid.
|
| - size_t num_columns_;
|
| -
|
| - // True only after all windows have been prepared for overview.
|
| - bool prepared_for_overview_;
|
| -
|
| - DISALLOW_COPY_AND_ASSIGN(WindowGrid);
|
| -};
|
| -
|
| -} // namespace ash
|
| -
|
| -#endif // ASH_COMMON_WM_OVERVIEW_WINDOW_GRID_H_
|
|
|