@@ -53,6 +53,7 @@ def __init__(self):
5353 self .search = self .args .parse_args ().s .strip ()
5454 self .filter = ''
5555 self .open_link = False
56+ self .hit_link = None
5657 self .options = self .read_settings_json ('cookies' )
5758 self .prefs = self .read_settings_json ('prefs' )
5859 self .globals = Gtk .Settings .get_default ()
@@ -80,6 +81,8 @@ def __init__(self):
8081 self .webview .connect ('notify::title' , self .on_webview_title_changed )
8182 self .webview .connect ('decide-policy' , self .on_webview_decide_policy )
8283 self .webview .connect ('context-menu' , self .on_webview_context_menu )
84+ self .webview .connect ('mouse-target-changed' , self .on_mouse_target_changed )
85+ self .webview .connect ('button-release-event' , self .on_button_release )
8386
8487 self .scrolled = self .main .get_object ('scrolled_main' )
8588 self .scrolled .add (self .webview )
@@ -464,6 +467,16 @@ def on_webview_context_menu(self, _widget, menu, _coords, _keyboard):
464467 gaction = item .get_gaction ()
465468 gaction .connect ('activate' , self .on_webview_open_link )
466469
470+ def on_mouse_target_changed (self , _widget , hit , _modifiers ):
471+ if hit .context_is_link ():
472+ self .hit_link = hit .get_link_uri ()
473+ else :
474+ self .hit_link = None
475+
476+ def on_button_release (self , _widget , _event ):
477+ if self .hit_link and not self .hit_link .startswith (self .app_url ):
478+ webbrowser .open (self .hit_link )
479+
467480
468481class DevdocsDesktopService (dbus .service .Object ):
469482
0 commit comments