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

Unified Diff: ash/wm/overview/window_grid.cc

Issue 2918403006: CrOS Tablet Window management - Split Screen part I (Closed)
Patch Set: Address oshima@'s comments Created 3 years, 6 months 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/overview/window_grid.cc
diff --git a/ash/wm/overview/window_grid.cc b/ash/wm/overview/window_grid.cc
index 3b27667d7821785128963dc6874bbdab19d6e966..20aabd3f28018fdaa8f1f26bbaf165196d0d487d 100644
--- a/ash/wm/overview/window_grid.cc
+++ b/ash/wm/overview/window_grid.cc
@@ -260,14 +260,16 @@ bool IsMinimizedStateType(wm::WindowStateType type) {
WindowGrid::WindowGrid(aura::Window* root_window,
const std::vector<aura::Window*>& windows,
- WindowSelector* window_selector)
+ WindowSelector* window_selector,
+ const gfx::Rect& bounds_in_screen)
: root_window_(root_window),
window_selector_(window_selector),
window_observer_(this),
window_state_observer_(this),
selected_index_(0),
num_columns_(0),
- prepared_for_overview_(false) {
+ prepared_for_overview_(false),
+ bounds_(bounds_in_screen) {
aura::Window::Windows windows_in_root;
for (auto* window : windows) {
if (window->GetRootWindow() == root_window)
@@ -329,9 +331,8 @@ void WindowGrid::PositionWindows(bool animate) {
aura::Window* widget_window = shield_widget_->GetNativeWindow();
const gfx::Rect bounds = widget_window->parent()->bounds();
widget_window->SetBounds(bounds);
- gfx::Rect total_bounds = ScreenUtil::GetDisplayWorkAreaBoundsInParent(
- root_window_->GetChildById(kShellWindowId_DefaultContainer));
- ::wm::ConvertRectToScreen(root_window_, &total_bounds);
+
+ gfx::Rect total_bounds = bounds_;
// Windows occupy vertically centered area with additional vertical insets.
int horizontal_inset =
gfx::ToFlooredInt(std::min(kOverviewInsetRatio * total_bounds.width(),
@@ -521,6 +522,20 @@ bool WindowGrid::Contains(const aura::Window* window) const {
return false;
}
+void WindowGrid::RemoveItem(WindowSelectorItem* selector_item) {
+ auto iter =
+ std::find_if(window_list_.begin(), window_list_.end(),
+ [selector_item](std::unique_ptr<WindowSelectorItem>& item) {
+ return (item.get() == selector_item);
+ });
+ if (iter != window_list_.end()) {
+ window_observer_.Remove(selector_item->GetWindow());
+ window_state_observer_.Remove(
+ wm::GetWindowState(selector_item->GetWindow()));
+ window_list_.erase(iter);
+ }
+}
+
void WindowGrid::FilterItems(const base::string16& pattern) {
base::i18n::FixedPatternStringSearchIgnoringCaseAndAccents finder(pattern);
for (const auto& window : window_list_) {
@@ -547,6 +562,11 @@ void WindowGrid::WindowClosing(WindowSelectorItem* window) {
selection_widget_->SetOpacity(0.f);
}
+void WindowGrid::SetTotalBoundsInScreen(const gfx::Rect bounds) {
+ bounds_ = bounds;
+ PositionWindows(true);
varkha 2017/06/21 01:51:52 nit: true /* animate */
xdai1 2017/06/22 21:46:33 Done.
+}
+
void WindowGrid::OnWindowDestroying(aura::Window* window) {
window_observer_.Remove(window);
window_state_observer_.Remove(wm::GetWindowState(window));

Powered by Google App Engine
This is Rietveld 408576698