diff options
author | Robert Manea <gotmor@gmail.com> | 2009-10-19 17:28:03 +0200 |
---|---|---|
committer | Robert Manea <gotmor@gmail.com> | 2009-10-19 17:28:03 +0200 |
commit | f4f51de768759334b093634741b1e871ba0b9f19 (patch) | |
tree | 4e07f27feb1d9602088e4a65cd129fcf82a13b06 /callbacks.c | |
parent | ca4d8aa5ade15615ae2cbc4560560cf735cbb2e1 (diff) |
refactor menu_* commands and functions
Diffstat (limited to 'callbacks.c')
-rw-r--r-- | callbacks.c | 56 |
1 files changed, 14 insertions, 42 deletions
diff --git a/callbacks.c b/callbacks.c index 4e105b1..622d71a 100644 --- a/callbacks.c +++ b/callbacks.c @@ -615,27 +615,26 @@ void populate_popup_cb(WebKitWebView *v, GtkMenu *m, void *c) { (void) v; (void) c; + GUI *g = &uzbl.gui; GtkWidget *item; MenuItem *mi; guint i=0; WebKitHitTestResult *ht; guint context, hit=0; + if(!g->menu_items) + return; + /* check context */ - ht = webkit_web_view_get_hit_test_result(uzbl.gui.web_view, uzbl.state.last_button); + ht = webkit_web_view_get_hit_test_result(g->web_view, uzbl.state.last_button); g_object_get(ht, "context", &context, NULL); - /* Separate custom entries from default ones */ - item = gtk_separator_menu_item_new(); - gtk_menu_append(GTK_MENU(m), item); - gtk_widget_show(item); - - if(uzbl.gui.menu_items_link && - (context & WEBKIT_HIT_TEST_RESULT_CONTEXT_LINK)) { - - for(i=0; i < uzbl.gui.menu_items_link->len; i++) { - mi = g_ptr_array_index(uzbl.gui.menu_items_link, i); + for(i=0; i < uzbl.gui.menu_items->len; i++) { + hit = 0; + mi = g_ptr_array_index(uzbl.gui.menu_items, i); + if((mi->context > WEBKIT_HIT_TEST_RESULT_CONTEXT_DOCUMENT) && + (context & mi->context)) { if(mi->issep) { item = gtk_separator_menu_item_new(); gtk_menu_append(GTK_MENU(m), item); @@ -648,39 +647,12 @@ populate_popup_cb(WebKitWebView *v, GtkMenu *m, void *c) { gtk_menu_append(GTK_MENU(m), item); gtk_widget_show(item); } + hit++; } - hit++; - } - - if(uzbl.gui.menu_items_image && - (context & WEBKIT_HIT_TEST_RESULT_CONTEXT_IMAGE)) { - - for(i=0; i < uzbl.gui.menu_items_image->len; i++) { - mi = g_ptr_array_index(uzbl.gui.menu_items_image, i); - - 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); - } - } - hit++; - } - - if(uzbl.gui.menu_items && - !hit && - (context & WEBKIT_HIT_TEST_RESULT_CONTEXT_DOCUMENT)) { - - for(i=0; i < uzbl.gui.menu_items->len; i++) { - mi = g_ptr_array_index(uzbl.gui.menu_items, i); + if((mi->context == WEBKIT_HIT_TEST_RESULT_CONTEXT_DOCUMENT) && + (context <= WEBKIT_HIT_TEST_RESULT_CONTEXT_DOCUMENT) && + !hit) { if(mi->issep) { item = gtk_separator_menu_item_new(); gtk_menu_append(GTK_MENU(m), item); |