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

Side by Side Diff: ash/common/wm/overview/scoped_transform_overview_window.cc

Issue 2133333002: [ash-md] Allows docked windows to be selected in overview mode (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: [ash-md] Allows docked windows to be selected in overview mode (comments + tests) Created 4 years, 5 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 unified diff | Download patch
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "ash/common/wm/overview/scoped_transform_overview_window.h" 5 #include "ash/common/wm/overview/scoped_transform_overview_window.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <vector> 8 #include <vector>
9 9
10 #include "ash/common/material_design/material_design_controller.h" 10 #include "ash/common/material_design/material_design_controller.h"
(...skipping 231 matching lines...) Expand 10 before | Expand all | Expand 10 after
242 } 242 }
243 243
244 base::Closure ScopedTransformOverviewWindow::OverviewContentMask:: 244 base::Closure ScopedTransformOverviewWindow::OverviewContentMask::
245 PrepareForLayerBoundsChange() { 245 PrepareForLayerBoundsChange() {
246 return base::Closure(); 246 return base::Closure();
247 } 247 }
248 248
249 ScopedTransformOverviewWindow::ScopedTransformOverviewWindow(WmWindow* window) 249 ScopedTransformOverviewWindow::ScopedTransformOverviewWindow(WmWindow* window)
250 : window_(window), 250 : window_(window),
251 determined_original_window_shape_(false), 251 determined_original_window_shape_(false),
252 minimized_(window->GetShowState() == ui::SHOW_STATE_MINIMIZED), 252 original_visibility_(
253 window->GetWindowState()->GetStateType() ==
254 wm::WINDOW_STATE_TYPE_DOCKED_MINIMIZED
255 ? ORIGINALLY_DOCKED_MINIMIZED
256 : (window->GetShowState() == ui::SHOW_STATE_MINIMIZED
257 ? ORIGINALLY_MINIMIZED
258 : ORIGINALLY_VISIBLE)),
253 ignored_by_shelf_(window->GetWindowState()->ignored_by_shelf()), 259 ignored_by_shelf_(window->GetWindowState()->ignored_by_shelf()),
254 overview_started_(false), 260 overview_started_(false),
255 original_transform_(window->GetTargetTransform()), 261 original_transform_(window->GetTargetTransform()),
256 original_opacity_(window->GetTargetOpacity()), 262 original_opacity_(window->GetTargetOpacity()),
257 weak_ptr_factory_(this) {} 263 weak_ptr_factory_(this) {}
258 264
259 ScopedTransformOverviewWindow::~ScopedTransformOverviewWindow() {} 265 ScopedTransformOverviewWindow::~ScopedTransformOverviewWindow() {}
260 266
261 void ScopedTransformOverviewWindow::RestoreWindow() { 267 void ScopedTransformOverviewWindow::RestoreWindow() {
262 ScopedAnimationSettings animation_settings_list; 268 ScopedAnimationSettings animation_settings_list;
263 BeginScopedAnimation(OverviewAnimationType::OVERVIEW_ANIMATION_RESTORE_WINDOW, 269 BeginScopedAnimation(OverviewAnimationType::OVERVIEW_ANIMATION_RESTORE_WINDOW,
264 &animation_settings_list); 270 &animation_settings_list);
265 SetTransform(window()->GetRootWindow(), original_transform_, 0); 271 SetTransform(window()->GetRootWindow(), original_transform_, 0);
266 272
267 std::unique_ptr<ScopedOverviewAnimationSettings> animation_settings = 273 std::unique_ptr<ScopedOverviewAnimationSettings> animation_settings =
268 CreateScopedOverviewAnimationSettings( 274 CreateScopedOverviewAnimationSettings(
269 OverviewAnimationType::OVERVIEW_ANIMATION_LAY_OUT_SELECTOR_ITEMS, 275 OverviewAnimationType::OVERVIEW_ANIMATION_LAY_OUT_SELECTOR_ITEMS,
270 window_); 276 window_);
271 gfx::Transform transform; 277 gfx::Transform transform;
272 if (minimized_ && window_->GetShowState() != ui::SHOW_STATE_MINIMIZED) { 278 if ((original_visibility_ == ORIGINALLY_MINIMIZED &&
279 window_->GetShowState() != ui::SHOW_STATE_MINIMIZED) ||
280 (original_visibility_ == ORIGINALLY_DOCKED_MINIMIZED &&
281 window_->GetWindowState()->GetStateType() !=
282 wm::WINDOW_STATE_TYPE_DOCKED_MINIMIZED)) {
273 // Setting opacity 0 and visible false ensures that the property change 283 // Setting opacity 0 and visible false ensures that the property change
274 // to SHOW_STATE_MINIMIZED will not animate the window from its original 284 // to SHOW_STATE_MINIMIZED will not animate the window from its original
275 // bounds to the minimized position. 285 // bounds to the minimized position.
276 // Hiding the window needs to be done before the target opacity is 0, 286 // Hiding the window needs to be done before the target opacity is 0,
277 // otherwise the layer's visibility will not be updated 287 // otherwise the layer's visibility will not be updated
278 // (See VisibilityController::UpdateLayerVisibility). 288 // (See VisibilityController::UpdateLayerVisibility).
279 window_->Hide(); 289 window_->Hide();
280 window_->SetOpacity(0); 290 window_->SetOpacity(0);
281 window_->SetShowState(ui::SHOW_STATE_MINIMIZED); 291 window_->SetShowState(ui::SHOW_STATE_MINIMIZED);
282 } 292 }
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
324 window->GetType() != ui::wm::WINDOW_TYPE_PANEL) { 334 window->GetType() != ui::wm::WINDOW_TYPE_PANEL) {
325 continue; 335 continue;
326 } 336 }
327 bounds.Union( 337 bounds.Union(
328 window->GetParent()->ConvertRectToScreen(window->GetTargetBounds())); 338 window->GetParent()->ConvertRectToScreen(window->GetTargetBounds()));
329 } 339 }
330 return bounds; 340 return bounds;
331 } 341 }
332 342
333 void ScopedTransformOverviewWindow::ShowWindowIfMinimized() { 343 void ScopedTransformOverviewWindow::ShowWindowIfMinimized() {
334 if (minimized_ && window_->GetShowState() == ui::SHOW_STATE_MINIMIZED) 344 if ((original_visibility_ == ORIGINALLY_MINIMIZED &&
345 window_->GetShowState() == ui::SHOW_STATE_MINIMIZED) ||
346 (original_visibility_ == ORIGINALLY_DOCKED_MINIMIZED &&
347 window_->GetWindowState()->GetStateType() ==
348 wm::WINDOW_STATE_TYPE_DOCKED_MINIMIZED)) {
335 window_->Show(); 349 window_->Show();
350 }
336 } 351 }
337 352
338 void ScopedTransformOverviewWindow::ShowWindowOnExit() { 353 void ScopedTransformOverviewWindow::ShowWindowOnExit() {
339 if (minimized_) { 354 if (original_visibility_ != ORIGINALLY_VISIBLE) {
340 minimized_ = false; 355 original_visibility_ = ORIGINALLY_VISIBLE;
341 original_transform_ = gfx::Transform(); 356 original_transform_ = gfx::Transform();
342 original_opacity_ = kRestoreWindowOpacity; 357 original_opacity_ = kRestoreWindowOpacity;
343 } 358 }
344 } 359 }
345 360
346 void ScopedTransformOverviewWindow::OnWindowDestroyed() { 361 void ScopedTransformOverviewWindow::OnWindowDestroyed() {
347 window_ = nullptr; 362 window_ = nullptr;
348 } 363 }
349 364
350 float ScopedTransformOverviewWindow::GetItemScale(const gfx::Size& source, 365 float ScopedTransformOverviewWindow::GetItemScale(const gfx::Size& source,
(...skipping 129 matching lines...) Expand 10 before | Expand all | Expand 10 after
480 if (parent_window) 495 if (parent_window)
481 parent_window->CloseWidget(); 496 parent_window->CloseWidget();
482 } 497 }
483 498
484 // static 499 // static
485 void ScopedTransformOverviewWindow::SetImmediateCloseForTests() { 500 void ScopedTransformOverviewWindow::SetImmediateCloseForTests() {
486 immediate_close_for_tests = true; 501 immediate_close_for_tests = true;
487 } 502 }
488 503
489 } // namespace ash 504 } // namespace ash
OLDNEW
« no previous file with comments | « ash/common/wm/overview/scoped_transform_overview_window.h ('k') | ash/common/wm/overview/window_selector.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698