]> git.armaanb.net Git - chorizo.git/blobdiff - src/browser.c
Rewrite search query creation
[chorizo.git] / src / browser.c
index 995ee5ad8ce3e755471a521431a3694b54b16685..d3f9e12d1a01fe99cb0d2fe8d66b634be3f4a84e 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);
 }
 
@@ -506,7 +516,7 @@ get_config(void) {
     cfg.accepted_language[0] = NULL;
     cfg.accepted_language[1] = NULL;
     cfg.cooperative_alone = TRUE;
-    cfg.cooperative_alone = TRUE;
+    cfg.cooperative_instances = TRUE;
     cfg.fifo_suffix = "main";
 
     const char *e = g_getenv(__NAME_UPPERCASE__ "_FIFO_SUFFIX");
@@ -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(
@@ -955,12 +962,11 @@ key_location(GtkWidget *widget, GdkEvent *event, gpointer data) {
                 search_text = g_strdup(t + 2);
                 search(c, 0);
             } else if (t != NULL && t[0] == 'w' && t[1] == '/') {
-                const char *engine = cfg.search_engine;
-                int len = strlen(engine) + strlen(t) - 2;
-                char *f = (char *)malloc(len);
-                snprintf(f, len + 1, "%s%s", engine, t + 2);
+                int len = strlen(cfg.search_engine) + strlen(t) - 2;
+                gchar *f = malloc(len + 1);
+                snprintf(f, len + 1, "%s%s", cfg.search_engine, t + 2);
                 webkit_web_view_load_uri(WEBKIT_WEB_VIEW(c->web_view), f);
-                free(f);
+                g_free(f);
             } else {
                 f = ensure_uri_scheme(t);
                 webkit_web_view_load_uri(WEBKIT_WEB_VIEW(c->web_view), f);
@@ -1054,7 +1060,7 @@ mainwindow_setup(void) {
     g_signal_connect(G_OBJECT(mw.win), "destroy", gtk_main_quit, NULL);
 
     gchar *priv = (cfg.private) ? "-private" : "";
-    gchar *title = malloc(strlen(priv) + strlen(__NAME__));
+    gchar *title = malloc(strlen(priv) + strlen(__NAME__) + 1);
     sprintf(title, "%s%s", __NAME__, priv);
     gtk_window_set_title(GTK_WINDOW(mw.win), title);