Use custom link handler in AboutDialog

Fixes #9525
This commit is contained in:
Philipp Hörist 2019-01-04 11:50:39 +01:00
parent 3bd5843fc9
commit c2d69774d5
1 changed files with 24 additions and 0 deletions

View File

@ -14,10 +14,12 @@
import nbxmpp import nbxmpp
from gi.repository import Gdk
from gi.repository import Gtk from gi.repository import Gtk
from gi.repository import GObject from gi.repository import GObject
from gajim.common import app from gajim.common import app
from gajim.common.helpers import launch_browser_mailer
from gajim.common.i18n import _ from gajim.common.i18n import _
from gajim.common.const import DEVS_CURRENT from gajim.common.const import DEVS_CURRENT
from gajim.common.const import DEVS_PAST from gajim.common.const import DEVS_PAST
@ -65,3 +67,25 @@ class AboutDialog(Gtk.AboutDialog):
'response', lambda dialog, *args: Gtk.AboutDialog.do_close(dialog)) 'response', lambda dialog, *args: Gtk.AboutDialog.do_close(dialog))
self.show() self.show()
self.connect('activate-link', self._on_activate_link)
# See https://gitlab.gnome.org/GNOME/gtk/issues/1561
self._connect_link_handler(self)
@staticmethod
def _on_activate_link(_label, uri):
# We have to use this, because the default GTK handler
# is not cross-platform compatible
launch_browser_mailer(None, uri)
return Gdk.EVENT_STOP
def _connect_link_handler(self, parent):
def _find_child(parent_):
if not hasattr(parent_, 'get_children'):
return
for child in parent_.get_children():
if isinstance(child, Gtk.Label):
if 'href' in child.get_label():
child.connect('activate-link', self._on_activate_link)
_find_child(child)
_find_child(parent)