]> git.armaanb.net Git - chorizo.git/commitdiff
Add indicator for JS toggle and move settings to c
authorArmaan Bhojwani <me@armaanb.net>
Wed, 9 Jun 2021 18:06:02 +0000 (14:06 -0400)
committerArmaan Bhojwani <me@armaanb.net>
Thu, 10 Jun 2021 01:27:21 +0000 (21:27 -0400)
src/browser.c

index 90119c88e55a74af83b350f44a466b5c3a2474d6..bc4181f65ed29552afdd9a7bbc39304768bd2ee1 100644 (file)
@@ -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/");