Index: athena/home/home_card_impl.cc |
diff --git a/athena/home/home_card_impl.cc b/athena/home/home_card_impl.cc |
index 6787d50344b02fd0dd75839ddaa16df8154a59cc..5edf5de4ff1fd7603c83474b232f6fe00fa962d0 100644 |
--- a/athena/home/home_card_impl.cc |
+++ b/athena/home/home_card_impl.cc |
@@ -93,6 +93,7 @@ class HomeCardImpl : public HomeCard, public AcceleratorHandler { |
void InstallAccelerators(); |
// Overridden from HomeCard: |
+ virtual void SetState(State state) OVERRIDE; |
virtual void RegisterSearchProvider( |
app_list::SearchProvider* search_provider) OVERRIDE; |
virtual void UpdateVirtualKeyboardBounds( |
@@ -103,15 +104,17 @@ class HomeCardImpl : public HomeCard, public AcceleratorHandler { |
virtual bool OnAcceleratorFired(int command_id, |
const ui::Accelerator& accelerator) OVERRIDE { |
DCHECK_EQ(COMMAND_SHOW_HOME_CARD, command_id); |
- if (home_card_widget_->IsVisible()) |
- home_card_widget_->Hide(); |
+ if (state_ == HIDDEN) |
+ SetState(VISIBLE_CENTERED); |
else |
- home_card_widget_->Show(); |
+ SetState(HIDDEN); |
return true; |
} |
scoped_ptr<AppModelBuilder> model_builder_; |
+ HomeCard::State state_; |
+ |
views::Widget* home_card_widget_; |
AppListViewDelegate* view_delegate_; |
HomeCardLayoutManager* layout_manager_; |
@@ -125,6 +128,7 @@ class HomeCardImpl : public HomeCard, public AcceleratorHandler { |
HomeCardImpl::HomeCardImpl(AppModelBuilder* model_builder) |
: model_builder_(model_builder), |
+ state_(HIDDEN), |
home_card_widget_(NULL), |
layout_manager_(NULL) { |
DCHECK(!instance); |
@@ -138,6 +142,14 @@ HomeCardImpl::~HomeCardImpl() { |
instance = NULL; |
} |
+void HomeCardImpl::SetState(HomeCard::State state) { |
+ if (state == HIDDEN) |
+ home_card_widget_->Hide(); |
+ else |
+ home_card_widget_->Show(); |
+ state_ = state; |
+} |
+ |
void HomeCardImpl::RegisterSearchProvider( |
app_list::SearchProvider* search_provider) { |
DCHECK(!search_provider_); |
@@ -170,6 +182,8 @@ void HomeCardImpl::Init() { |
views::BubbleBorder::FLOAT, |
true /* border_accepts_events */); |
home_card_widget_ = view->GetWidget(); |
+ // TODO: the initial value might not be visible. |
+ state_ = VISIBLE_CENTERED; |
view->ShowWhenReady(); |
} |