From 7fce59831e3aba1c6200043fadcfb51b90c7cc44 Mon Sep 17 00:00:00 2001 From: Christian Dywan Date: Thu, 29 Nov 2018 17:44:54 +0200 Subject: Open external links in default browser in app mode (#184) Note: Using ^Click or Middle Click to open new tabs is also disabled since it wouldn't make sense here. Fixes: #177 --- core/browser.vala | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/core/browser.vala b/core/browser.vala index 9aa38f31..e501a1c6 100644 --- a/core/browser.vala +++ b/core/browser.vala @@ -603,6 +603,29 @@ namespace Midori { public new void add (Tab tab) { tab.popover.relative_to = navigationbar.urlbar; + if (is_locked) { + tab.decide_policy.connect ((decision, type) => { + switch (type) { + case WebKit.PolicyDecisionType.NAVIGATION_ACTION: + // No user-initiated new tabs + decision.use (); + return true; + case WebKit.PolicyDecisionType.NEW_WINDOW_ACTION: + // External links open in the default browser + var action = ((WebKit.NavigationPolicyDecision)decision).navigation_action; + string uri = action.get_request ().uri; + try { + Gtk.show_uri (get_screen (), uri, Gtk.get_current_event_time ()); + } catch (Error error) { + critical ("Failed to open %s: %s", uri, error.message); + } + decision.ignore (); + return true; + default: + return false; + } + }); + } tab.create.connect ((action) => { var new_tab = new Tab (tab, web_context); new_tab.hide (); -- cgit v1.2.1