| Index: ui/wm/core/shadow_controller.cc
|
| diff --git a/ui/wm/core/shadow_controller.cc b/ui/wm/core/shadow_controller.cc
|
| index ce30bbdabc8f504929fca934eefd2919ef413d95..55bcb475631f718d05688aaee29ee0e0ea0aaa76 100644
|
| --- a/ui/wm/core/shadow_controller.cc
|
| +++ b/ui/wm/core/shadow_controller.cc
|
| @@ -32,41 +32,37 @@ namespace wm {
|
|
|
| namespace {
|
|
|
| -ShadowType GetShadowTypeFromWindow(aura::Window* window) {
|
| +constexpr ShadowElevation kActiveNormalShadowElevation = ShadowElevation::BIG;
|
| +constexpr ShadowElevation kInactiveNormalShadowElevation =
|
| + ShadowElevation::MEDIUM;
|
| +
|
| +ShadowElevation GetDefaultShadowElevationForWindow(aura::Window* window) {
|
| switch (window->type()) {
|
| case ui::wm::WINDOW_TYPE_NORMAL:
|
| case ui::wm::WINDOW_TYPE_PANEL:
|
| + return kInactiveNormalShadowElevation;
|
| +
|
| case ui::wm::WINDOW_TYPE_MENU:
|
| case ui::wm::WINDOW_TYPE_TOOLTIP:
|
| - return SHADOW_TYPE_RECTANGULAR;
|
| + return ShadowElevation::SMALL;
|
| +
|
| default:
|
| break;
|
| }
|
| - return SHADOW_TYPE_NONE;
|
| + return ShadowElevation::NONE;
|
| }
|
|
|
| -Shadow::Style GetShadowStyleForWindow(aura::Window* window) {
|
| - switch (window->type()) {
|
| - case ui::wm::WINDOW_TYPE_MENU:
|
| - case ui::wm::WINDOW_TYPE_TOOLTIP:
|
| - return Shadow::STYLE_SMALL;
|
| +ShadowElevation GetShadowElevationForActiveState(aura::Window* window) {
|
| + if (IsActiveWindow(window))
|
| + return kActiveNormalShadowElevation;
|
|
|
| - // System tray bubbles render like active windows. TODO(estade): this
|
| - // mechanism will need to be revisited for applying WM shadows to other
|
| - // types of bubbles which don't want to render such large shadows.
|
| - case ui::wm::WINDOW_TYPE_POPUP:
|
| - return Shadow::STYLE_ACTIVE;
|
| -
|
| - default:
|
| - return IsActiveWindow(window) ? Shadow::STYLE_ACTIVE
|
| - : Shadow::STYLE_INACTIVE;
|
| - }
|
| + return GetShadowElevation(window);
|
| }
|
|
|
| // Returns the shadow style to be applied to |losing_active| when it is losing
|
| // active to |gaining_active|. |gaining_active| may be of a type that hides when
|
| // inactive, and as such we do not want to render |losing_active| as inactive.
|
| -Shadow::Style GetShadowStyleForWindowLosingActive(
|
| +ShadowElevation GetShadowElevationForWindowLosingActive(
|
| aura::Window* losing_active,
|
| aura::Window* gaining_active) {
|
| if (gaining_active && aura::client::GetHideOnDeactivate(gaining_active)) {
|
| @@ -75,9 +71,9 @@ Shadow::Style GetShadowStyleForWindowLosingActive(
|
| GetTransientChildren(losing_active).end(),
|
| gaining_active);
|
| if (it != GetTransientChildren(losing_active).end())
|
| - return Shadow::STYLE_ACTIVE;
|
| + return kActiveNormalShadowElevation;
|
| }
|
| - return Shadow::STYLE_INACTIVE;
|
| + return kInactiveNormalShadowElevation;
|
| }
|
|
|
| } // namespace
|
| @@ -123,7 +119,7 @@ class ShadowController::Impl :
|
| // Checks if |window| is visible and contains a property requesting a shadow.
|
| bool ShouldShowShadowForWindow(aura::Window* window) const;
|
|
|
| - // Updates the shadow styles for windows when activation changes.
|
| + // Updates the shadow for windows when activation changes.
|
| void HandleWindowActivationChange(aura::Window* gaining_active,
|
| aura::Window* losing_active);
|
|
|
| @@ -155,15 +151,16 @@ ShadowController::Impl* ShadowController::Impl::GetInstance() {
|
|
|
| void ShadowController::Impl::OnWindowInitialized(aura::Window* window) {
|
| observer_manager_.Add(window);
|
| - SetShadowType(window, GetShadowTypeFromWindow(window));
|
| + SetShadowElevation(window, GetDefaultShadowElevationForWindow(window));
|
| HandlePossibleShadowVisibilityChange(window);
|
| }
|
|
|
| void ShadowController::Impl::OnWindowPropertyChanged(aura::Window* window,
|
| const void* key,
|
| intptr_t old) {
|
| - if (key == kShadowTypeKey) {
|
| - if (window->GetProperty(kShadowTypeKey) == static_cast<ShadowType>(old))
|
| + if (key == kShadowElevationKey) {
|
| + if (window->GetProperty(kShadowElevationKey) ==
|
| + static_cast<ShadowElevation>(old))
|
| return;
|
| } else if (key == aura::client::kShowStateKey) {
|
| if (window->GetProperty(aura::client::kShowStateKey) ==
|
| @@ -196,14 +193,14 @@ void ShadowController::Impl::OnWindowActivated(ActivationReason reason,
|
| if (gained_active) {
|
| Shadow* shadow = GetShadowForWindow(gained_active);
|
| if (shadow)
|
| - shadow->SetStyle(GetShadowStyleForWindow(gained_active));
|
| + shadow->SetElevation(GetShadowElevationForActiveState(gained_active));
|
| }
|
| if (lost_active) {
|
| Shadow* shadow = GetShadowForWindow(lost_active);
|
| if (shadow &&
|
| - GetShadowStyleForWindow(lost_active) == Shadow::STYLE_INACTIVE) {
|
| - shadow->SetStyle(GetShadowStyleForWindowLosingActive(lost_active,
|
| - gained_active));
|
| + GetShadowElevation(lost_active) == kInactiveNormalShadowElevation) {
|
| + shadow->SetElevation(
|
| + GetShadowElevationForWindowLosingActive(lost_active, gained_active));
|
| }
|
| }
|
| }
|
| @@ -214,19 +211,10 @@ bool ShadowController::Impl::ShouldShowShadowForWindow(
|
| window->GetProperty(aura::client::kShowStateKey);
|
| if (show_state == ui::SHOW_STATE_FULLSCREEN ||
|
| show_state == ui::SHOW_STATE_MAXIMIZED) {
|
| - return SHADOW_TYPE_NONE;
|
| + return false;
|
| }
|
|
|
| - const ShadowType type = GetShadowType(window);
|
| - switch (type) {
|
| - case SHADOW_TYPE_NONE:
|
| - return false;
|
| - case SHADOW_TYPE_RECTANGULAR:
|
| - return true;
|
| - default:
|
| - NOTREACHED() << "Unknown shadow type " << type;
|
| - return false;
|
| - }
|
| + return static_cast<int>(GetShadowElevation(window)) > 0;
|
| }
|
|
|
| void ShadowController::Impl::HandlePossibleShadowVisibilityChange(
|
| @@ -234,7 +222,7 @@ void ShadowController::Impl::HandlePossibleShadowVisibilityChange(
|
| const bool should_show = ShouldShowShadowForWindow(window);
|
| Shadow* shadow = GetShadowForWindow(window);
|
| if (shadow) {
|
| - shadow->SetStyle(GetShadowStyleForWindow(window));
|
| + shadow->SetElevation(GetShadowElevationForActiveState(window));
|
| shadow->layer()->SetVisible(should_show);
|
| } else if (should_show && !shadow) {
|
| CreateShadowForWindow(window);
|
| @@ -244,7 +232,7 @@ void ShadowController::Impl::HandlePossibleShadowVisibilityChange(
|
| void ShadowController::Impl::CreateShadowForWindow(aura::Window* window) {
|
| Shadow* shadow = new Shadow();
|
| window->SetProperty(kShadowLayerKey, shadow);
|
| - shadow->Init(GetShadowStyleForWindow(window));
|
| + shadow->Init(GetShadowElevationForActiveState(window));
|
| shadow->SetContentBounds(gfx::Rect(window->bounds().size()));
|
| shadow->layer()->SetVisible(ShouldShowShadowForWindow(window));
|
| window->layer()->Add(shadow->layer());
|
|
|