summaryrefslogtreecommitdiffstats
path: root/athena
diff options
context:
space:
mode:
authormukai <mukai@chromium.org>2014-11-04 00:00:14 -0800
committerCommit bot <commit-bot@chromium.org>2014-11-04 08:00:41 +0000
commitab1f170d0c78adbc36ef7716792c434b1b5b30d6 (patch)
tree658ef04ba380bbc4b2fff4a7da81d00fdfa00b18 /athena
parent5bca2278b8ecb8ae3b933807d3cb9a207616127c (diff)
downloadchromium_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.cc19
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);
};