Update To 11.40.268.0
[platform/framework/web/crosswalk.git] / src / ui / app_list / app_list_item_list.cc
index e7c9350..82a17c0 100644 (file)
@@ -124,6 +124,28 @@ void AppListItemList::SetItemPosition(AppListItem* item,
                     OnListItemMoved(from_index, to_index, item));
 }
 
+void AppListItemList::HighlightItemInstalledFromUI(const std::string& id) {
+  // Items within folders are not highlighted (apps are never installed to a
+  // folder initially). So just search the top-level list.
+  size_t index;
+  if (FindItemIndex(highlighted_id_, &index)) {
+    item_at(index)->set_highlighted(false);
+    FOR_EACH_OBSERVER(AppListItemListObserver,
+                      observers_,
+                      OnAppListItemHighlight(index, false));
+  }
+  highlighted_id_ = id;
+  if (!FindItemIndex(highlighted_id_, &index)) {
+    // If the item isin't in the app list yet, it will be highlighted later, in
+    // AddItem().
+    return;
+  }
+
+  item_at(index)->set_highlighted(true);
+  FOR_EACH_OBSERVER(
+      AppListItemListObserver, observers_, OnAppListItemHighlight(index, true));
+}
+
 // AppListItemList private
 
 syncer::StringOrdinal AppListItemList::CreatePositionBefore(
@@ -159,6 +181,14 @@ AppListItem* AppListItemList::AddItem(scoped_ptr<AppListItem> item_ptr) {
   FOR_EACH_OBSERVER(AppListItemListObserver,
                     observers_,
                     OnListItemAdded(index, item));
+
+  if (item->id() == highlighted_id_) {
+    // Item not present when highlight requested, so highlight it now.
+    item->set_highlighted(true);
+    FOR_EACH_OBSERVER(AppListItemListObserver,
+                      observers_,
+                      OnAppListItemHighlight(index, true));
+  }
   return item;
 }