--- gtk+-2.20.0/gtk/gtktextbuffer.c	2010-03-22 13:44:12.000000000 +0100
+++ gtk+2.0-2.20.0/gtk/gtktextbuffer.c	2010-03-31 01:27:39.786419735 +0200
@@ -3585,6 +3585,13 @@
     }
 }
 
+static void
+cut_or_copy (GtkTextBuffer *buffer,
+             GtkClipboard  *clipboard,
+             gboolean       delete_region_after,
+             gboolean       interactive,
+             gboolean       default_editable);
+
 typedef struct
 {
   GtkClipboard *clipboard;
@@ -3594,10 +3601,14 @@
 static void
 update_selection_clipboards (GtkTextBuffer *buffer)
 {
+#if 0
   GtkTextBufferPrivate *priv;
+#endif
   GSList               *tmp_list = buffer->selection_clipboards;
 
+#if 0
   priv = GTK_TEXT_BUFFER_GET_PRIVATE (buffer);
+#endif
 
   gtk_text_buffer_get_copy_target_list (buffer);
 
@@ -3612,6 +3623,10 @@
       /* Determine whether we have a selection and adjust X selection
        * accordingly.
        */
+#if 1
+      if (gtk_text_buffer_get_selection_bounds (buffer, &start, &end))
+        cut_or_copy (buffer, clipboard, FALSE, FALSE, FALSE);
+#else
       if (!gtk_text_buffer_get_selection_bounds (buffer, &start, &end))
 	{
 	  if (gtk_clipboard_get_owner (clipboard) == G_OBJECT (buffer))
@@ -3630,6 +3645,7 @@
 					     G_OBJECT (buffer)))
 	    clipboard_clear_selection_cb (clipboard, buffer);
 	}
+#endif
 
       tmp_list = tmp_list->next;
     }
