| Index: athena/home/home_card_impl.cc
|
| diff --git a/athena/home/home_card_impl.cc b/athena/home/home_card_impl.cc
|
| index aa605540c6d3333319954be25a7383d69e555954..6787d50344b02fd0dd75839ddaa16df8154a59cc 100644
|
| --- a/athena/home/home_card_impl.cc
|
| +++ b/athena/home/home_card_impl.cc
|
| @@ -26,6 +26,11 @@ class HomeCardLayoutManager : public aura::LayoutManager {
|
| : container_(container) {}
|
| virtual ~HomeCardLayoutManager() {}
|
|
|
| + void UpdateVirtualKeyboardBounds(const gfx::Rect& bounds) {
|
| + virtual_keyboard_bounds_ = bounds;
|
| + Layout();
|
| + }
|
| +
|
| private:
|
| // aura::LayoutManager:
|
| virtual void OnWindowResized() OVERRIDE { Layout(); }
|
| @@ -55,7 +60,10 @@ class HomeCardLayoutManager : public aura::LayoutManager {
|
| aura::Window* home_card = container_->children()[0];
|
| if (!home_card->IsVisible())
|
| return;
|
| +
|
| gfx::Rect screen_bounds = home_card->GetRootWindow()->bounds();
|
| + if (!virtual_keyboard_bounds_.IsEmpty())
|
| + screen_bounds.set_height(virtual_keyboard_bounds_.y());
|
| gfx::Rect card_bounds = screen_bounds;
|
| card_bounds.Inset(kHomeCardHorizontalMargin,
|
| screen_bounds.height() - kHomeCardHeight,
|
| @@ -66,6 +74,7 @@ class HomeCardLayoutManager : public aura::LayoutManager {
|
| }
|
|
|
| aura::Window* container_;
|
| + gfx::Rect virtual_keyboard_bounds_;
|
|
|
| DISALLOW_COPY_AND_ASSIGN(HomeCardLayoutManager);
|
| };
|
| @@ -86,6 +95,8 @@ class HomeCardImpl : public HomeCard, public AcceleratorHandler {
|
| // Overridden from HomeCard:
|
| virtual void RegisterSearchProvider(
|
| app_list::SearchProvider* search_provider) OVERRIDE;
|
| + virtual void UpdateVirtualKeyboardBounds(
|
| + const gfx::Rect& bounds) OVERRIDE;
|
|
|
| // AcceleratorHandler:
|
| virtual bool IsCommandEnabled(int command_id) const OVERRIDE { return true; }
|
| @@ -103,6 +114,7 @@ class HomeCardImpl : public HomeCard, public AcceleratorHandler {
|
|
|
| views::Widget* home_card_widget_;
|
| AppListViewDelegate* view_delegate_;
|
| + HomeCardLayoutManager* layout_manager_;
|
|
|
| // Right now HomeCard allows only one search provider.
|
| // TODO(mukai): port app-list's SearchController and Mixer.
|
| @@ -113,7 +125,8 @@ class HomeCardImpl : public HomeCard, public AcceleratorHandler {
|
|
|
| HomeCardImpl::HomeCardImpl(AppModelBuilder* model_builder)
|
| : model_builder_(model_builder),
|
| - home_card_widget_(NULL) {
|
| + home_card_widget_(NULL),
|
| + layout_manager_(NULL) {
|
| DCHECK(!instance);
|
| instance = this;
|
| }
|
| @@ -132,12 +145,18 @@ void HomeCardImpl::RegisterSearchProvider(
|
| view_delegate_->RegisterSearchProvider(search_provider_.get());
|
| }
|
|
|
| +void HomeCardImpl::UpdateVirtualKeyboardBounds(
|
| + const gfx::Rect& bounds) {
|
| + layout_manager_->UpdateVirtualKeyboardBounds(bounds);
|
| +}
|
| +
|
| void HomeCardImpl::Init() {
|
| InstallAccelerators();
|
|
|
| aura::Window* container =
|
| ScreenManager::Get()->CreateContainer("HomeCardContainer");
|
| - container->SetLayoutManager(new HomeCardLayoutManager(container));
|
| + layout_manager_ = new HomeCardLayoutManager(container);
|
| + container->SetLayoutManager(layout_manager_);
|
| wm::SetChildWindowVisibilityChangesAnimated(container);
|
|
|
| view_delegate_ = new AppListViewDelegate(model_builder_.get());
|
|
|