From 20c957e1430b11fd0b3dd13c77960657bf8200eb Mon Sep 17 00:00:00 2001 From: Armaan Bhojwani Date: Wed, 9 Jun 2021 14:06:02 -0400 Subject: [PATCH] Add indicator for JS toggle and move settings to c --- src/browser.c | 51 +++++++++++++++++++++++++++++++++++++-------------- 1 file changed, 37 insertions(+), 14 deletions(-) diff --git a/src/browser.c b/src/browser.c index 90119c8..bc4181f 100644 --- a/src/browser.c +++ b/src/browser.c @@ -46,6 +46,7 @@ struct Client { GtkWidget *tablabel; GtkWidget *vbox; GtkWidget *web_view; + WebKitSettings *settings; gboolean focus_new_tab; }; @@ -79,6 +80,14 @@ gint clients = 0; int cooperative_pipe_fp = 0; gchar *search_text; +void +togglejs(GtkButton *jsbutton, gpointer data) { + struct Client *c = (struct Client *)data; + webkit_settings_set_enable_javascript( + c->settings, !webkit_settings_get_enable_javascript(c->settings)); + webkit_web_view_set_settings(WEBKIT_WEB_VIEW(c->web_view), c->settings); +} + void client_destroy(GtkWidget *widget, gpointer data) { struct Client *c = (struct Client *)data; @@ -127,11 +136,12 @@ client_new(const gchar *uri, WebKitWebView *related_wv, gboolean show, else c->web_view = webkit_web_view_new_with_related_view(related_wv); + c->settings = webkit_web_view_get_settings(WEBKIT_WEB_VIEW(c->web_view)); + webkit_web_view_set_zoom_level(WEBKIT_WEB_VIEW(c->web_view), cfg.global_zoom); - WebKitSettings *settings = - webkit_web_view_get_settings(WEBKIT_WEB_VIEW(c->web_view)); - webkit_settings_set_enable_javascript(settings, !cfg.javascript_disabled); + webkit_settings_set_enable_javascript(c->settings, + !cfg.javascript_disabled); g_signal_connect(G_OBJECT(c->web_view), "notify::favicon", G_CALLBACK(changed_favicon), c); g_signal_connect(G_OBJECT(c->web_view), "notify::title", @@ -158,24 +168,38 @@ client_new(const gchar *uri, WebKitWebView *related_wv, gboolean show, G_CALLBACK(crashed_web_view), c); if (cfg.user_agent != NULL) { - g_object_set(settings, "user-agent", cfg.user_agent, NULL); + g_object_set(c->settings, "user-agent", cfg.user_agent, NULL); } if (cfg.enable_console_to_stdout) - webkit_settings_set_enable_write_console_messages_to_stdout(settings, + webkit_settings_set_enable_write_console_messages_to_stdout(c->settings, TRUE); - webkit_settings_set_enable_developer_extras(settings, TRUE); + webkit_settings_set_enable_developer_extras(c->settings, TRUE); GtkWidget *locbox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 0); + + c->jsbutton = gtk_toggle_button_new_with_label("JS"); + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(c->jsbutton), + !cfg.javascript_disabled); + g_signal_connect(G_OBJECT(c->jsbutton), "toggled", G_CALLBACK(togglejs), c); + + c->imgbutton = gtk_toggle_button_new_with_label("IMG"); + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(c->imgbutton), + !cfg.images_disabled); + g_signal_connect(G_OBJECT(c->imgbutton), "toggled", + G_CALLBACK(toggleimg_cb), c); + c->location = gtk_entry_new(); gtk_box_pack_start(GTK_BOX(locbox), c->location, TRUE, TRUE, 5); + gtk_box_pack_end(GTK_BOX(locbox), c->jsbutton, FALSE, FALSE, 0); + if (cfg.private) { GtkWidget *privindicator = gtk_label_new("Private mode"); gtk_widget_set_tooltip_text( privindicator, "You are in private mode. No history, caches, or " "cookies will be saved beyond this session."); - gtk_box_pack_end(GTK_BOX(locbox), privindicator, FALSE, FALSE, 0); + gtk_box_pack_end(GTK_BOX(locbox), privindicator, FALSE, FALSE, 5); } g_signal_connect(G_OBJECT(c->location), "key-press-event", @@ -738,9 +762,6 @@ key_common(GtkWidget *widget, GdkEvent *event, gpointer data) { if (event->type == GDK_KEY_PRESS) { if (((GdkEventKey *)event)->state & GDK_CONTROL_MASK) { - WebKitSettings *settings = - webkit_web_view_get_settings(WEBKIT_WEB_VIEW(c->web_view)); - gboolean js = webkit_settings_get_enable_javascript(settings); int key = ((GdkEventKey *)event)->keyval; if (def_key("download_manager", GDK_KEY_y) == key) { downloadmanager_show(); @@ -858,11 +879,13 @@ key_common(GtkWidget *widget, GdkEvent *event, gpointer data) { gtk_notebook_next_page(GTK_NOTEBOOK(mw.notebook)); return TRUE; } else if (def_key("toggle_js", GDK_KEY_o) == key) { - webkit_settings_set_enable_javascript(settings, - (js) ? FALSE : TRUE); + gboolean on = + webkit_settings_get_enable_javascript(c->settings); + webkit_settings_set_enable_javascript(c->settings, !on); webkit_web_view_set_settings(WEBKIT_WEB_VIEW(c->web_view), - settings); - return TRUE; + c->settings); + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(c->jsbutton), + !on); } else if (def_key("web_search", GDK_KEY_d) == key) { gtk_widget_grab_focus(c->location); gtk_entry_set_text(GTK_ENTRY(c->location), "w/"); -- 2.39.2