Index: chrome/browser/gtk/options/content_exceptions_window_gtk.cc |
=================================================================== |
--- chrome/browser/gtk/options/content_exceptions_window_gtk.cc (revision 51474) |
+++ chrome/browser/gtk/options/content_exceptions_window_gtk.cc (working copy) |
@@ -47,14 +47,11 @@ |
GtkWindow* parent, |
HostContentSettingsMap* map, |
ContentSettingsType type) { |
- // Build the list backing that GTK uses, along with an adapter which will |
- // sort stuff without changing the underlying backing store. |
+ // Build the model adapters that translate views and TableModels into |
+ // something GTK can use. |
list_store_ = gtk_list_store_new(COL_COUNT, G_TYPE_STRING, G_TYPE_STRING); |
- sort_list_store_ = gtk_tree_model_sort_new_with_model( |
- GTK_TREE_MODEL(list_store_)); |
- treeview_ = gtk_tree_view_new_with_model(GTK_TREE_MODEL(sort_list_store_)); |
+ treeview_ = gtk_tree_view_new_with_model(GTK_TREE_MODEL(list_store_)); |
g_object_unref(list_store_); |
- g_object_unref(sort_list_store_); |
// Set up the properties of the treeview |
gtk_tree_view_set_headers_visible(GTK_TREE_VIEW(treeview_), TRUE); |
@@ -188,7 +185,7 @@ |
int num_selected = gtk_tree_selection_count_selected_rows( |
treeview_selection_); |
int row_count = gtk_tree_model_iter_n_children( |
- GTK_TREE_MODEL(sort_list_store_), NULL); |
+ GTK_TREE_MODEL(list_store_), NULL); |
// TODO(erg): http://crbug.com/34177 , support editing of more than one entry |
// at a time. |
@@ -205,10 +202,10 @@ |
} |
void ContentExceptionsWindowGtk::Edit(GtkWidget* widget) { |
- std::set<std::pair<int, int> > indices; |
- GetSelectedModelIndices(&indices); |
+ std::set<int> indices; |
+ gtk_tree::GetSelectedIndices(treeview_selection_, &indices); |
DCHECK_GT(indices.size(), 0u); |
- int index = indices.begin()->first; |
+ int index = *indices.begin(); |
const HostContentSettingsMap::PatternSettingPair& entry = |
model_->entry_at(index); |
new ContentExceptionEditor(GTK_WINDOW(dialog_), this, model_.get(), index, |
@@ -216,16 +213,14 @@ |
} |
void ContentExceptionsWindowGtk::Remove(GtkWidget* widget) { |
- std::set<std::pair<int, int> > model_selected_indices; |
- GetSelectedModelIndices(&model_selected_indices); |
+ std::set<int> selected_indices; |
+ gtk_tree::GetSelectedIndices(treeview_selection_, &selected_indices); |
- int selected_row = gtk_tree_model_iter_n_children( |
- GTK_TREE_MODEL(sort_list_store_), NULL); |
- for (std::set<std::pair<int, int> >::reverse_iterator i = |
- model_selected_indices.rbegin(); |
- i != model_selected_indices.rend(); ++i) { |
- model_->RemoveException(i->first); |
- selected_row = std::min(selected_row, i->second); |
+ int selected_row = 0; |
+ for (std::set<int>::reverse_iterator i = selected_indices.rbegin(); |
+ i != selected_indices.rend(); ++i) { |
+ model_->RemoveException(*i); |
+ selected_row = *i; |
} |
int row_count = model_->RowCount(); |
@@ -262,25 +257,6 @@ |
return std::string(); |
} |
-void ContentExceptionsWindowGtk::GetSelectedModelIndices( |
- std::set<std::pair<int, int> >* indices) { |
- GtkTreeModel* model; |
- GList* paths = gtk_tree_selection_get_selected_rows(treeview_selection_, |
- &model); |
- for (GList* item = paths; item; item = item->next) { |
- GtkTreePath* sorted_path = reinterpret_cast<GtkTreePath*>(item->data); |
- int sorted_row = gtk_tree::GetRowNumForPath(sorted_path); |
- GtkTreePath* path = gtk_tree_model_sort_convert_path_to_child_path( |
- GTK_TREE_MODEL_SORT(sort_list_store_), sorted_path); |
- int row = gtk_tree::GetRowNumForPath(path); |
- gtk_tree_path_free(path); |
- indices->insert(std::make_pair(row, sorted_row)); |
- } |
- |
- g_list_foreach(paths, (GFunc)gtk_tree_path_free, NULL); |
- g_list_free(paths); |
-} |
- |
void ContentExceptionsWindowGtk::OnTreeViewRowActivate( |
GtkWidget* sender, |
GtkTreePath* path, |