[gimp] app: fix GimpContainerTreeView name editing so it always works the same
- From: Michael Natterer <mitch src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gimp] app: fix GimpContainerTreeView name editing so it always works the same
- Date: Mon, 6 Feb 2012 18:31:08 +0000 (UTC)
commit f72806bbcd299bee1e26c8956d05b0a05c69adda
Author: Michael Natterer <mitch gimp org>
Date: Mon Feb 6 19:28:37 2012 +0100
app: fix GimpContainerTreeView name editing so it always works the same
no matter how editing was started (double click, keyboard activate, F2).
Connect to "editing-started" of the name cell and set the object's
real name directly on the GtkCellEditable, instead of trying to hack
around in the tree store before the actual editing starts.
app/widgets/gimpcontainertreeview.c | 67 ++++++++++++++++++++---------------
1 files changed, 38 insertions(+), 29 deletions(-)
---
diff --git a/app/widgets/gimpcontainertreeview.c b/app/widgets/gimpcontainertreeview.c
index 005eff4..f14eb28 100644
--- a/app/widgets/gimpcontainertreeview.c
+++ b/app/widgets/gimpcontainertreeview.c
@@ -90,6 +90,10 @@ static void gimp_container_tree_view_set_view_size (GimpContainerVi
static void gimp_container_tree_view_real_edit_name (GimpContainerTreeView *tree_view);
+static void gimp_container_tree_view_name_started (GtkCellRendererText *cell,
+ GtkCellEditable *editable,
+ const gchar *path_str,
+ GimpContainerTreeView *tree_view);
static void gimp_container_tree_view_name_canceled (GtkCellRendererText *cell,
GimpContainerTreeView *tree_view);
@@ -274,6 +278,9 @@ gimp_container_tree_view_constructed (GObject *object)
"sensitive", GIMP_CONTAINER_TREE_STORE_COLUMN_NAME_SENSITIVE,
NULL);
+ g_signal_connect (tree_view->priv->name_cell, "editing-started",
+ G_CALLBACK (gimp_container_tree_view_name_started),
+ tree_view);
g_signal_connect (tree_view->priv->name_cell, "editing-canceled",
G_CALLBACK (gimp_container_tree_view_name_canceled),
tree_view);
@@ -811,22 +818,7 @@ gimp_container_tree_view_real_edit_name (GimpContainerTreeView *tree_view)
gimp_container_tree_view_get_selected_single (tree_view,
&selected_iter))
{
- GimpViewRenderer *renderer;
- const gchar *real_name;
- GtkTreePath *path;
-
- gtk_tree_model_get (tree_view->model, &selected_iter,
- GIMP_CONTAINER_TREE_STORE_COLUMN_RENDERER, &renderer,
- -1);
-
- real_name = gimp_object_get_name (renderer->viewable);
-
- g_object_unref (renderer);
-
- gtk_tree_store_set (GTK_TREE_STORE (tree_view->model),
- &selected_iter,
- GIMP_CONTAINER_TREE_STORE_COLUMN_NAME, real_name,
- -1);
+ GtkTreePath *path;
path = gtk_tree_model_get_path (tree_view->model, &selected_iter);
@@ -843,6 +835,36 @@ gimp_container_tree_view_real_edit_name (GimpContainerTreeView *tree_view)
/* callbacks */
static void
+gimp_container_tree_view_name_started (GtkCellRendererText *cell,
+ GtkCellEditable *editable,
+ const gchar *path_str,
+ GimpContainerTreeView *tree_view)
+{
+ GtkTreePath *path;
+ GtkTreeIter iter;
+
+ path = gtk_tree_path_new_from_string (path_str);
+
+ if (gtk_tree_model_get_iter (tree_view->model, &iter, path))
+ {
+ GimpViewRenderer *renderer;
+ const gchar *real_name;
+
+ gtk_tree_model_get (tree_view->model, &iter,
+ GIMP_CONTAINER_TREE_STORE_COLUMN_RENDERER, &renderer,
+ -1);
+
+ real_name = gimp_object_get_name (renderer->viewable);
+
+ g_object_unref (renderer);
+
+ gtk_entry_set_text (GTK_ENTRY (editable), real_name);
+ }
+
+ gtk_tree_path_free (path);
+}
+
+static void
gimp_container_tree_view_name_canceled (GtkCellRendererText *cell,
GimpContainerTreeView *tree_view)
{
@@ -1107,19 +1129,6 @@ gimp_container_tree_view_button_press (GtkWidget *widget,
{
if (edit_cell)
{
- if (edit_cell == tree_view->priv->name_cell)
- {
- const gchar *real_name;
-
- real_name = gimp_object_get_name (renderer->viewable);
-
- gtk_tree_store_set (GTK_TREE_STORE (tree_view->model),
- &iter,
- GIMP_CONTAINER_TREE_STORE_COLUMN_NAME,
- real_name,
- -1);
- }
-
gtk_tree_view_set_cursor_on_cell (tree_view->view, path,
column, edit_cell, TRUE);
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]