diff options
-rw-r--r-- | callbacks.c | 17 | ||||
-rw-r--r-- | examples/config/uzbl/config | 1 | ||||
-rw-r--r-- | uzbl-core.c | 32 | ||||
-rw-r--r-- | uzbl-core.h | 4 |
4 files changed, 46 insertions, 8 deletions
diff --git a/callbacks.c b/callbacks.c index 12bf288..d841fbe 100644 --- a/callbacks.c +++ b/callbacks.c @@ -617,11 +617,18 @@ populate_popup_cb(WebKitWebView *v, GtkMenu *m, void *c) { for(i=0; i < uzbl.gui.menu_items->len; i++) { mi = g_ptr_array_index(uzbl.gui.menu_items, i); - item = gtk_menu_item_new_with_label(mi->name); - g_signal_connect(item, "activate", - G_CALLBACK(run_menu_command), mi->cmd); - gtk_menu_append(GTK_MENU(m), item); - gtk_widget_show(item); + if(mi->issep) { + item = gtk_separator_menu_item_new(); + gtk_menu_append(GTK_MENU(m), item); + gtk_widget_show(item); + } + else { + item = gtk_menu_item_new_with_label(mi->name); + g_signal_connect(item, "activate", + G_CALLBACK(run_menu_command), mi->cmd); + gtk_menu_append(GTK_MENU(m), item); + gtk_widget_show(item); + } } } diff --git a/examples/config/uzbl/config b/examples/config/uzbl/config index 519b7a0..78c7bec 100644 --- a/examples/config/uzbl/config +++ b/examples/config/uzbl/config @@ -190,6 +190,7 @@ set formfiller = spawn @scripts_dir/formfiller menu_add Google 'set uri = http://google.com' menu_add 'Go Home' 'set uri = http://uzbl.org' +menu_add_separator menu_add 'Quit uzbl' exit diff --git a/uzbl-core.c b/uzbl-core.c index 94641ff..ee4b1c3 100644 --- a/uzbl-core.c +++ b/uzbl-core.c @@ -624,6 +624,7 @@ struct {const char *key; CommandInfo value;} cmdlist[] = { "request", {event, TRUE} }, { "update_gui", {update_gui, TRUE} }, { "menu_add", {menu_add, 0} }, + { "menu_add_separator", {menu_add_separator, TRUE} }, { "menu_remove", {menu_remove, 0} } }; @@ -702,6 +703,7 @@ menu_add(WebKitWebView *page, GArray *argv, GString *result) { m = malloc(sizeof(MenuItem)); m->name = g_strdup(argv_idx(argv, 0)); m->cmd = g_strdup(item_cmd?item_cmd:""); + m->issep = FALSE; g_ptr_array_add(uzbl.gui.menu_items, m); } else @@ -710,6 +712,30 @@ menu_add(WebKitWebView *page, GArray *argv, GString *result) { } void +menu_add_separator(WebKitWebView *page, GArray *argv, GString *result) { + (void) page; + (void) result; + (void) argv; + MenuItem *m; + gchar *sep_name; + + if(!uzbl.gui.menu_items) + uzbl.gui.menu_items = g_ptr_array_new(); + + if(!argv_idx(argv, 0)) + return; + else + sep_name = argv_idx(argv, 0); + + m = malloc(sizeof(MenuItem)); + m->name = g_strdup(sep_name); + m->cmd = NULL; + m->issep = TRUE; + g_ptr_array_add(uzbl.gui.menu_items, m); +} + + +void menu_remove(WebKitWebView *page, GArray *argv, GString *result) { (void) page; (void) result; @@ -720,10 +746,10 @@ menu_remove(WebKitWebView *page, GArray *argv, GString *result) { if(!uzbl.gui.menu_items) return; - if(argv_idx(argv, 0)) - name = argv_idx(argv, 0); - else + if(!argv_idx(argv, 0)) return; + else + name = argv_idx(argv, 0); for(i=0; i < uzbl.gui.menu_items->len; i++) { mi = g_ptr_array_index(uzbl.gui.menu_items, i); diff --git a/uzbl-core.h b/uzbl-core.h index 2cfedcc..63df588 100644 --- a/uzbl-core.h +++ b/uzbl-core.h @@ -435,6 +435,9 @@ void menu_add(WebKitWebView *page, GArray *argv, GString *result); void +menu_add_separator(WebKitWebView *page, GArray *argv, GString *result); + +void menu_remove(WebKitWebView *page, GArray *argv, GString *result); typedef void (*Command)(WebKitWebView*, GArray *argv, GString *result); @@ -446,6 +449,7 @@ typedef struct { typedef struct { gchar *name; gchar *cmd; + gboolean issep; } MenuItem; |