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

Side by Side Diff: ui/views/controls/table/table_view.cc

Issue 2026793002: TableView: use a stable_sort instead of a sort, since the comparisons may not be totally ordered. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 6 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 unified diff | Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "ui/views/controls/table/table_view.h" 5 #include "ui/views/controls/table/table_view.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 8
9 #include <algorithm>
9 #include <map> 10 #include <map>
10 #include <utility> 11 #include <utility>
11 12
12 #include "base/auto_reset.h" 13 #include "base/auto_reset.h"
13 #include "base/i18n/rtl.h" 14 #include "base/i18n/rtl.h"
14 #include "base/strings/string_util.h" 15 #include "base/strings/string_util.h"
15 #include "base/strings/utf_string_conversions.h" 16 #include "base/strings/utf_string_conversions.h"
16 #include "ui/accessibility/ax_view_state.h" 17 #include "ui/accessibility/ax_view_state.h"
17 #include "ui/events/event.h" 18 #include "ui/events/event.h"
18 #include "ui/gfx/canvas.h" 19 #include "ui/gfx/canvas.h"
(...skipping 634 matching lines...) Expand 10 before | Expand all | Expand 10 after
653 } else { 654 } else {
654 const int row_count = RowCount(); 655 const int row_count = RowCount();
655 view_to_model_.resize(row_count); 656 view_to_model_.resize(row_count);
656 model_to_view_.resize(row_count); 657 model_to_view_.resize(row_count);
657 for (int i = 0; i < row_count; ++i) 658 for (int i = 0; i < row_count; ++i)
658 view_to_model_[i] = i; 659 view_to_model_[i] = i;
659 if (grouper_) { 660 if (grouper_) {
660 GroupSortHelper sort_helper(this); 661 GroupSortHelper sort_helper(this);
661 GetModelIndexToRangeStart(grouper_, RowCount(), 662 GetModelIndexToRangeStart(grouper_, RowCount(),
662 &sort_helper.model_index_to_range_start); 663 &sort_helper.model_index_to_range_start);
663 std::sort(view_to_model_.begin(), view_to_model_.end(), sort_helper); 664 std::stable_sort(view_to_model_.begin(), view_to_model_.end(),
665 sort_helper);
664 } else { 666 } else {
665 std::sort(view_to_model_.begin(), view_to_model_.end(), SortHelper(this)); 667 std::stable_sort(view_to_model_.begin(), view_to_model_.end(),
668 SortHelper(this));
666 } 669 }
667 for (int i = 0; i < row_count; ++i) 670 for (int i = 0; i < row_count; ++i)
668 model_to_view_[view_to_model_[i]] = i; 671 model_to_view_[view_to_model_[i]] = i;
669 model_->ClearCollator(); 672 model_->ClearCollator();
670 } 673 }
671 SchedulePaint(); 674 SchedulePaint();
672 } 675 }
673 676
674 int TableView::CompareRows(int model_row1, int model_row2) { 677 int TableView::CompareRows(int model_row1, int model_row2) {
675 const int sort_result = model_->CompareValues( 678 const int sort_result = model_->CompareValues(
(...skipping 273 matching lines...) Expand 10 before | Expand all | Expand 10 after
949 if (tooltip) 952 if (tooltip)
950 *tooltip = text; 953 *tooltip = text;
951 if (tooltip_origin) { 954 if (tooltip_origin) {
952 tooltip_origin->SetPoint(cell_bounds.x(), 955 tooltip_origin->SetPoint(cell_bounds.x(),
953 cell_bounds.y() + kTextVerticalPadding); 956 cell_bounds.y() + kTextVerticalPadding);
954 } 957 }
955 return true; 958 return true;
956 } 959 }
957 960
958 } // namespace views 961 } // namespace views
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698