Index: chrome/browser/cocoa/task_manager_mac.mm |
diff --git a/chrome/browser/cocoa/task_manager_mac.mm b/chrome/browser/cocoa/task_manager_mac.mm |
index f081dbb9b12f3eab5bd1686d177395785b127153..8aa4416453598fab7ec13db6d6e0e1909faa08ab 100644 |
--- a/chrome/browser/cocoa/task_manager_mac.mm |
+++ b/chrome/browser/cocoa/task_manager_mac.mm |
@@ -60,10 +60,19 @@ class SortHelper { |
model_(model) {} |
bool operator()(int a, int b) { |
- int cmp_result = model_->CompareValues(a, b, sort_column_ ); |
+ std::pair<int, int> group_range1 = model_->GetGroupRangeForResource(a); |
+ std::pair<int, int> group_range2 = model_->GetGroupRangeForResource(b); |
+ if (group_range1 == group_range2) { |
+ // The two rows are in the same group, sort so that items in the same |
+ // group always appear in the same order. |ascending_| is intentionally |
+ // ignored. |
+ return a < b; |
+ } |
+ // Sort by the first entry of each of the groups. |
+ int cmp_result = model_->CompareValues( |
+ group_range1.first, group_range2.first, sort_column_); |
if (!ascending_) |
cmp_result = -cmp_result; |
- // TODO(thakis): Do grouping like on GTK. |
return cmp_result < 0; |
} |
private: |
@@ -410,7 +419,8 @@ class SortHelper { |
NSString* title = [self modelTextForRow:rowIndex |
column:[[tableColumn identifier] intValue]]; |
[buttonCell setTitle:title]; |
- [buttonCell setImage:taskManagerObserver_->GetImageForRow(rowIndex)]; |
+ [buttonCell setImage: |
+ taskManagerObserver_->GetImageForRow(indexShuffle_[rowIndex])]; |
[buttonCell setRefusesFirstResponder:YES]; // Don't push in like a button. |
[buttonCell setHighlightsBy:NSNoCellMask]; |
} |