summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristian Dywan <christian@twotoasts.de>2018-11-29 17:44:54 +0200
committerGitHub <noreply@github.com>2018-11-29 17:44:54 +0200
commit7fce59831e3aba1c6200043fadcfb51b90c7cc44 (patch)
tree32756ec602b0426489eb3035bace4c8d4dc38111
parent96ba154f68c89ea359f4f30c65a7c335e90c72d8 (diff)
downloadmidori-git-7fce59831e3aba1c6200043fadcfb51b90c7cc44.tar.gz
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
-rw-r--r--core/browser.vala23
1 files changed, 23 insertions, 0 deletions
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 ();