]> OzVa Git service - gn-editor/commitdiff
Open links in browser
authorNil Gradisnik <nil@layer.com>
Sat, 6 Jan 2018 01:44:43 +0000 (17:44 -0800)
committerNil Gradisnik <nil@layer.com>
Sat, 6 Jan 2018 01:44:43 +0000 (17:44 -0800)
Cargo.toml
src/main.rs

index a743a7e6f0df3e081b1b9437050f12dc4df88126..4e5aa7b118bef493b2e557fd093918a679d4de6d 100644 (file)
@@ -16,7 +16,7 @@ webkit2gtk = "0.3"
 
 [dependencies.gtk]
 version = "0.3"
-features = ["v3_20"]
+features = ["v3_22"]
 
 [dev-dependencies]
 clippy = "0.0.175"
index 05fe75c4459c8fd37bd540ec15ed43a858493f96..c0d39eda0e9862c0342440cfb32e00e597da2a9f 100644 (file)
@@ -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: &gtk::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 |_| {