From 0bbaead77a3656f5668f43941e79e93d671c9b5b Mon Sep 17 00:00:00 2001 From: Nil Gradisnik Date: Fri, 5 Jan 2018 17:18:37 -0800 Subject: [PATCH] Prevent navigation --- src/main.rs | 32 ++++++++++++++++++-------------- src/preview.rs | 2 +- 2 files changed, 19 insertions(+), 15 deletions(-) diff --git a/src/main.rs b/src/main.rs index 46bdd40..05fe75c 100644 --- a/src/main.rs +++ b/src/main.rs @@ -88,14 +88,14 @@ fn build_ui(application: >k::Application) { let open_button: gtk::ToolButton = builder.get_object("open_button").unwrap(); - let text_view: sourceview::View = builder.get_object("text_view").unwrap(); let text_buffer: sourceview::Buffer = builder.get_object("text_buffer").unwrap(); configure_sourceview(&text_buffer); - let context = WebContext::get_default().unwrap(); - let preview = WebView::new_with_context(&context); + let web_context = WebContext::get_default().unwrap(); + let web_view = WebView::new_with_context(&web_context); + let markdown_view: gtk::ScrolledWindow = builder.get_object("scrolled_window_right").unwrap(); - markdown_view.add(&preview); + markdown_view.add(&web_view); let file_chooser: gtk::FileChooserDialog = builder.get_object("file_chooser").unwrap(); file_chooser.add_buttons(&[ @@ -109,28 +109,32 @@ fn build_ui(application: >k::Application) { about_dialog.set_authors(&[AUTHORS]); about_dialog.set_comments(DESCRIPTION); - open_button.connect_clicked(clone!(header_bar, text_buffer, preview => move |_| { + text_buffer.connect_changed(clone!(web_view => move |buffer| { + let markdown = buffer_to_string(buffer).unwrap(); + web_view.load_html(&preview::render(&markdown), None); + })); + + web_view.connect_decide_policy(move |view, decision, _| { + if view.get_uri().unwrap() != "about:blank" { + decision.ignore(); + } + true + }); + web_view.connect_load_failed(move |_, _, _, _| true); + + open_button.connect_clicked(clone!(header_bar, text_buffer => move |_| { file_chooser.show(); if file_chooser.run() == gtk::ResponseType::Ok.into() { let filename = file_chooser.get_filename().expect("Couldn't get filename"); let contents = open_file(&filename); - set_title(&header_bar, &filename); - text_buffer.set_text(&contents); - preview.load_html(&preview::render(&contents), None); } file_chooser.hide(); })); - text_view.connect_key_release_event(clone!(text_buffer, preview => move |_, _| { - let markdown = buffer_to_string(&text_buffer).unwrap(); - preview.load_html(&preview::render(&markdown), None); - Inhibit(true) - })); - about_dialog.connect_delete_event(clone!(about_dialog => move |_, _| { about_dialog.hide(); Inhibit(true) diff --git a/src/preview.rs b/src/preview.rs index 49e7cfc..823d44f 100644 --- a/src/preview.rs +++ b/src/preview.rs @@ -30,7 +30,7 @@ pub fn render(markdown: &str) -> String { : Raw("hljs.initHighlightingOnLoad()") } style { - : "body { width: 90%; margin: 0 auto }"; + : "body { width: 90%; margin: 0 auto; }"; : "img { max-width: 90% }" } } -- 2.39.2