Merge branch 'experimental' of git://github.com/Dieterbe/uzbl
authorRobert Manea <gotmor@gmail.com>
Sun, 26 Jul 2009 07:04:43 +0000 (09:04 +0200)
committerRobert Manea <gotmor@gmail.com>
Sun, 26 Jul 2009 07:04:43 +0000 (09:04 +0200)
uzbl.c
uzbl.h

diff --git a/uzbl.c b/uzbl.c
index d75a2f9..c578960 100644 (file)
--- a/uzbl.c
+++ b/uzbl.c
@@ -84,7 +84,7 @@ GOptionEntry entries[] =
 };
 
 /* associate command names to their properties */
-typedef const struct {
+typedef struct {
     /* TODO: Make this ambiguous void **ptr into a union { char *char_p; int *int_p; float *float_p; } val;
              the PTR() macro is kind of preventing this change at the moment. */
     void **ptr;
@@ -251,7 +251,7 @@ expand(char *s, guint recurse) {
     guint etype;
     char upto = ' ';
     char *end_simple_var = "^°!\"§$%&/()=?'`'+~*'#-.:,;@<>| \\{}[]¹²³¼½";
-    char str_end[2];
+    char str_end[3];
     char ret[4096];
     char *vend = NULL;
     GError *err = NULL;
@@ -648,7 +648,7 @@ cmd_set_geometry() {
        the above setting and we don't want to end up with
        wrong geometry information
     */
-    retreive_geometry();
+    retrieve_geometry();
 }
 
 void
@@ -831,7 +831,8 @@ struct {char *key; CommandInfo value;} cmdlist[] =
     { "keycmd_nl",          {keycmd_nl, TRUE}              },
     { "keycmd_bs",          {keycmd_bs, 0}                 },
     { "chain",              {chain, 0}                     },
-    { "print",              {print, TRUE}                  }
+    { "print",              {print, TRUE}                  },
+    { "update_gui",         {update_gui, TRUE}           }
 };
 
 void
@@ -886,6 +887,13 @@ set_var(WebKitWebView *page, GArray *argv, GString *result) {
 }
 
 void
+update_gui(WebKitWebView *page, GArray *argv, GString *result) {
+    (void) page; (void) argv; (void) result;
+
+    update_title();
+}
+
+void
 print(WebKitWebView *page, GArray *argv, GString *result) {
     (void) page; (void) result;
     gchar* buf;
@@ -1832,6 +1840,10 @@ cmd_useragent() {
 
 void
 move_statusbar() {
+    if (!uzbl.gui.scrolled_win &&
+            !uzbl.gui.mainbar)
+        return;
+
     gtk_widget_ref(uzbl.gui.scrolled_win);
     gtk_widget_ref(uzbl.gui.mainbar);
     gtk_container_remove(GTK_CONTAINER(uzbl.gui.vbox), uzbl.gui.scrolled_win);
@@ -1856,6 +1868,7 @@ set_var_value(gchar *name, gchar *val) {
     uzbl_cmdprop *c = NULL;
     char *endp = NULL;
     char *buf = NULL;
+    char *invalid_chars = "^°!\"§$%&/()=?'`'+~*'#-.:,;@<>| \\{}[]¹²³¼½";
 
     if( (c = g_hash_table_lookup(uzbl.comm.proto_var, name)) ) {
         if(!c->writeable) return FALSE;
@@ -1879,6 +1892,25 @@ set_var_value(gchar *name, gchar *val) {
 
         /* invoke a command specific function */
         if(c->func) c->func();
+    } else {
+        /* check wether name violates our naming scheme */
+        if(strpbrk(name, invalid_chars)) {
+            if (uzbl.state.verbose)
+                printf("Invalid variable name\n");
+            return FALSE;
+        }
+
+        /* custom vars */
+        c = malloc(sizeof(uzbl_cmdprop));
+        c->type = TYPE_STR;
+        c->dump = 0;
+        c->func = NULL;
+        c->writeable = 1;
+        buf = expand(val, 0);
+        c->ptr = malloc(sizeof(char *));
+        *c->ptr = buf;
+        g_hash_table_insert(uzbl.comm.proto_var,
+                g_strdup(name), (gpointer) c);
     }
     return TRUE;
 }
@@ -2191,7 +2223,7 @@ configure_event_cb(GtkWidget* window, GdkEventConfigure* event) {
     (void) window;
     (void) event;
 
-    retreive_geometry();
+    retrieve_geometry();
     return FALSE;
 }
 
@@ -2761,7 +2793,7 @@ dump_config() {
 }
 
 void
-retreive_geometry() {
+retrieve_geometry() {
     int w, h, x, y;
     GString *buf = g_string_new("");
 
@@ -2894,7 +2926,7 @@ main (int argc, char* argv[]) {
     if(uzbl.gui.geometry)
         cmd_set_geometry();
     else
-        retreive_geometry();
+        retrieve_geometry();
 
     gchar *uri_override = (uzbl.state.uri ? g_strdup(uzbl.state.uri) : NULL);
     if (argc > 1 && !uzbl.state.uri)
@@ -2919,7 +2951,7 @@ main (int argc, char* argv[]) {
         set_var_value("uri", uri_override);
         g_free(uri_override);
     } else if (uzbl.state.uri)
-        cmd_load_uri(uzbl.gui.web_view, NULL);
+        cmd_load_uri();
 
     gtk_main ();
     clean_up();
diff --git a/uzbl.h b/uzbl.h
index 440f36c..00a7814 100644 (file)
--- a/uzbl.h
+++ b/uzbl.h
@@ -483,7 +483,10 @@ void
 dump_config();
 
 void
-retreive_geometry();
+retrieve_geometry();
+
+void
+update_gui(WebKitWebView *page, GArray *argv, GString *result);
 
 gboolean
 configure_event_cb(GtkWidget* window, GdkEventConfigure* event);