[gimp] app: commit seamless clone in progress when switching tools.



commit cb93f2bd2710dc3927f9bc72639b16fa34d00ce5
Author: Jehan <jehan girinstud io>
Date:   Mon Apr 28 01:37:18 2014 +1200

    app: commit seamless clone in progress when switching tools.

 app/tools/gimpseamlessclonetool.c |   22 ++++++++++++++++++++++
 1 files changed, 22 insertions(+), 0 deletions(-)
---
diff --git a/app/tools/gimpseamlessclonetool.c b/app/tools/gimpseamlessclonetool.c
index c095119..70a598d 100644
--- a/app/tools/gimpseamlessclonetool.c
+++ b/app/tools/gimpseamlessclonetool.c
@@ -155,6 +155,8 @@ static void       gimp_seamless_clone_tool_start              (GimpSeamlessClone
 static void       gimp_seamless_clone_tool_stop               (GimpSeamlessCloneTool *sc,
                                                                gboolean               display_change_only);
 
+static void       gimp_seamless_clone_tool_commit             (GimpSeamlessCloneTool *sc);
+
 static void       gimp_seamless_clone_tool_create_render_node (GimpSeamlessCloneTool *sc);
 static void       gimp_seamless_clone_tool_render_node_update (GimpSeamlessCloneTool *sc);
 static void       gimp_seamless_clone_tool_create_image_map   (GimpSeamlessCloneTool *sc,
@@ -248,6 +250,7 @@ gimp_seamless_clone_tool_control (GimpTool       *tool,
       break;
 
     case GIMP_TOOL_ACTION_COMMIT:
+      gimp_seamless_clone_tool_commit (sc);
       break;
     }
 
@@ -363,6 +366,25 @@ gimp_seamless_clone_tool_stop (GimpSeamlessCloneTool *sc,
 }
 
 static void
+gimp_seamless_clone_tool_commit (GimpSeamlessCloneTool *sc)
+{
+  GimpTool *tool = GIMP_TOOL (sc);
+
+  if (sc->image_map)
+    {
+      gimp_tool_control_push_preserve (tool->control, TRUE);
+
+      gimp_image_map_commit (sc->image_map, GIMP_PROGRESS (tool));
+      g_object_unref (sc->image_map);
+      sc->image_map = NULL;
+
+      gimp_tool_control_pop_preserve (tool->control);
+
+      gimp_image_flush (gimp_display_get_image (tool->display));
+    }
+}
+
+static void
 gimp_seamless_clone_tool_button_press (GimpTool            *tool,
                                        const GimpCoords    *coords,
                                        guint32              time,


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