| Index: ui/app_list/views/search_result_tile_item_list_view.cc
|
| diff --git a/ui/app_list/views/search_result_tile_item_list_view.cc b/ui/app_list/views/search_result_tile_item_list_view.cc
|
| index 446d70041c6298ad5d511d61838ac3ecd9143691..344db2a3a14e91c10ea7754e0be3f1e0760bab52 100644
|
| --- a/ui/app_list/views/search_result_tile_item_list_view.cc
|
| +++ b/ui/app_list/views/search_result_tile_item_list_view.cc
|
| @@ -15,6 +15,7 @@
|
| #include "ui/gfx/geometry/insets.h"
|
| #include "ui/views/background.h"
|
| #include "ui/views/border.h"
|
| +#include "ui/views/controls/separator.h"
|
| #include "ui/views/controls/textfield/textfield.h"
|
| #include "ui/views/layout/box_layout.h"
|
|
|
| @@ -27,9 +28,14 @@ constexpr int kBetweenTileSpacing = 2;
|
| constexpr int kTopBottomPadding = 8;
|
|
|
| // Layout constants used when fullscreen app list feature is enabled.
|
| +constexpr size_t kMaxNumSearchResultTiles = 6;
|
| constexpr int kItemListVerticalSpacing = 16;
|
| constexpr int kItemListHorizontalSpacing = 12;
|
| constexpr int kBetweenItemSpacing = 8;
|
| +constexpr int kSeparatorLeftRightPadding = 4;
|
| +constexpr int kSeparatorHeight = 36;
|
| +
|
| +constexpr SkColor kSeparatorColor = SkColorSetARGBMacro(0x1F, 0x00, 0x00, 0x00);
|
|
|
| } // namespace
|
|
|
| @@ -45,22 +51,36 @@ SearchResultTileItemListView::SearchResultTileItemListView(
|
| views::BoxLayout::kHorizontal,
|
| gfx::Insets(kItemListVerticalSpacing, kItemListHorizontalSpacing),
|
| kBetweenItemSpacing));
|
| + for (size_t i = 0; i < kMaxNumSearchResultTiles; ++i) {
|
| + views::Separator* separator = new views::Separator;
|
| + separator->SetVisible(false);
|
| + separator->SetBorder(views::CreateEmptyBorder(
|
| + 0, kSeparatorLeftRightPadding, kSearchTileHeight - kSeparatorHeight,
|
| + kSeparatorLeftRightPadding));
|
| + separator->SetColor(kSeparatorColor);
|
| +
|
| + separator_views_.push_back(separator);
|
| + AddChildView(separator);
|
| +
|
| + SearchResultTileItemView* tile_item =
|
| + new SearchResultTileItemView(this, view_delegate);
|
| + tile_item->SetParentBackgroundColor(kCardBackgroundColor);
|
| + tile_views_.push_back(tile_item);
|
| + AddChildView(tile_item);
|
| + }
|
| } else {
|
| SetLayoutManager(new views::BoxLayout(
|
| views::BoxLayout::kHorizontal, gfx::Insets(0, kHorizontalBorderSpacing),
|
| kBetweenTileSpacing));
|
| - }
|
| -
|
| - for (size_t i = 0; i < kNumSearchResultTiles; ++i) {
|
| - SearchResultTileItemView* tile_item =
|
| - new SearchResultTileItemView(this, view_delegate);
|
| - tile_item->SetParentBackgroundColor(kCardBackgroundColor);
|
| - if (!is_fullscreen_app_list_enabled_) {
|
| + for (size_t i = 0; i < kNumSearchResultTiles; ++i) {
|
| + SearchResultTileItemView* tile_item =
|
| + new SearchResultTileItemView(this, view_delegate);
|
| + tile_item->SetParentBackgroundColor(kCardBackgroundColor);
|
| tile_item->SetBorder(
|
| views::CreateEmptyBorder(kTopBottomPadding, 0, kTopBottomPadding, 0));
|
| + tile_views_.push_back(tile_item);
|
| + AddChildView(tile_item);
|
| }
|
| - tile_views_.push_back(tile_item);
|
| - AddChildView(tile_item);
|
| }
|
| }
|
|
|
| @@ -92,11 +112,42 @@ int SearchResultTileItemListView::GetYSize() {
|
| int SearchResultTileItemListView::DoUpdate() {
|
| std::vector<SearchResult*> display_results =
|
| AppListModel::FilterSearchResultsByDisplayType(
|
| - results(), SearchResult::DISPLAY_TILE, kNumSearchResultTiles);
|
| - for (size_t i = 0; i < kNumSearchResultTiles; ++i) {
|
| - SearchResult* item =
|
| - i < display_results.size() ? display_results[i] : nullptr;
|
| - tile_views_[i]->SetSearchResult(item);
|
| + results(), SearchResult::DISPLAY_TILE,
|
| + is_fullscreen_app_list_enabled_ ? kMaxNumSearchResultTiles
|
| + : kNumSearchResultTiles);
|
| +
|
| + if (is_fullscreen_app_list_enabled_) {
|
| + SearchResult::ResultType previous_type = SearchResult::RESULT_UNKNOWN;
|
| +
|
| + for (size_t i = 0; i < kMaxNumSearchResultTiles; ++i) {
|
| + if (i >= display_results.size()) {
|
| + separator_views_[i]->SetVisible(false);
|
| + tile_views_[i]->SetSearchResult(nullptr);
|
| + continue;
|
| + }
|
| +
|
| + SearchResult* item = display_results[i];
|
| + tile_views_[i]->SetSearchResult(item);
|
| +
|
| + if (i > 0 && item->result_type() != previous_type) {
|
| + // Add a separator to separate search results of different types.
|
| + // The strategy here is to only add a separator only if current search
|
| + // result type is different from the previous one. The strategy is
|
| + // based on the assumption that the search results are already
|
| + // separated in groups based on their result types.
|
| + separator_views_[i]->SetVisible(true);
|
| + } else {
|
| + separator_views_[i]->SetVisible(false);
|
| + }
|
| +
|
| + previous_type = item->result_type();
|
| + }
|
| + } else {
|
| + for (size_t i = 0; i < kNumSearchResultTiles; ++i) {
|
| + SearchResult* item =
|
| + i < display_results.size() ? display_results[i] : nullptr;
|
| + tile_views_[i]->SetSearchResult(item);
|
| + }
|
| }
|
|
|
| set_container_score(
|
|
|