]> git.armaanb.net Git - chorizo.git/commitdiff
Add default_uri option and focus bar on new tabs
authorArmaan Bhojwani <me@armaanb.net>
Wed, 9 Jun 2021 19:26:00 +0000 (15:26 -0400)
committerArmaan Bhojwani <me@armaanb.net>
Thu, 10 Jun 2021 01:27:59 +0000 (21:27 -0400)
man/chorizo-config.5.scd
src/browser.c

index 11ad7858ca4dc5928d91e7a24e1955348cfc1102..d99d78873d028a96e7e2e4ee3607c2f9161f57b4 100644 (file)
@@ -64,6 +64,11 @@ subsection.
        Choose a custom user agent.
 
 ## UI
+*default_uri*++
+       Type: string++
+       Default: "https://"++
+       The URI to fill the location bar with when entering the it from the homepage.
+
 *scroll_lines*++
        Type: integer++
        Default: 3++
index d338c11315a5087fd79f1d9f7b4575108dbf4b8a..1d25b77db41240d0fd9b065a58a32c491ae1cdd5 100644 (file)
@@ -62,6 +62,7 @@ struct Configuration {
     gboolean javascript_disabled;
     gboolean private;
     gboolean spellcheck_disabled;
+    gchar *default_uri;
     gchar *download_dir;
     gchar *fifo_suffix;
     gchar *history_file;
@@ -119,6 +120,14 @@ client_destroy(GtkWidget *widget, gpointer data) {
     quit_if_nothing_active();
 }
 
+void
+set_uri(const char *uri, struct Client *c) {
+    gtk_widget_grab_focus(c->location);
+    const char *goal = (strcmp(cfg.home_uri, uri) == 0) ? cfg.default_uri : uri;
+    gtk_entry_set_text(GTK_ENTRY(c->location), goal);
+    gtk_editable_set_position(GTK_EDITABLE(c->location), -1);
+}
+
 WebKitWebView *
 client_new(const gchar *uri, WebKitWebView *related_wv, gboolean show,
            gboolean focus_tab) {
@@ -280,8 +289,9 @@ client_new(const gchar *uri, WebKitWebView *related_wv, gboolean show,
         g_free(f);
     }
 
-    clients++;
+    set_uri(uri, c);
 
+    clients++;
     return WEBKIT_WEB_VIEW(c->web_view);
 }
 
@@ -542,6 +552,8 @@ get_config(void) {
         }
     }
 
+    cfg.default_uri = g_key_file_get_string(config, "ui", "default_uri", NULL);
+    cfg.default_uri = (cfg.default_uri) ? cfg.default_uri : "https://";
     cfg.tab_width_chars =
         g_key_file_get_integer(config, "ui", "tab_width", NULL);
     cfg.tab_width_chars = (cfg.tab_width_chars) ? cfg.tab_width_chars : 20;
@@ -777,6 +789,8 @@ key_common(GtkWidget *widget, GdkEvent *event, gpointer data) {
 
     if (event->type == GDK_KEY_PRESS) {
         if (((GdkEventKey *)event)->state & GDK_CONTROL_MASK) {
+            const char *uri =
+                webkit_web_view_get_uri(WEBKIT_WEB_VIEW(c->web_view));
             int key = ((GdkEventKey *)event)->keyval;
             if (def_key("download_manager", GDK_KEY_y) == key) {
                 downloadmanager_show();
@@ -788,12 +802,7 @@ key_common(GtkWidget *widget, GdkEvent *event, gpointer data) {
                 webkit_web_view_go_forward(WEBKIT_WEB_VIEW(c->web_view));
                 return TRUE;
             } else if (def_key("location", GDK_KEY_t) == key) {
-                gtk_widget_grab_focus(c->location);
-                const char *uri =
-                    webkit_web_view_get_uri(WEBKIT_WEB_VIEW(c->web_view));
-                const char *goal = (uri) ? uri : "https://";
-                gtk_entry_set_text(GTK_ENTRY(c->location), goal);
-                gtk_editable_set_position(GTK_EDITABLE(c->location), -1);
+                set_uri(uri, c);
                 return TRUE;
             } else if (def_key("print", GDK_KEY_Print) == key) {
                 WebKitPrintOperation *operation =
@@ -805,8 +814,6 @@ key_common(GtkWidget *widget, GdkEvent *event, gpointer data) {
             } else if (def_key("quit", GDK_KEY_g) == key) {
                 search(c, 2);
                 gtk_widget_grab_focus(c->web_view);
-                const gchar *uri =
-                    webkit_web_view_get_uri(WEBKIT_WEB_VIEW(c->web_view));
                 gtk_entry_set_text(GTK_ENTRY(c->location), uri);
                 gtk_editable_set_position(GTK_EDITABLE(c->location), -1);
                 webkit_web_view_run_javascript(