aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--callbacks.c17
-rw-r--r--examples/config/uzbl/config1
-rw-r--r--uzbl-core.c32
-rw-r--r--uzbl-core.h4
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;