=== modified file 'src/PantheonTerminalWindow.vala'
--- src/PantheonTerminalWindow.vala	2017-01-23 18:01:21 +0000
+++ src/PantheonTerminalWindow.vala	2017-04-14 19:37:43 +0000
@@ -709,7 +709,7 @@
         }
 
         void action_copy () {
-            if (current_terminal.uri != null)
+            if (current_terminal.uri != null && ! current_terminal.get_has_selection ())
                 clipboard.set_text (current_terminal.uri,
                                     current_terminal.uri.length);
             else

=== modified file 'src/TerminalWidget.vala'
--- src/TerminalWidget.vala	2016-07-10 16:08:53 +0000
+++ src/TerminalWidget.vala	2017-04-14 19:37:43 +0000
@@ -107,29 +107,34 @@
 
             /* Connect to necessary signals */
             button_press_event.connect ((event) => {
-                uri = get_link ((long) event.x, (long) event.y);
-
-                switch (event.button) {
-                    case Gdk.BUTTON_PRIMARY:
-                        if (uri != null) {
-                            try {
-                                Gtk.show_uri (null, (!) uri, Gtk.get_current_event_time ());
-                                return true;
-                            } catch (GLib.Error error) {
-                                warning ("Could Not Open link");
-                            }
-                        }
-
-                        return false;
-                    case Gdk.BUTTON_SECONDARY:
-                        if (uri != null) {
-                            window.main_actions.get_action ("Copy").set_sensitive (true);
-                        }
-
-                        menu.select_first (false);
-                        menu.popup (null, null, null, event.button, event.time);
-
-                        return true;
+                if (event.button ==  Gdk.BUTTON_SECONDARY) {
+                    uri = get_link ((long) event.x, (long) event.y);
+
+                    if (uri != null) {
+                        window.main_actions.get_action ("Copy").set_sensitive (true);
+                    }
+
+                    menu.select_first (false);
+                    menu.popup (null, null, null, event.button, event.time);
+
+                    return true;
+                }
+
+                return false;
+            });
+
+            button_release_event.connect ((event) => {
+                if (event.button == Gdk.BUTTON_PRIMARY) {
+                    uri = get_link ((long) event.x, (long) event.y);
+
+                    if (uri != null && ! get_has_selection ()) {
+                        try {
+                            Gtk.show_uri (null, uri, Gtk.get_current_event_time ());
+                            return true;
+                        } catch (GLib.Error error) {
+                            warning ("Could Not Open link");
+                        }
+                    }
                 }
 
                 return false;

