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

Unified Diff: chrome/browser/gtk/bookmark_tree_model.cc

Issue 210036: Make it possible to edit bookmark folder names inline. This (Closed)
Patch Set: comments Created 11 years, 3 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/browser/gtk/bookmark_tree_model.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/gtk/bookmark_tree_model.cc
diff --git a/chrome/browser/gtk/bookmark_tree_model.cc b/chrome/browser/gtk/bookmark_tree_model.cc
index dd63a8dd94a4ad960c86e2ae7b4030b0bb2f1861..2d59a186db3f51f35f4b6146914da26c20996f08 100644
--- a/chrome/browser/gtk/bookmark_tree_model.cc
+++ b/chrome/browser/gtk/bookmark_tree_model.cc
@@ -14,6 +14,8 @@
namespace {
+const char* kCellRendererTextKey = "__CELL_RENDERER_TEXT__";
+
void AddSingleNodeToTreeStore(GtkTreeStore* store, const BookmarkNode* node,
GtkTreeIter *iter, GtkTreeIter* parent) {
gtk_tree_store_append(store, iter, parent);
@@ -23,12 +25,11 @@ void AddSingleNodeToTreeStore(GtkTreeStore* store, const BookmarkNode* node,
// (and indeed, Nautilus does not render an expanded directory any
// differently).
gtk_tree_store_set(store, iter,
- bookmark_utils::FOLDER_ICON,
- GtkThemeProvider::GetFolderIcon(true),
- bookmark_utils::FOLDER_NAME,
- WideToUTF8(node->GetTitle()).c_str(),
- bookmark_utils::ITEM_ID, node->id(),
- -1);
+ bookmark_utils::FOLDER_ICON, GtkThemeProvider::GetFolderIcon(true),
+ bookmark_utils::FOLDER_NAME, WideToUTF8(node->GetTitle()).c_str(),
+ bookmark_utils::ITEM_ID, node->id(),
+ bookmark_utils::IS_EDITABLE, node->is_folder(),
+ -1);
}
// Helper function for CommitTreeStoreDifferencesBetween() which recursively
@@ -73,13 +74,27 @@ void RecursiveResolve(BookmarkModel* bb_model, const BookmarkNode* bb_node,
}
}
+// Update the folder name in the GtkTreeStore.
+void OnFolderNameEdited(GtkCellRendererText* render,
+ gchar* path, gchar* new_folder_name, GtkTreeStore* tree_store) {
+ GtkTreeIter folder_iter;
+ GtkTreePath* tree_path = gtk_tree_path_new_from_string(path);
+ gboolean rv = gtk_tree_model_get_iter(GTK_TREE_MODEL(tree_store),
+ &folder_iter, tree_path);
+ DCHECK(rv);
+ gtk_tree_store_set(tree_store, &folder_iter,
+ bookmark_utils::FOLDER_NAME, new_folder_name,
+ -1);
+ gtk_tree_path_free(tree_path);
+}
+
} // namespace
namespace bookmark_utils {
GtkTreeStore* MakeFolderTreeStore() {
return gtk_tree_store_new(FOLDER_STORE_NUM_COLUMNS, GDK_TYPE_PIXBUF,
- G_TYPE_STRING, G_TYPE_INT64);
+ G_TYPE_STRING, G_TYPE_INT64, G_TYPE_BOOLEAN);
}
void AddToTreeStore(BookmarkModel* model, int64 selected_id,
@@ -99,18 +114,28 @@ GtkWidget* MakeTreeViewForStore(GtkTreeStore* store) {
"pixbuf", FOLDER_ICON);
GtkCellRenderer* text_renderer = gtk_cell_renderer_text_new();
g_object_set(text_renderer, "ellipsize", PANGO_ELLIPSIZE_END, NULL);
+ g_signal_connect(text_renderer, "edited", G_CALLBACK(OnFolderNameEdited),
+ store);
gtk_tree_view_column_pack_start(column, text_renderer, TRUE);
- gtk_tree_view_column_add_attribute(column, text_renderer,
- "text", FOLDER_NAME);
+ gtk_tree_view_column_set_attributes(column, text_renderer,
+ "text", FOLDER_NAME,
+ "editable", IS_EDITABLE,
+ NULL);
GtkWidget* tree_view = gtk_tree_view_new_with_model(GTK_TREE_MODEL(store));
// Let |tree_view| own the store.
g_object_unref(store);
gtk_tree_view_set_headers_visible(GTK_TREE_VIEW(tree_view), FALSE);
gtk_tree_view_append_column(GTK_TREE_VIEW(tree_view), column);
+ g_object_set_data(G_OBJECT(tree_view), kCellRendererTextKey, text_renderer);
return tree_view;
}
+GtkCellRenderer* GetCellRendererText(GtkTreeView* tree_view) {
+ return static_cast<GtkCellRenderer*>(
+ g_object_get_data(G_OBJECT(tree_view), kCellRendererTextKey));
+}
+
void AddToTreeStoreAt(const BookmarkNode* node, int64 selected_id,
GtkTreeStore* store, GtkTreeIter* selected_iter,
GtkTreeIter* parent) {
« no previous file with comments | « chrome/browser/gtk/bookmark_tree_model.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698