diff -ur gnome-terminal-2.32.1.orig/src/terminal-screen.c gnome-terminal-2.32.1/src/terminal-screen.c
--- gnome-terminal-2.32.1.orig/src/terminal-screen.c	2011-04-30 20:45:10.000000000 +0300
+++ gnome-terminal-2.32.1/src/terminal-screen.c	2011-04-30 20:45:41.757164334 +0300
@@ -117,6 +117,8 @@
 static gboolean terminal_screen_popup_menu (GtkWidget *widget);
 static gboolean terminal_screen_button_press (GtkWidget *widget,
                                               GdkEventButton *event);
+static gboolean terminal_screen_button_release (GtkWidget *widget,
+		GdkEventButton *event);
 static void terminal_screen_launch_child_on_idle (TerminalScreen *screen);
 static void terminal_screen_child_exited  (VteTerminal *terminal);
 
@@ -568,6 +570,7 @@
   widget_class->style_set = terminal_screen_style_set;
   widget_class->drag_data_received = terminal_screen_drag_data_received;
   widget_class->button_press_event = terminal_screen_button_press;
+  widget_class->button_release_event = terminal_screen_button_release;
   widget_class->popup_menu = terminal_screen_popup_menu;
 
   terminal_class->child_exited = terminal_screen_child_exited;
@@ -1667,23 +1670,26 @@
           return TRUE; /* don't do anything else such as select with the click */
     }
 
-  if (event->button == 3 &&
-      (state & (GDK_SHIFT_MASK | GDK_CONTROL_MASK | GDK_MOD1_MASK)) == 0)
-    {
-      TerminalScreenPopupInfo *info;
-
-      info = terminal_screen_popup_info_new (screen);
-      info->button = event->button;
-      info->state = state;
-      info->timestamp = event->time;
-      info->string = matched_string; /* adopted */
-      info->flavour = matched_flavor;
-
-      g_signal_emit (screen, signals[SHOW_POPUP_MENU], 0, info);
-      terminal_screen_popup_info_unref (info);
-
-      return TRUE;
-    }
+  if (event->button == 3) {
+	  if ((state & (GDK_SHIFT_MASK | GDK_CONTROL_MASK | GDK_MOD1_MASK)) != 0)
+	  {
+		  TerminalScreenPopupInfo *info;
+		  info = terminal_screen_popup_info_new (screen);
+		  info->button = event->button;
+		  info->state = state;
+		  info->timestamp = event->time;
+		  info->string = matched_string; /* adopted */
+		  info->flavour = matched_flavor;
+
+		  g_signal_emit (screen, signals[SHOW_POPUP_MENU], 0, info);
+		  terminal_screen_popup_info_unref (info);
+
+		  return TRUE;
+	  } else {
+		  vte_terminal_paste_clipboard (VTE_TERMINAL (screen));
+		  return TRUE;
+	  }
+  }
 
   /* default behavior is to let the terminal widget deal with it */
   if (button_press_event)
@@ -1692,6 +1698,33 @@
   return FALSE;
 }
 
+static gboolean
+terminal_screen_button_release (GtkWidget      *widget,
+		GdkEventButton *event)
+{
+	gboolean ret;
+
+	TerminalScreen *screen = TERMINAL_SCREEN (widget);
+	gboolean (* button_release_event) (GtkWidget*, GdkEventButton*) =
+		GTK_WIDGET_CLASS (terminal_screen_parent_class)->button_release_event;
+
+	ret = FALSE;
+	if (button_release_event) {
+		ret = button_release_event (widget, event);
+	}
+
+	if (event->button == 1) {
+		gboolean can_copy;
+
+		can_copy = vte_terminal_get_has_selection (VTE_TERMINAL (screen));
+
+		if (can_copy)
+			vte_terminal_copy_clipboard (VTE_TERMINAL (screen));
+	}
+
+	return ret;
+}
+
 static void
 terminal_screen_set_dynamic_title (TerminalScreen *screen,
                                    const char     *title,
