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

Side by Side Diff: ash/wm/overview/window_overview.cc

Issue 196723009: Not submitted - Fixing invalid visibility states with layers which showed up in unittests ... (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 9 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 | Annotate | Revision Log
« no previous file with comments | « no previous file | ash/wm/overview/window_selector_panels.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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/wm/overview/window_overview.h" 5 #include "ash/wm/overview/window_overview.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 8
9 #include "ash/metrics/user_metrics_recorder.h" 9 #include "ash/metrics/user_metrics_recorder.h"
10 #include "ash/screen_util.h" 10 #include "ash/screen_util.h"
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
42 // The minimum number of cards along the major axis (i.e. horizontally on a 42 // The minimum number of cards along the major axis (i.e. horizontally on a
43 // landscape orientation). 43 // landscape orientation).
44 const int kMinCardsMajor = 3; 44 const int kMinCardsMajor = 3;
45 45
46 // The duration of transition animations on the overview selector. 46 // The duration of transition animations on the overview selector.
47 const int kOverviewSelectorTransitionMilliseconds = 100; 47 const int kOverviewSelectorTransitionMilliseconds = 100;
48 48
49 // The color and opacity of the overview selector. 49 // The color and opacity of the overview selector.
50 const SkColor kWindowOverviewSelectionColor = SK_ColorBLACK; 50 const SkColor kWindowOverviewSelectionColor = SK_ColorBLACK;
51 const float kWindowOverviewSelectionOpacity = 0.5f; 51 const float kWindowOverviewSelectionOpacity = 0.5f;
52 // When a window layer gets hidden, and the window remains "logically visible",
53 // it is illegal to fade the layer to 0. We therefore use a fraction which is
54 // resolving to an alpha of 0 but tells a comparison otherwise.
55 const float kWindowLayerNotShown = 0.001f;
sky 2014/03/12 19:31:40 Ugh. Why can't you actually hide here and evervy w
52 56
53 // The padding or amount of the window selector widget visible around the edges 57 // The padding or amount of the window selector widget visible around the edges
54 // of the currently selected window. 58 // of the currently selected window.
55 const int kWindowOverviewSelectionPadding = 25; 59 const int kWindowOverviewSelectionPadding = 25;
56 60
57 // A comparator for locating a given target window. 61 // A comparator for locating a given target window.
58 struct WindowSelectorItemComparator 62 struct WindowSelectorItemComparator
59 : public std::unary_function<WindowSelectorItem*, bool> { 63 : public std::unary_function<WindowSelectorItem*, bool> {
60 explicit WindowSelectorItemComparator(const aura::Window* target_window) 64 explicit WindowSelectorItemComparator(const aura::Window* target_window)
61 : target(target_window) { 65 : target(target_window) {
(...skipping 148 matching lines...) Expand 10 before | Expand all | Expand 10 after
210 ui::ScopedLayerAnimationSettings animation_settings( 214 ui::ScopedLayerAnimationSettings animation_settings(
211 old_selection->layer()->GetAnimator()); 215 old_selection->layer()->GetAnimator());
212 animation_settings.SetTransitionDuration( 216 animation_settings.SetTransitionDuration(
213 base::TimeDelta::FromMilliseconds( 217 base::TimeDelta::FromMilliseconds(
214 kOverviewSelectorTransitionMilliseconds)); 218 kOverviewSelectorTransitionMilliseconds));
215 animation_settings.SetPreemptionStrategy( 219 animation_settings.SetPreemptionStrategy(
216 ui::LayerAnimator::IMMEDIATELY_ANIMATE_TO_NEW_TARGET); 220 ui::LayerAnimator::IMMEDIATELY_ANIMATE_TO_NEW_TARGET);
217 old_selection->SetBoundsInScreen( 221 old_selection->SetBoundsInScreen(
218 GetSelectionBounds(selection_index_) + fade_out_direction, 222 GetSelectionBounds(selection_index_) + fade_out_direction,
219 dst_display); 223 dst_display);
220 old_selection->layer()->SetOpacity(0); 224 old_selection->layer()->SetOpacity(kWindowLayerNotShown);
221 InitializeSelectionWidget(); 225 InitializeSelectionWidget();
222 selection_widget_->GetNativeWindow()->SetBoundsInScreen( 226 selection_widget_->GetNativeWindow()->SetBoundsInScreen(
223 target_bounds - fade_out_direction, dst_display); 227 target_bounds - fade_out_direction, dst_display);
224 } 228 }
225 ui::ScopedLayerAnimationSettings animation_settings( 229 ui::ScopedLayerAnimationSettings animation_settings(
226 selection_widget_->GetNativeWindow()->layer()->GetAnimator()); 230 selection_widget_->GetNativeWindow()->layer()->GetAnimator());
227 animation_settings.SetTransitionDuration(base::TimeDelta::FromMilliseconds( 231 animation_settings.SetTransitionDuration(base::TimeDelta::FromMilliseconds(
228 kOverviewSelectorTransitionMilliseconds)); 232 kOverviewSelectorTransitionMilliseconds));
229 animation_settings.SetPreemptionStrategy( 233 animation_settings.SetPreemptionStrategy(
230 ui::LayerAnimator::IMMEDIATELY_ANIMATE_TO_NEW_TARGET); 234 ui::LayerAnimator::IMMEDIATELY_ANIMATE_TO_NEW_TARGET);
(...skipping 115 matching lines...) Expand 10 before | Expand all | Expand 10 after
346 ui::ScopedLayerAnimationSettings settings( 350 ui::ScopedLayerAnimationSettings settings(
347 (*iter)->layer()->GetAnimator()); 351 (*iter)->layer()->GetAnimator());
348 settings.SetTransitionDuration(base::TimeDelta::FromMilliseconds( 352 settings.SetTransitionDuration(base::TimeDelta::FromMilliseconds(
349 ScopedTransformOverviewWindow::kTransitionMilliseconds)); 353 ScopedTransformOverviewWindow::kTransitionMilliseconds));
350 settings.SetPreemptionStrategy( 354 settings.SetPreemptionStrategy(
351 ui::LayerAnimator::IMMEDIATELY_ANIMATE_TO_NEW_TARGET); 355 ui::LayerAnimator::IMMEDIATELY_ANIMATE_TO_NEW_TARGET);
352 (*iter)->Hide(); 356 (*iter)->Hide();
353 // Hiding the window can result in it being destroyed. 357 // Hiding the window can result in it being destroyed.
354 if (!hidden_windows_.Contains(*iter)) 358 if (!hidden_windows_.Contains(*iter))
355 continue; 359 continue;
356 (*iter)->layer()->SetOpacity(0); 360 (*iter)->layer()->SetOpacity(kWindowLayerNotShown);
357 } 361 }
358 } 362 }
359 363
360 void WindowOverview::PositionWindows() { 364 void WindowOverview::PositionWindows() {
361 if (single_root_window_) { 365 if (single_root_window_) {
362 std::vector<WindowSelectorItem*> windows; 366 std::vector<WindowSelectorItem*> windows;
363 for (WindowSelectorItemList::iterator iter = windows_->begin(); 367 for (WindowSelectorItemList::iterator iter = windows_->begin();
364 iter != windows_->end(); ++iter) { 368 iter != windows_->end(); ++iter) {
365 windows.push_back(*iter); 369 windows.push_back(*iter);
366 } 370 }
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after
440 params.accept_events = false; 444 params.accept_events = false;
441 selection_widget_->set_focus_on_creation(false); 445 selection_widget_->set_focus_on_creation(false);
442 selection_widget_->Init(params); 446 selection_widget_->Init(params);
443 views::View* content_view = new views::View; 447 views::View* content_view = new views::View;
444 content_view->set_background( 448 content_view->set_background(
445 views::Background::CreateSolidBackground(kWindowOverviewSelectionColor)); 449 views::Background::CreateSolidBackground(kWindowOverviewSelectionColor));
446 selection_widget_->SetContentsView(content_view); 450 selection_widget_->SetContentsView(content_view);
447 selection_widget_->Show(); 451 selection_widget_->Show();
448 selection_widget_->GetNativeWindow()->parent()->StackChildAtBottom( 452 selection_widget_->GetNativeWindow()->parent()->StackChildAtBottom(
449 selection_widget_->GetNativeWindow()); 453 selection_widget_->GetNativeWindow());
450 selection_widget_->GetNativeWindow()->layer()->SetOpacity(0); 454 selection_widget_->GetNativeWindow()->layer()->SetOpacity(
455 kWindowLayerNotShown);
451 } 456 }
452 457
453 gfx::Rect WindowOverview::GetSelectionBounds(size_t index) { 458 gfx::Rect WindowOverview::GetSelectionBounds(size_t index) {
454 gfx::Rect bounds((*windows_)[index]->bounds()); 459 gfx::Rect bounds((*windows_)[index]->bounds());
455 bounds.Inset(-kWindowOverviewSelectionPadding, 460 bounds.Inset(-kWindowOverviewSelectionPadding,
456 -kWindowOverviewSelectionPadding); 461 -kWindowOverviewSelectionPadding);
457 return bounds; 462 return bounds;
458 } 463 }
459 464
460 } // namespace ash 465 } // namespace ash
OLDNEW
« no previous file with comments | « no previous file | ash/wm/overview/window_selector_panels.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698