From: Nil Gradisnik Date: Sat, 6 Jan 2018 01:44:43 +0000 (-0800) Subject: Open links in browser X-Git-Url: https://git.ozva.co.uk/?a=commitdiff_plain;h=90ba750e287a3e1de34a8b49bb68b5a16fc10df3;p=gn-editor Open links in browser --- 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 |_| {