--- gimptexttool_old.c	2014-08-20 17:27:57.000000000 +0200
+++ gimptexttool_new.c	2014-12-07 23:27:24.401715000 +0100
@@ -355,6 +355,11 @@
   GimpImage         *image     = gimp_display_get_image (display);
   GimpText          *text      = text_tool->text;
 
+  /*  Check if there is no confirm_dialog before
+   */
+  if (GTK_IS_WIDGET (text_tool->confirm_dialog))
+    return;
+
   gimp_draw_tool_pause (GIMP_DRAW_TOOL (tool));
 
   if (tool->display && tool->display != display)
@@ -451,7 +456,7 @@
                *  selecting instead of drawing a new rectangle
                */
               if (gimp_rectangle_tool_get_function (rect_tool) ==
-                  GIMP_RECTANGLE_TOOL_CREATING)
+                  GIMP_RECTANGLE_TOOL_CREATING && !GTK_IS_WIDGET (text_tool->confirm_dialog))
                 {
                   gimp_rectangle_tool_set_function (rect_tool,
                                                     GIMP_RECTANGLE_TOOL_DEAD);
@@ -1457,7 +1462,8 @@
   gimp_text_tool_set_drawable (text_tool, GIMP_DRAWABLE (layer), FALSE);
 }
 
-#define  RESPONSE_NEW 1
+#define RESPONSE_COPY_LAYER 0
+#define RESPONSE_NEW_LAYER 1
 
 static void
 gimp_text_tool_confirm_response (GtkWidget    *widget,
@@ -1471,11 +1477,15 @@
   if (layer && layer->text)
     {
       switch (response_id)
-        {
-        case RESPONSE_NEW:
-          gimp_text_tool_create_layer (text_tool, layer->text);
+        {	  
+        case RESPONSE_NEW_LAYER:
+	  gimp_text_tool_create_layer (text_tool, NULL);
           break;
 
+	case RESPONSE_COPY_LAYER:
+	  gimp_text_tool_create_layer (text_tool, layer->text);
+	  break;
+
         case GTK_RESPONSE_ACCEPT:
           gimp_text_tool_connect (text_tool, layer, layer->text);
 
@@ -1502,7 +1512,7 @@
 
   g_return_if_fail (text_tool->layer != NULL);
 
-  if (text_tool->confirm_dialog)
+  if (GTK_IS_WIDGET (text_tool->confirm_dialog))
     {
       gtk_window_present (GTK_WINDOW (text_tool->confirm_dialog));
       return;
@@ -1517,16 +1527,18 @@
                                      GTK_WIDGET (shell),
                                      gimp_standard_help_func, NULL,
 
-                                     _("Create _New Layer"), RESPONSE_NEW,
-                                     GTK_STOCK_CANCEL,       GTK_RESPONSE_CANCEL,
-                                     GTK_STOCK_EDIT,         GTK_RESPONSE_ACCEPT,
+                                     _("Create _New Layer"),                RESPONSE_NEW_LAYER,
+                                     _("Create Copy of the Layer"),         RESPONSE_COPY_LAYER,
+				     GTK_STOCK_EDIT,                        GTK_RESPONSE_ACCEPT,
+				     GTK_STOCK_CANCEL,                      GTK_RESPONSE_CANCEL,
 
                                      NULL);
 
   gtk_dialog_set_alternative_button_order (GTK_DIALOG (dialog),
-                                           RESPONSE_NEW,
+  					   RESPONSE_NEW_LAYER,
+                                           RESPONSE_COPY_LAYER,
                                            GTK_RESPONSE_ACCEPT,
-                                           GTK_RESPONSE_CANCEL,
+					   GTK_RESPONSE_CANCEL,
                                            -1);
 
   gtk_window_set_resizable (GTK_WINDOW (dialog), FALSE);
@@ -1540,14 +1552,15 @@
   gtk_box_pack_start (GTK_BOX (gtk_dialog_get_content_area (GTK_DIALOG (dialog))),
                       vbox, FALSE, FALSE, 0);
   gtk_widget_show (vbox);
-
+  
   label = gtk_label_new (_("The layer you selected is a text layer but "
                            "it has been modified using other tools. "
                            "Editing the layer with the text tool will "
                            "discard these modifications."
                            "\n\n"
-                           "You can edit the layer or create a new "
-                           "text layer from its text attributes."));
+                           "You can edit the layer, "
+                           "create a copy of the text layer from its text attributes or "
+			   "create a new text layer"));
   gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);
   gtk_label_set_line_wrap (GTK_LABEL (label), TRUE);
   gtk_box_pack_start (GTK_BOX (vbox), label, FALSE, FALSE, 0);
@@ -1645,7 +1658,7 @@
 {
   GimpImage *image = NULL;
 
-  if (text_tool->confirm_dialog)
+  if (GTK_IS_WIDGET (text_tool->confirm_dialog))
     gtk_widget_destroy (text_tool->confirm_dialog);
 
   if (drawable)
