Index: chrome/browser/gtk/bookmark_manager_gtk.cc |
=================================================================== |
--- chrome/browser/gtk/bookmark_manager_gtk.cc (revision 18411) |
+++ chrome/browser/gtk/bookmark_manager_gtk.cc (working copy) |
@@ -112,11 +112,7 @@ |
// Update right store. |
if (parent->id() == GetFolder()->id()) { |
- GtkTreeIter iter = { 0, }; |
- if (RecursiveFind(GTK_TREE_MODEL(right_store_), &iter, |
- parent->GetChild(index - 1)->id())) { |
- AppendNodeToRightStore(node, &iter); |
- } |
+ AppendNodeToRightStore(node, index); |
} |
} |
@@ -312,24 +308,24 @@ |
g_signal_connect(right_selection(), "changed", |
G_CALLBACK(OnRightSelectionChanged), this); |
- gtk_tree_view_enable_model_drag_source(GTK_TREE_VIEW(right_tree_view_), |
- GDK_BUTTON1_MASK, |
- bookmark_utils::kTargetTable, |
- bookmark_utils::kTargetTableSize, |
- GDK_ACTION_MOVE); |
- gtk_tree_view_enable_model_drag_dest(GTK_TREE_VIEW(right_tree_view_), |
- bookmark_utils::kTargetTable, |
- bookmark_utils::kTargetTableSize, |
- GDK_ACTION_MOVE); |
+ // TODO(estade): support GDK_ACTION_COPY for dragging to other apps. |
+ gtk_drag_source_set(right_tree_view_, |
+ GDK_BUTTON1_MASK, |
+ bookmark_utils::kTargetTable, |
+ bookmark_utils::kTargetTableSize, |
+ GDK_ACTION_MOVE); |
+ gtk_drag_dest_set(right_tree_view_, GTK_DEST_DEFAULT_ALL, |
+ bookmark_utils::kTargetTable, |
+ bookmark_utils::kTargetTableSize, |
+ GDK_ACTION_MOVE); |
g_signal_connect(right_tree_view_, "drag-data-get", |
G_CALLBACK(&OnRightTreeViewDragGet), this); |
g_signal_connect(right_tree_view_, "drag-data-received", |
G_CALLBACK(&OnRightTreeViewDragReceived), this); |
g_signal_connect(right_tree_view_, "drag-motion", |
G_CALLBACK(&OnRightTreeViewDragMotion), this); |
- // Connect after so we can overwrite the drag icon. |
- g_signal_connect_after(right_tree_view_, "drag-begin", |
- G_CALLBACK(&OnRightTreeViewDragBegin), this); |
+ g_signal_connect(right_tree_view_, "drag-begin", |
+ G_CALLBACK(&OnRightTreeViewDragBegin), this); |
GtkWidget* scrolled = gtk_scrolled_window_new(NULL, NULL); |
gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrolled), |
@@ -356,11 +352,9 @@ |
// or search), but until then we require that node != NULL. |
DCHECK(node); |
gtk_list_store_clear(right_store_); |
- GtkTreeIter iter; |
- for (int i = 0; i < node->GetChildCount(); ++i) { |
- AppendNodeToRightStore(node->GetChild(i), &iter); |
- } |
+ for (int i = 0; i < node->GetChildCount(); ++i) |
+ AppendNodeToRightStore(node->GetChild(i), i); |
} |
BookmarkNode* BookmarkManagerGtk::GetNodeAt(GtkTreeModel* model, |
@@ -401,10 +395,19 @@ |
} |
void BookmarkManagerGtk::AppendNodeToRightStore(BookmarkNode* node, |
- GtkTreeIter* iter) { |
+ int index) { |
+ GtkTreeIter iter; |
+ if (index == 0) { |
+ gtk_tree_model_get_iter_first(GTK_TREE_MODEL(right_store_), &iter); |
+ gtk_list_store_prepend(right_store_, &iter); |
+ } else { |
+ gtk_tree_model_iter_nth_child(GTK_TREE_MODEL(right_store_), &iter, NULL, |
+ index - 1); |
+ gtk_list_store_append(right_store_, &iter); |
+ } |
+ |
GdkPixbuf* pixbuf = bookmark_utils::GetPixbufForNode(node, model_); |
- gtk_list_store_append(right_store_, iter); |
- gtk_list_store_set(right_store_, iter, |
+ gtk_list_store_set(right_store_, &iter, |
RIGHT_PANE_PIXBUF, pixbuf, |
RIGHT_PANE_TITLE, WideToUTF8(node->GetTitle()).c_str(), |
RIGHT_PANE_URL, node->GetURL().spec().c_str(), |
@@ -516,7 +519,7 @@ |
it != nodes.end(); ++it) { |
// Don't try to drop a node into one of its descendants. |
if (!folder->HasAncestor(*it)) |
- bm->model_->Move(*it, folder, 0); |
+ bm->model_->Move(*it, folder, folder->GetChildCount()); |
} |
gtk_tree_path_free(path); |