[gimp] Add gimp_item_tree_rename_item()



commit bcf7603e04deb5271a6a17ba7ebdeba74e520ea7
Author: Michael Natterer <mitch gimp org>
Date:   Sun Feb 7 15:39:42 2010 +0100

    Add gimp_item_tree_rename_item()
    
    and call it from gimp_item_real_rename() if the item is attached to an
    image; simply use gimp_object_set_name() otherwise.

 app/core/gimpitem.c     |    7 ++++---
 app/core/gimpitemtree.c |   25 +++++++++++++++++++++++++
 app/core/gimpitemtree.h |    5 +++++
 3 files changed, 34 insertions(+), 3 deletions(-)
---
diff --git a/app/core/gimpitem.c b/app/core/gimpitem.c
index 7a8b8d3..321b996 100644
--- a/app/core/gimpitem.c
+++ b/app/core/gimpitem.c
@@ -473,9 +473,10 @@ gimp_item_real_rename (GimpItem     *item,
                        GError      **error)
 {
   if (gimp_item_is_attached (item))
-    gimp_image_undo_push_item_rename (item->image, undo_desc, item);
-
-  gimp_object_set_name (GIMP_OBJECT (item), new_name);
+    gimp_item_tree_rename_item (gimp_item_get_tree (item), item,
+                                new_name, undo_desc);
+  else
+    gimp_object_set_name (GIMP_OBJECT (item), new_name);
 
   return TRUE;
 }
diff --git a/app/core/gimpitemtree.c b/app/core/gimpitemtree.c
index edf3ef4..bd04236 100644
--- a/app/core/gimpitemtree.c
+++ b/app/core/gimpitemtree.c
@@ -517,3 +517,28 @@ gimp_item_tree_reorder_item (GimpItemTree *tree,
 
   return TRUE;
 }
+
+void
+gimp_item_tree_rename_item (GimpItemTree *tree,
+                            GimpItem     *item,
+                            const gchar  *new_name,
+                            const gchar  *undo_desc)
+{
+  GimpItemTreePrivate *private;
+
+  g_return_if_fail (GIMP_IS_ITEM_TREE (tree));
+
+  private = GIMP_ITEM_TREE_GET_PRIVATE (tree);
+
+  g_return_if_fail (GIMP_IS_ITEM (item));
+  g_return_if_fail (gimp_item_is_attached (item));
+  g_return_if_fail (gimp_item_get_image (item) == private->image);
+  g_return_if_fail (new_name != NULL);
+
+  if (strcmp (new_name, gimp_object_get_name (item)))
+    {
+      gimp_image_undo_push_item_rename (item->image, undo_desc, item);
+
+      gimp_object_set_name (GIMP_OBJECT (item), new_name);
+    }
+}
diff --git a/app/core/gimpitemtree.h b/app/core/gimpitemtree.h
index 1901db2..d75e538 100644
--- a/app/core/gimpitemtree.h
+++ b/app/core/gimpitemtree.h
@@ -75,5 +75,10 @@ gboolean       gimp_item_tree_reorder_item    (GimpItemTree *tree,
                                                gboolean      push_undo,
                                                const gchar  *undo_desc);
 
+void           gimp_item_tree_rename_item     (GimpItemTree *tree,
+                                               GimpItem     *item,
+                                               const gchar  *new_name,
+                                               const gchar  *undo_desc);
+
 
 #endif  /*  __GIMP_ITEM_TREE_H__  */



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]