From 90ba750e287a3e1de34a8b49bb68b5a16fc10df3 Mon Sep 17 00:00:00 2001 From: Nil Gradisnik Date: Fri, 5 Jan 2018 17:44:43 -0800 Subject: [PATCH] Open links in browser --- Cargo.toml | 2 +- src/main.rs | 11 ++++++++--- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index a743a7e..4e5aa7b 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -16,7 +16,7 @@ webkit2gtk = "0.3" [dependencies.gtk] version = "0.3" -features = ["v3_20"] +features = ["v3_22"] [dev-dependencies] clippy = "0.0.175" diff --git a/src/main.rs b/src/main.rs index 05fe75c..c0d39ed 100644 --- a/src/main.rs +++ b/src/main.rs @@ -14,11 +14,13 @@ mod utils; use gio::prelude::*; use gtk::prelude::*; use gtk::Builder; +use gtk::functions::show_uri_on_window; use gio::MenuExt; use webkit2gtk::*; use std::env::args; +use std::time::{SystemTime, UNIX_EPOCH}; use utils::{buffer_to_string, configure_sourceview, open_file, set_title}; @@ -114,12 +116,15 @@ fn build_ui(application: >k::Application) { web_view.load_html(&preview::render(&markdown), None); })); - web_view.connect_decide_policy(move |view, decision, _| { - if view.get_uri().unwrap() != "about:blank" { + web_view.connect_decide_policy(clone!(window => move |view, decision, _| { + let uri = view.get_uri().unwrap(); + if uri != "about:blank" { + let timestamp = SystemTime::now().duration_since(UNIX_EPOCH).unwrap(); + show_uri_on_window(&window, &uri, timestamp.as_secs() as u32).unwrap(); decision.ignore(); } true - }); + })); web_view.connect_load_failed(move |_, _, _, _| true); open_button.connect_clicked(clone!(header_bar, text_buffer => move |_| { -- 2.39.2