aboutsummaryrefslogtreecommitdiffhomepage
path: root/callbacks.c
diff options
context:
space:
mode:
authorGravatar Robert Manea <gotmor@gmail.com>2009-10-19 17:28:03 +0200
committerGravatar Robert Manea <gotmor@gmail.com>2009-10-19 17:28:03 +0200
commitf4f51de768759334b093634741b1e871ba0b9f19 (patch)
tree4e07f27feb1d9602088e4a65cd129fcf82a13b06 /callbacks.c
parentca4d8aa5ade15615ae2cbc4560560cf735cbb2e1 (diff)
refactor menu_* commands and functions
Diffstat (limited to 'callbacks.c')
-rw-r--r--callbacks.c56
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);