diff options
author | mukai <mukai@chromium.org> | 2014-11-04 00:00:14 -0800 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2014-11-04 08:00:41 +0000 |
commit | ab1f170d0c78adbc36ef7716792c434b1b5b30d6 (patch) | |
tree | 658ef04ba380bbc4b2fff4a7da81d00fdfa00b18 /athena | |
parent | 5bca2278b8ecb8ae3b933807d3cb9a207616127c (diff) | |
download | chromium_src-ab1f170d0c78adbc36ef7716792c434b1b5b30d6.zip chromium_src-ab1f170d0c78adbc36ef7716792c434b1b5b30d6.tar.gz chromium_src-ab1f170d0c78adbc36ef7716792c434b1b5b30d6.tar.bz2 |
Fixes the mouse click of the search box in the home card.
Minimized background (the black layer) is still "visible" in
views point of view even though its layer opacity is 0.0f, and
it intercepts mouse/touch events over the actual visible views.
It needs to SetVisible(false) when it's not used.
BUG=428442
R=yoshiki@chromium.org
TEST=manually
Review URL: https://codereview.chromium.org/693103002
Cr-Commit-Position: refs/heads/master@{#302585}
Diffstat (limited to 'athena')
-rw-r--r-- | athena/home/home_card_impl.cc | 19 |
1 files changed, 18 insertions, 1 deletions
diff --git a/athena/home/home_card_impl.cc b/athena/home/home_card_impl.cc index c1efcb7..f6a64f3 100644 --- a/athena/home/home_card_impl.cc +++ b/athena/home/home_card_impl.cc @@ -19,6 +19,7 @@ #include "ui/app_list/views/contents_view.h" #include "ui/aura/layout_manager.h" #include "ui/aura/window.h" +#include "ui/compositor/closure_animation_observer.h" #include "ui/compositor/layer.h" #include "ui/compositor/scoped_layer_animation_settings.h" #include "ui/gfx/animation/tween.h" @@ -131,7 +132,8 @@ class HomeCardView : public views::WidgetDelegateView, main_view_(new AthenaStartPageView(view_delegate)), minimized_background_(new views::View()), drag_indicator_(new views::View()), - gesture_delegate_(gesture_delegate) { + gesture_delegate_(gesture_delegate), + weak_factory_(this) { background_->set_background( views::Background::CreateVerticalGradientBackground(SK_ColorLTGRAY, SK_ColorWHITE)); @@ -181,6 +183,7 @@ class HomeCardView : public views::WidgetDelegateView, } background_->layer()->SetOpacity(background_opacity); minimized_background_->layer()->SetOpacity(1.0f - background_opacity); + UpdateMinimizedBackgroundVisibility(); int background_height = kHomeCardHeight; if (from_state == HomeCard::VISIBLE_CENTERED || @@ -207,11 +210,18 @@ class HomeCardView : public views::WidgetDelegateView, gfx::Tween::Type tween_type) { float minimized_opacity = (state == HomeCard::VISIBLE_MINIMIZED) ? 1.0f : 0.0f; + // |minimized_background_| needs to be visible before scheduling animation. + if (state == HomeCard::VISIBLE_MINIMIZED) + minimized_background_->SetVisible(true); + if (minimized_opacity != minimized_background_->layer()->GetTargetOpacity()) { ui::ScopedLayerAnimationSettings settings( minimized_background_->layer()->GetAnimator()); settings.SetTweenType(gfx::Tween::EASE_IN); + settings.AddObserver(new ui::ClosureAnimationObserver( + base::Bind(&HomeCardView::UpdateMinimizedBackgroundVisibility, + weak_factory_.GetWeakPtr()))); minimized_background_->layer()->SetOpacity(minimized_opacity); } @@ -293,6 +303,11 @@ class HomeCardView : public views::WidgetDelegateView, } private: + void UpdateMinimizedBackgroundVisibility() { + minimized_background_->SetVisible( + minimized_background_->layer()->GetTargetOpacity() != 0.0f); + } + // views::WidgetDelegate: views::View* GetContentsView() override { return this; } @@ -310,6 +325,8 @@ class HomeCardView : public views::WidgetDelegateView, scoped_ptr<HomeCardGestureManager> gesture_manager_; HomeCardGestureManager::Delegate* gesture_delegate_; + base::WeakPtrFactory<HomeCardView> weak_factory_; + DISALLOW_COPY_AND_ASSIGN(HomeCardView); }; |