Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(527)

Unified Diff: ui/app_list/views/start_page_view.cc

Issue 2609843004: Fix the Crash in the launcher's start page (a better approach). (Closed)
Patch Set: Created 3 years, 12 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « ui/app_list/views/search_result_tile_item_list_view.cc ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: ui/app_list/views/start_page_view.cc
diff --git a/ui/app_list/views/start_page_view.cc b/ui/app_list/views/start_page_view.cc
index 0bac15b7b2ab6f8edd0963a7683af447347acb52..fd5b60748d9719fc5997525c41b6f02fe93f6917 100644
--- a/ui/app_list/views/start_page_view.cc
+++ b/ui/app_list/views/start_page_view.cc
@@ -126,8 +126,6 @@ class StartPageView::StartPageTilesContainer
AllAppsTileItemView* all_apps_button() { return all_apps_button_; }
// Overridden from SearchResultContainerView:
- int Update() override;
- void UpdateSelectedIndex(int old_selected, int new_selected) override;
void OnContainerSelected(bool from_bottom,
bool directional_movement) override;
void NotifyFirstResultYIndex(int y_index) override;
@@ -136,6 +134,10 @@ class StartPageView::StartPageTilesContainer
private:
void CreateAppsGrid(int apps_num);
+ // Overridden from SearchResultContainerView:
+ int DoUpdate() override;
+ void UpdateSelectedIndex(int old_selected, int new_selected) override;
xiyuan 2017/01/04 00:12:09 nit: I don't have a strong preference of whether t
xdai1 2017/01/04 00:30:20 Just curious, why should we keep the overridden me
xiyuan 2017/01/04 00:36:27 Think that would make it easier to read. And style
xdai1 2017/01/04 23:18:41 Done. Thanks for the reference!
+
ContentsView* contents_view_;
AppListViewDelegate* view_delegate_;
@@ -171,53 +173,6 @@ TileItemView* StartPageView::StartPageTilesContainer::GetTileItemView(
return search_result_tile_views_[index];
}
-int StartPageView::StartPageTilesContainer::Update() {
- // Ignore updates and disable buttons when transitioning to a different
- // state.
- if (contents_view_->GetActiveState() != AppListModel::STATE_START) {
- for (auto* view : search_result_tile_views_)
- view->SetEnabled(false);
-
- return num_results();
- }
-
- std::vector<SearchResult*> display_results =
- AppListModel::FilterSearchResultsByDisplayType(
- results(), SearchResult::DISPLAY_RECOMMENDATION, kNumStartPageTiles);
- if (display_results.size() != search_result_tile_views_.size()) {
- // We should recreate the grid layout in this case.
- for (size_t i = 0; i < search_result_tile_views_.size(); ++i)
- delete search_result_tile_views_[i];
- search_result_tile_views_.clear();
- RemoveChildView(all_apps_button_);
- CreateAppsGrid(std::min(kNumStartPageTiles, display_results.size()));
- }
-
- // Update the tile item results.
- for (size_t i = 0; i < search_result_tile_views_.size(); ++i) {
- SearchResult* item = nullptr;
- if (i < display_results.size())
- item = display_results[i];
- search_result_tile_views_[i]->SetSearchResult(item);
- search_result_tile_views_[i]->SetEnabled(true);
- }
-
- Layout();
- parent()->Layout();
- // Add 1 to the results size to account for the all apps button.
- return display_results.size() + 1;
-}
-
-void StartPageView::StartPageTilesContainer::UpdateSelectedIndex(
- int old_selected,
- int new_selected) {
- if (old_selected >= 0)
- GetTileItemView(old_selected)->SetSelected(false);
-
- if (new_selected >= 0)
- GetTileItemView(new_selected)->SetSelected(true);
-}
-
void StartPageView::StartPageTilesContainer::OnContainerSelected(
bool /*from_bottom*/,
bool /*directional_movement*/) {
@@ -269,6 +224,53 @@ void StartPageView::StartPageTilesContainer::CreateAppsGrid(int apps_num) {
AddChildView(all_apps_button_);
}
+int StartPageView::StartPageTilesContainer::DoUpdate() {
+ // Ignore updates and disable buttons when transitioning to a different
+ // state.
+ if (contents_view_->GetActiveState() != AppListModel::STATE_START) {
+ for (auto* view : search_result_tile_views_)
+ view->SetEnabled(false);
+
+ return num_results();
+ }
+
+ std::vector<SearchResult*> display_results =
+ AppListModel::FilterSearchResultsByDisplayType(
+ results(), SearchResult::DISPLAY_RECOMMENDATION, kNumStartPageTiles);
+ if (display_results.size() != search_result_tile_views_.size()) {
+ // We should recreate the grid layout in this case.
+ for (size_t i = 0; i < search_result_tile_views_.size(); ++i)
+ delete search_result_tile_views_[i];
+ search_result_tile_views_.clear();
+ RemoveChildView(all_apps_button_);
+ CreateAppsGrid(std::min(kNumStartPageTiles, display_results.size()));
+ }
+
+ // Update the tile item results.
+ for (size_t i = 0; i < search_result_tile_views_.size(); ++i) {
+ SearchResult* item = nullptr;
+ if (i < display_results.size())
+ item = display_results[i];
+ search_result_tile_views_[i]->SetSearchResult(item);
+ search_result_tile_views_[i]->SetEnabled(true);
+ }
+
+ Layout();
+ parent()->Layout();
+ // Add 1 to the results size to account for the all apps button.
+ return display_results.size() + 1;
+}
+
+void StartPageView::StartPageTilesContainer::UpdateSelectedIndex(
+ int old_selected,
+ int new_selected) {
+ if (old_selected >= 0 && old_selected < num_results())
+ GetTileItemView(old_selected)->SetSelected(false);
+
+ if (new_selected >= 0 && new_selected < num_results())
+ GetTileItemView(new_selected)->SetSelected(true);
+}
+
////////////////////////////////////////////////////////////////////////////////
// StartPageView implementation:
StartPageView::StartPageView(AppListMainView* app_list_main_view,
@@ -360,8 +362,8 @@ void StartPageView::OnShown() {
custom_page_view->SetVisible(
app_list_main_view_->ShouldShowCustomLauncherPage());
}
- tiles_container_->Update();
tiles_container_->ClearSelectedIndex();
+ tiles_container_->Update();
custom_launcher_page_background_->SetSelected(false);
}
« no previous file with comments | « ui/app_list/views/search_result_tile_item_list_view.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698