From 920e97bd6f070862d31982c0481598194ffc8197 Mon Sep 17 00:00:00 2001 From: "Haelwenn (lanodan) Monnier" Date: Fri, 17 May 2019 11:42:32 +0200 Subject: Deny on every WebView "permission-request" signal --- badwolf.c | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/badwolf.c b/badwolf.c index b91d4da..11b3994 100644 --- a/badwolf.c +++ b/badwolf.c @@ -67,6 +67,9 @@ static gboolean WebViewCb_mouse_target_changed(WebKitWebView *webView, static WebKitWebView *WebViewCb_create(WebKitWebView *related_web_view, WebKitNavigationAction *navigation_action, gpointer user_data); +static gboolean WebViewCb_permission_request(WebKitWebView *web_view, + WebKitPermissionRequest *request, + gpointer user_data); static gboolean locationCb_activate(GtkEntry *location, gpointer user_data); static gboolean javascriptCb_toggled(GtkButton *javascript, gpointer user_data); static gboolean SearchEntryCb_next__match(GtkSearchEntry *search, gpointer user_data); @@ -450,6 +453,19 @@ WebViewCb_create(WebKitWebView *related_web_view, } } +static gboolean +WebViewCb_permission_request(WebKitWebView *web_view, + WebKitPermissionRequest *request, + gpointer user_data) +{ + (void)web_view; + (void)user_data; + + webkit_permission_request_deny(request); + + return TRUE; /* Stop other handlers */ +} + static gboolean locationCb_activate(GtkEntry *location, gpointer user_data) { @@ -627,7 +643,10 @@ new_browser(struct Window *window, gchar *target_url, WebKitWebView *related_web g_signal_connect( browser->webView, "key-press-event", G_CALLBACK(WebViewCb_key_press_event), browser); g_signal_connect(browser->webView, "scroll-event", G_CALLBACK(WebViewCb_scroll_event), browser); + g_signal_connect( + browser->webView, "permission-request", G_CALLBACK(WebViewCb_permission_request), NULL); + /* signals for search widget */ g_signal_connect(browser->search, "next-match", G_CALLBACK(SearchEntryCb_next__match), browser); g_signal_connect( browser->search, "previous-match", G_CALLBACK(SearchEntryCb_previous__match), browser); -- cgit v1.3.1-23-gd82d From 208d2976c977f1e81da1907657e496a841ae8662 Mon Sep 17 00:00:00 2001 From: "Haelwenn (lanodan) Monnier" Date: Fri, 17 May 2019 11:43:51 +0200 Subject: new_browser(): Add comments on each signal_connect section --- badwolf.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/badwolf.c b/badwolf.c index 11b3994..0a5993a 100644 --- a/badwolf.c +++ b/badwolf.c @@ -616,10 +616,13 @@ new_browser(struct Window *window, gchar *target_url, WebKitWebView *related_web gtk_entry_set_placeholder_text(GTK_ENTRY(browser->search), _("search in current page")); gtk_entry_set_has_frame(GTK_ENTRY(browser->search), FALSE); + /* signals for location entry widget */ g_signal_connect(browser->location, "activate", G_CALLBACK(locationCb_activate), browser); + /* signals for javacript toggle widget */ g_signal_connect(browser->javascript, "toggled", G_CALLBACK(javascriptCb_toggled), browser); + /* signals for WebView widget */ g_signal_connect(browser->webView, "web-process-terminated", G_CALLBACK(WebViewCb_web_process_terminated), @@ -654,6 +657,7 @@ new_browser(struct Window *window, gchar *target_url, WebKitWebView *related_web browser->search, "search-changed", G_CALLBACK(SearchEntryCb_search__changed), browser); g_signal_connect(browser->search, "stop-search", G_CALLBACK(SearchEntryCb_stop__search), browser); + /* signals for box container */ g_signal_connect(browser->box, "key-press-event", G_CALLBACK(boxCb_key_press_event), browser); if(related_web_view == NULL) webkit_web_view_load_uri(browser->webView, target_url); -- cgit v1.3.1-23-gd82d From 31a237b7241c14b919c77c5fb735e7c372cd0780 Mon Sep 17 00:00:00 2001 From: "Haelwenn (lanodan) Monnier" Date: Fri, 17 May 2019 12:52:18 +0200 Subject: When the mime type isn’t supported, download the file MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- badwolf.c | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/badwolf.c b/badwolf.c index 0a5993a..1411419 100644 --- a/badwolf.c +++ b/badwolf.c @@ -70,6 +70,10 @@ static WebKitWebView *WebViewCb_create(WebKitWebView *related_web_view, static gboolean WebViewCb_permission_request(WebKitWebView *web_view, WebKitPermissionRequest *request, gpointer user_data); +static gboolean WebViewCb_decide_policy(WebKitWebView *web_view, + WebKitPolicyDecision *decision, + WebKitPolicyDecisionType decision_type, + gpointer user_data); static gboolean locationCb_activate(GtkEntry *location, gpointer user_data); static gboolean javascriptCb_toggled(GtkButton *javascript, gpointer user_data); static gboolean SearchEntryCb_next__match(GtkSearchEntry *search, gpointer user_data); @@ -466,6 +470,33 @@ WebViewCb_permission_request(WebKitWebView *web_view, return TRUE; /* Stop other handlers */ } +static gboolean +WebViewCb_decide_policy(WebKitWebView *web_view, + WebKitPolicyDecision *decision, + WebKitPolicyDecisionType decision_type, + gpointer user_data) +{ + WebKitResponsePolicyDecision *r; + (void)web_view; + (void)user_data; + + switch(decision_type) + { + case WEBKIT_POLICY_DECISION_TYPE_RESPONSE: + r = WEBKIT_RESPONSE_POLICY_DECISION(decision); + if(!webkit_response_policy_decision_is_mime_type_supported(r)) + webkit_policy_decision_download(decision); + else + webkit_policy_decision_use(decision); + break; + default: + /* Use whatever default there is. */ + return FALSE; + } + + return TRUE; +} + static gboolean locationCb_activate(GtkEntry *location, gpointer user_data) { @@ -648,6 +679,7 @@ new_browser(struct Window *window, gchar *target_url, WebKitWebView *related_web g_signal_connect(browser->webView, "scroll-event", G_CALLBACK(WebViewCb_scroll_event), browser); g_signal_connect( browser->webView, "permission-request", G_CALLBACK(WebViewCb_permission_request), NULL); + g_signal_connect(browser->webView, "decide-policy", G_CALLBACK(WebViewCb_decide_policy), NULL); /* signals for search widget */ g_signal_connect(browser->search, "next-match", G_CALLBACK(SearchEntryCb_next__match), browser); -- cgit v1.3.1-23-gd82d From e3110230168447885451cc2673b1aa91a59aa7ae Mon Sep 17 00:00:00 2001 From: "Haelwenn (lanodan) Monnier" Date: Fri, 17 May 2019 12:57:30 +0200 Subject: Bugfix: correctly use initialized web_context --- badwolf.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/badwolf.c b/badwolf.c index 1411419..c29e797 100644 --- a/badwolf.c +++ b/badwolf.c @@ -597,7 +597,7 @@ new_browser(struct Window *window, gchar *target_url, WebKitWebView *related_web browser->webView = WEBKIT_WEB_VIEW(g_object_new(WEBKIT_TYPE_WEB_VIEW, "web-context", - webkit_web_context_new_ephemeral(), + web_context, "related-view", related_web_view, "settings", -- cgit v1.3.1-23-gd82d From a8763f013f6b2395a2ee8dd52acf93bbabbfcffd Mon Sep 17 00:00:00 2001 From: "Haelwenn (lanodan) Monnier" Date: Fri, 17 May 2019 13:42:48 +0200 Subject: Spawn a GtkFileDialog before downloading to disk --- badwolf.c | 60 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) diff --git a/badwolf.c b/badwolf.c index c29e797..88aace4 100644 --- a/badwolf.c +++ b/badwolf.c @@ -74,6 +74,12 @@ static gboolean WebViewCb_decide_policy(WebKitWebView *web_view, WebKitPolicyDecision *decision, WebKitPolicyDecisionType decision_type, gpointer user_data); +static void web_contentCb_download_started(WebKitWebContext *context, + WebKitDownload *download, + gpointer user_data); +static gboolean downloadCb_decide_destination(WebKitDownload *download, + gchar *suggested_filename, + gpointer user_data); static gboolean locationCb_activate(GtkEntry *location, gpointer user_data); static gboolean javascriptCb_toggled(GtkButton *javascript, gpointer user_data); static gboolean SearchEntryCb_next__match(GtkSearchEntry *search, gpointer user_data); @@ -497,6 +503,54 @@ WebViewCb_decide_policy(WebKitWebView *web_view, return TRUE; } +static void +web_contentCb_download_started(WebKitWebContext *context, + WebKitDownload *download, + gpointer user_data) +{ + (void)context; + + g_signal_connect(G_OBJECT(download), + "decide-destination", + G_CALLBACK(downloadCb_decide_destination), + user_data); +} + +static gboolean +downloadCb_decide_destination(WebKitDownload *download, + gchar *suggested_filename, + gpointer user_data) +{ + struct Client *browser = (struct Client *)user_data; + gint chooser_response; + GtkWindow *parent_window = GTK_WINDOW(browser->window->main_window); + + GtkWidget *file_dialog = gtk_file_chooser_dialog_new(NULL, + parent_window, + GTK_FILE_CHOOSER_ACTION_SAVE, + _("_Cancel"), + GTK_RESPONSE_CANCEL, + _("_Open"), + GTK_RESPONSE_ACCEPT, + NULL); + GtkFileChooser *file_chooser = GTK_FILE_CHOOSER(file_dialog); + + gtk_file_chooser_set_current_name(file_chooser, suggested_filename); + gtk_file_chooser_set_do_overwrite_confirmation(file_chooser, TRUE); + webkit_download_set_allow_overwrite(download, TRUE); + + chooser_response = gtk_dialog_run(GTK_DIALOG(file_dialog)); + + if(chooser_response == GTK_RESPONSE_ACCEPT) + webkit_download_set_destination(download, gtk_file_chooser_get_uri(file_chooser)); + else + webkit_download_cancel(download); + + gtk_widget_destroy(file_dialog); + + return TRUE; /* Stop other handlers */ +} + static gboolean locationCb_activate(GtkEntry *location, gpointer user_data) { @@ -681,6 +735,12 @@ new_browser(struct Window *window, gchar *target_url, WebKitWebView *related_web browser->webView, "permission-request", G_CALLBACK(WebViewCb_permission_request), NULL); g_signal_connect(browser->webView, "decide-policy", G_CALLBACK(WebViewCb_decide_policy), NULL); + /* signals for WebView's WebContext */ + g_signal_connect(G_OBJECT(web_context), + "download-started", + G_CALLBACK(web_contentCb_download_started), + browser); + /* signals for search widget */ g_signal_connect(browser->search, "next-match", G_CALLBACK(SearchEntryCb_next__match), browser); g_signal_connect( -- cgit v1.3.1-23-gd82d From c48c49ab9b60f74e496dfee94a3461637bc5970f Mon Sep 17 00:00:00 2001 From: "Haelwenn (lanodan) Monnier" Date: Sat, 18 May 2019 17:15:13 +0200 Subject: badwolf.c: Fix usage of ensure_uri_scheme try_file argument --- badwolf.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/badwolf.c b/badwolf.c index 88aace4..4d10719 100644 --- a/badwolf.c +++ b/badwolf.c @@ -557,7 +557,7 @@ locationCb_activate(GtkEntry *location, gpointer user_data) char *target_url; struct Client *browser = (struct Client *)user_data; - target_url = ensure_uri_scheme((char *)gtk_entry_get_text(location), FALSE); + target_url = ensure_uri_scheme((char *)gtk_entry_get_text(location), TRUE); if(target_url != NULL) webkit_web_view_load_uri(browser->webView, target_url); @@ -631,7 +631,7 @@ struct Client * new_browser(struct Window *window, gchar *target_url, WebKitWebView *related_web_view) { struct Client *browser = g_malloc(sizeof(struct Client)); - target_url = ensure_uri_scheme(target_url, (related_web_view != NULL)); + target_url = ensure_uri_scheme(target_url, (related_web_view == NULL)); browser->window = window; browser->box = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0); -- cgit v1.3.1-23-gd82d From 0c8f21f4584dba758bb1e59b1946f5fbde4a2968 Mon Sep 17 00:00:00 2001 From: "Haelwenn (lanodan) Monnier" Date: Sat, 18 May 2019 17:15:59 +0200 Subject: badwolf.c: Document ensure_uri_scheme function behavior --- badwolf.c | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/badwolf.c b/badwolf.c index 4d10719..52c2ab2 100644 --- a/badwolf.c +++ b/badwolf.c @@ -95,6 +95,17 @@ static void notebookCb_switch__page(GtkNotebook *notebook, GtkWidget *page, guint page_num, gpointer user_data); gint get_tab_position(GtkContainer *notebook, GtkWidget *child); +/* ensure_uri_scheme: tries to add a scheme on a pseudo-URL missing a scheme + * - gchar text: pseudo-URL missing a scheme + * - gboolean try_file: when TRUE check try first if it can be a file:// path + * + * When `text` isn't exploitable (ie. NULL), returns "about:blank", + * when the URL seems to be valid, return it, + * if try_file is TRUE, check if it can be file:// path, + * some other checks might be added. + * In the end use the fallback (`http://` for now, might get configuration), + * might get some safeguard. + */ gchar * ensure_uri_scheme(gchar *text, gboolean try_file) { -- cgit v1.3.1-23-gd82d From a714ff5919030a9504f94bd10f2791836830892b Mon Sep 17 00:00:00 2001 From: "Haelwenn (lanodan) Monnier" Date: Fri, 31 May 2019 11:30:01 +0200 Subject: badwolf.c: Download destination, fix save button text --- badwolf.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/badwolf.c b/badwolf.c index 52c2ab2..a984c5c 100644 --- a/badwolf.c +++ b/badwolf.c @@ -541,7 +541,7 @@ downloadCb_decide_destination(WebKitDownload *download, GTK_FILE_CHOOSER_ACTION_SAVE, _("_Cancel"), GTK_RESPONSE_CANCEL, - _("_Open"), + _("_Save"), GTK_RESPONSE_ACCEPT, NULL); GtkFileChooser *file_chooser = GTK_FILE_CHOOSER(file_dialog); -- cgit v1.3.1-23-gd82d From 84d5d7513da5182b70a4fc11ad21ee5951f98ed0 Mon Sep 17 00:00:00 2001 From: "Haelwenn (lanodan) Monnier" Date: Fri, 31 May 2019 11:31:14 +0200 Subject: badwolf.c: Download destination, propagate event This fixes a Segfault when the download is cancelled --- badwolf.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/badwolf.c b/badwolf.c index a984c5c..4ce70a0 100644 --- a/badwolf.c +++ b/badwolf.c @@ -559,7 +559,7 @@ downloadCb_decide_destination(WebKitDownload *download, gtk_widget_destroy(file_dialog); - return TRUE; /* Stop other handlers */ + return FALSE; /* Let it propagate */ } static gboolean -- cgit v1.3.1-23-gd82d From d9cd162c1af558f75d508f4dd75b6b7f162e0700 Mon Sep 17 00:00:00 2001 From: "Haelwenn (lanodan) Monnier" Date: Fri, 14 Jun 2019 05:59:02 +0200 Subject: Synchronise the menu-label of a tab with it’s title MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- badwolf.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/badwolf.c b/badwolf.c index 4ce70a0..5e2a98b 100644 --- a/badwolf.c +++ b/badwolf.c @@ -393,7 +393,9 @@ webView_tab_label_change(struct Client *browser, const gchar *title) gtk_notebook_set_tab_label( GTK_NOTEBOOK(notebook), browser->box, badwolf_new_tab_box(title, browser)); + gtk_notebook_set_menu_label_text(GTK_NOTEBOOK(notebook), browser->box, title); + // Set the window title if the title change was on the current tab if(get_tab_position(GTK_CONTAINER(notebook), browser->box) == gtk_notebook_get_current_page(GTK_NOTEBOOK(notebook))) gtk_window_set_title(GTK_WINDOW(browser->window->main_window), title); -- cgit v1.3.1-23-gd82d From 2425cad5171932d32b96752fc15c608ab3944227 Mon Sep 17 00:00:00 2001 From: "Haelwenn (lanodan) Monnier" Date: Fri, 21 Jun 2019 00:00:05 +0200 Subject: Add Alt-n tab switching --- badwolf.1 | 2 ++ badwolf.c | 5 ++++- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/badwolf.1 b/badwolf.1 index 01af4e8..864b598 100644 --- a/badwolf.1 +++ b/badwolf.1 @@ -42,6 +42,8 @@ Go back/forward in current tab’s history Go to the previous/next tab .It any F1 Shows the about dialog +.It any Alt-n +Where n is any numeric-row key. Go to the n-th tab, 0 goes to the last one. .El .Ss DEFAULT ONES Here is a incomplete list of the default Webkit/GTK keybindings: diff --git a/badwolf.c b/badwolf.c index f512ba3..70306da 100644 --- a/badwolf.c +++ b/badwolf.c @@ -213,13 +213,16 @@ commonCb_key_press_event(struct Window *window, GdkEvent *event, struct Client * } } - if((((GdkEventKey *)event)->state & GDK_MOD1_MASK) && browser != NULL) + if((((GdkEventKey *)event)->state & GDK_MOD1_MASK)) { switch(((GdkEventKey *)event)->keyval) { case GDK_KEY_Left: gtk_notebook_prev_page(notebook); return TRUE; case GDK_KEY_Right: gtk_notebook_next_page(notebook); return TRUE; } + if((((GdkEventKey *)event)->keyval >= GDK_KEY_0) && + (((GdkEventKey *)event)->keyval <= GDK_KEY_9)) + gtk_notebook_set_current_page(notebook, (((GdkEventKey *)event)->keyval - GDK_KEY_1)); } if(browser != NULL) -- cgit v1.3.1-23-gd82d From 6402dd8a8b7117da2a87a9fbceac68f9ce8b179f Mon Sep 17 00:00:00 2001 From: "Haelwenn (lanodan) Monnier" Date: Thu, 13 Jun 2019 02:38:30 +0200 Subject: Add setting spell checking via BADWOLF_L10N --- badwolf.1 | 7 +++++++ badwolf.c | 16 +++++++++++++++- 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/badwolf.1 b/badwolf.1 index 864b598..3c066bf 100644 --- a/badwolf.1 +++ b/badwolf.1 @@ -55,6 +55,13 @@ When the search box is focused it goes to the Next/Previous search term. .It search Escape Cancels current search .El +.Sh ENVIRONMENT +.Bl -width Ds -tag +.It Ev BADWOLF_L10N +A colon-separated list in the form lang_COUNTRY where lang is in ISO-639 and COUNTRY in ISO-3166. For example +.Ic BADWOLF_L10N="en_GB:fr_FR:de_DE" . +When this variable isn't set, spelling isn't activated. A more generic variable name is also intended to be used in the future. +.El .Sh BUGS You can submit contributions or tickets to .Lk https://gitlab.com/lanodan/badwolf diff --git a/badwolf.c b/badwolf.c index 70306da..cebb6e4 100644 --- a/badwolf.c +++ b/badwolf.c @@ -547,7 +547,7 @@ downloadCb_decide_destination(WebKitDownload *download, gint chooser_response; GtkWindow *parent_window = GTK_WINDOW(browser->window->main_window); - GtkWidget *file_dialog = gtk_file_chooser_dialog_new(NULL, + GtkWidget *file_dialog = gtk_file_chooser_dialog_new(NULL, parent_window, GTK_FILE_CHOOSER_ACTION_SAVE, _("_Cancel"), @@ -654,6 +654,7 @@ new_browser(struct Window *window, gchar *target_url, WebKitWebView *related_web { struct Client *browser = g_try_malloc(sizeof(struct Client)); target_url = ensure_uri_scheme(target_url, (related_web_view == NULL)); + char *badwolf_l10n = NULL; if(browser == NULL) return NULL; @@ -671,6 +672,19 @@ new_browser(struct Window *window, gchar *target_url, WebKitWebView *related_web webkit_web_context_set_process_model(web_context, WEBKIT_PROCESS_MODEL_MULTIPLE_SECONDARY_PROCESSES); + badwolf_l10n = getenv("BADWOLF_L10N"); + g_fprintf(stderr, "BADWOLF_L10N: %s\n", badwolf_l10n); + + if(badwolf_l10n != NULL) + { + gchar **languages = g_strsplit(badwolf_l10n, ":", -1); + webkit_web_context_set_spell_checking_languages(web_context, (const gchar* const *)languages); + g_strfreev(languages); + + webkit_web_context_set_spell_checking_enabled(web_context, TRUE); + g_fprintf(stderr, "spell_checking_enabled: %d\n", webkit_web_context_get_spell_checking_enabled(web_context)); + } + WebKitSettings *settings = webkit_settings_new_with_settings(BADWOLF_WEBKIT_SETTINGS); browser->webView = WEBKIT_WEB_VIEW(g_object_new(WEBKIT_TYPE_WEB_VIEW, -- cgit v1.3.1-23-gd82d From 244248ded914e16f569e99664267d1c01eb1cbef Mon Sep 17 00:00:00 2001 From: "Haelwenn (lanodan) Monnier" Date: Sat, 22 Jun 2019 04:32:01 +0200 Subject: badwolf.c: Remove spellchecking debugging printf --- badwolf.c | 2 -- 1 file changed, 2 deletions(-) diff --git a/badwolf.c b/badwolf.c index cebb6e4..93a225b 100644 --- a/badwolf.c +++ b/badwolf.c @@ -673,7 +673,6 @@ new_browser(struct Window *window, gchar *target_url, WebKitWebView *related_web WEBKIT_PROCESS_MODEL_MULTIPLE_SECONDARY_PROCESSES); badwolf_l10n = getenv("BADWOLF_L10N"); - g_fprintf(stderr, "BADWOLF_L10N: %s\n", badwolf_l10n); if(badwolf_l10n != NULL) { @@ -682,7 +681,6 @@ new_browser(struct Window *window, gchar *target_url, WebKitWebView *related_web g_strfreev(languages); webkit_web_context_set_spell_checking_enabled(web_context, TRUE); - g_fprintf(stderr, "spell_checking_enabled: %d\n", webkit_web_context_get_spell_checking_enabled(web_context)); } WebKitSettings *settings = webkit_settings_new_with_settings(BADWOLF_WEBKIT_SETTINGS); -- cgit v1.3.1-23-gd82d From ce799b41b9a8983c05e5e225014ffdf193eb2d03 Mon Sep 17 00:00:00 2001 From: "Haelwenn (lanodan) Monnier" Date: Sat, 22 Jun 2019 04:49:46 +0200 Subject: Fix -Wconversion and -Wsign-conversion warnings --- badwolf.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/badwolf.c b/badwolf.c index 93a225b..a43dbb1 100644 --- a/badwolf.c +++ b/badwolf.c @@ -222,7 +222,7 @@ commonCb_key_press_event(struct Window *window, GdkEvent *event, struct Client * } if((((GdkEventKey *)event)->keyval >= GDK_KEY_0) && (((GdkEventKey *)event)->keyval <= GDK_KEY_9)) - gtk_notebook_set_current_page(notebook, (((GdkEventKey *)event)->keyval - GDK_KEY_1)); + gtk_notebook_set_current_page(notebook, (gint)(((GdkEventKey *)event)->keyval - GDK_KEY_1)); } if(browser != NULL) @@ -452,7 +452,7 @@ WebViewCb_scroll_event(GtkWidget *widget, GdkEvent *event, gpointer data) (void)widget; struct Client *browser = (struct Client *)data; gdouble delta_x, delta_y; - gfloat zoom; + gdouble zoom; if(((GdkEventScroll *)event)->state & GDK_CONTROL_MASK) { -- cgit v1.3.1-23-gd82d From 1e3ccd1ee255605141d9a0b8d2e7bd5e6cd557fc Mon Sep 17 00:00:00 2001 From: "Haelwenn (lanodan) Monnier" Date: Sat, 22 Jun 2019 04:50:57 +0200 Subject: Makefile: CFLAGS += "-Wconversion -Wsign-conversion" --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 7bd30db..095024d 100644 --- a/Makefile +++ b/Makefile @@ -11,7 +11,7 @@ OBJS = badwolf TRANS = fr.mo CC = cc -CFLAGS = -g -Wall -Wextra +CFLAGS = -g -Wall -Wextra -Wconversion -Wsign-conversion CDEPS = `pkg-config --cflags $(DEPS)` -DDATADIR=\"$(DATADIR)\" -DPACKAGE=\"$(PACKAGE)\" -D_DEFAULT_SOURCE LIBS = `pkg-config --libs $(DEPS)` -- cgit v1.3.1-23-gd82d From 903627d8cabb0dc3dd13f6ff44df8cd901279e6c Mon Sep 17 00:00:00 2001 From: "Haelwenn (lanodan) Monnier" Date: Wed, 26 Jun 2019 20:20:06 +0200 Subject: make format --- badwolf.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/badwolf.c b/badwolf.c index a43dbb1..e910838 100644 --- a/badwolf.c +++ b/badwolf.c @@ -654,7 +654,7 @@ new_browser(struct Window *window, gchar *target_url, WebKitWebView *related_web { struct Client *browser = g_try_malloc(sizeof(struct Client)); target_url = ensure_uri_scheme(target_url, (related_web_view == NULL)); - char *badwolf_l10n = NULL; + char *badwolf_l10n = NULL; if(browser == NULL) return NULL; @@ -677,7 +677,7 @@ new_browser(struct Window *window, gchar *target_url, WebKitWebView *related_web if(badwolf_l10n != NULL) { gchar **languages = g_strsplit(badwolf_l10n, ":", -1); - webkit_web_context_set_spell_checking_languages(web_context, (const gchar* const *)languages); + webkit_web_context_set_spell_checking_languages(web_context, (const gchar *const *)languages); g_strfreev(languages); webkit_web_context_set_spell_checking_enabled(web_context, TRUE); -- cgit v1.3.1-23-gd82d From f886434a448d0bf873f68dec6da4449b93591582 Mon Sep 17 00:00:00 2001 From: "Haelwenn (lanodan) Monnier" Date: Wed, 26 Jun 2019 20:21:04 +0200 Subject: badwolf.c: Add Alt-d keybind --- badwolf.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/badwolf.c b/badwolf.c index e910838..bcd7e98 100644 --- a/badwolf.c +++ b/badwolf.c @@ -215,6 +215,12 @@ commonCb_key_press_event(struct Window *window, GdkEvent *event, struct Client * if((((GdkEventKey *)event)->state & GDK_MOD1_MASK)) { + if((browser != NULL) && (((GdkEventKey *)event)->keyval == GDK_KEY_d)) + { + webkit_web_view_try_close(browser->webView); + return TRUE; + } + switch(((GdkEventKey *)event)->keyval) { case GDK_KEY_Left: gtk_notebook_prev_page(notebook); return TRUE; -- cgit v1.3.1-23-gd82d From fc8d34d7538fc8c3890f9af843bf2f78a320e465 Mon Sep 17 00:00:00 2001 From: "Haelwenn (lanodan) Monnier" Date: Fri, 5 Jul 2019 08:15:32 +0200 Subject: badwolf.1: Add Alt-d to close tab --- badwolf.1 | 2 +- badwolf.c | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/badwolf.1 b/badwolf.1 index 3c066bf..33b86c0 100644 --- a/badwolf.1 +++ b/badwolf.1 @@ -28,7 +28,7 @@ Zooms the webpage in/out. Resets webpage zoom to 100%. .It any C-t Creates a new tab (in a new session, similar as pressing the button) -.It browser C-F4 +.It browser C-F4, browser A-d Closes the current tab .It browser C-f Focuses on the search entry diff --git a/badwolf.c b/badwolf.c index bcd7e98..641eaec 100644 --- a/badwolf.c +++ b/badwolf.c @@ -8,7 +8,7 @@ #include /* g_fprintf() */ #include #include /* LC_* */ -#include /* realpath() */ +#include /* realpath(), malloc() */ #include const gchar *homepage = "https://hacktivis.me/projects/badwolf"; @@ -658,7 +658,7 @@ SearchEntryCb_stop__search(GtkSearchEntry *search, gpointer user_data) struct Client * new_browser(struct Window *window, gchar *target_url, WebKitWebView *related_web_view) { - struct Client *browser = g_try_malloc(sizeof(struct Client)); + struct Client *browser = malloc(sizeof(struct Client)); target_url = ensure_uri_scheme(target_url, (related_web_view == NULL)); char *badwolf_l10n = NULL; -- cgit v1.3.1-23-gd82d From c8ab434b9fc8214f415b09b3f5fcc852f96f649b Mon Sep 17 00:00:00 2001 From: "Haelwenn (lanodan) Monnier" Date: Fri, 5 Jul 2019 08:30:14 +0200 Subject: Bump to 0.3.0 --- badwolf.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/badwolf.c b/badwolf.c index 641eaec..6677d99 100644 --- a/badwolf.c +++ b/badwolf.c @@ -12,7 +12,7 @@ #include const gchar *homepage = "https://hacktivis.me/projects/badwolf"; -const gchar *version = "0.2.1"; +const gchar *version = "0.3.0"; struct Window { -- cgit v1.3.1-23-gd82d