Skip to content

Commit aff6074

Browse files
committed
open external links in default browser on left click
fix #20
1 parent c55bdd4 commit aff6074

File tree

1 file changed

+13
-0
lines changed

1 file changed

+13
-0
lines changed

devdocs_desktop.py

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -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

468481
class DevdocsDesktopService(dbus.service.Object):
469482

0 commit comments

Comments
 (0)