From bf3ffb03fd15377022f0cbffcbb041ec1812fb49 Mon Sep 17 00:00:00 2001 From: Jake Probst Date: Thu, 17 Feb 2011 14:41:52 -0800 Subject: menu_image_add is now not totally useless and gives the image url as an argument --- src/callbacks.c | 33 +++++++++++++++++++++++++++------ 1 file changed, 27 insertions(+), 6 deletions(-) (limited to 'src/callbacks.c') diff --git a/src/callbacks.c b/src/callbacks.c index fa2ed1f..b603ea0 100644 --- a/src/callbacks.c +++ b/src/callbacks.c @@ -934,16 +934,29 @@ scroll_horiz_cb(GtkAdjustment *adjust, void *w) } void -run_menu_command(GtkWidget *menu, const char *line) { +run_menu_command(GtkWidget *menu, MenuItem *mi) { (void) menu; - parse_cmd_line(line, NULL); + if (mi->context & WEBKIT_HIT_TEST_RESULT_CONTEXT_IMAGE) { + gchar* uri; + g_object_get(mi->hittest, "image-uri", &uri, NULL); + + gchar* cmd = g_malloc(strlen(uri) + strlen(mi->cmd) + 5); + g_sprintf(cmd, "%s %s", mi->cmd, uri); + + parse_cmd_line(cmd, NULL); + + g_free(cmd); + g_free(uri); + } + else { + parse_cmd_line(mi->cmd, NULL); + } } void populate_popup_cb(WebKitWebView *v, GtkMenu *m, void *c) { - (void) v; (void) c; GUI *g = &uzbl.gui; GtkWidget *item; @@ -958,11 +971,19 @@ populate_popup_cb(WebKitWebView *v, GtkMenu *m, void *c) { if((context = get_click_context(NULL)) == -1) return; - 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_IMAGE) { + GdkEventButton ev; + gint x, y; + gdk_window_get_pointer(gtk_widget_get_window(v), &x, &y, NULL); + ev.x = x; + ev.y = y; + mi->hittest = webkit_web_view_get_hit_test_result(v, &ev); + } + if((mi->context > WEBKIT_HIT_TEST_RESULT_CONTEXT_DOCUMENT) && (context & mi->context)) { if(mi->issep) { @@ -973,7 +994,7 @@ populate_popup_cb(WebKitWebView *v, GtkMenu *m, void *c) { else { item = gtk_menu_item_new_with_label(mi->name); g_signal_connect(item, "activate", - G_CALLBACK(run_menu_command), mi->cmd); + G_CALLBACK(run_menu_command), mi); gtk_menu_shell_append(GTK_MENU_SHELL(m), item); gtk_widget_show(item); } @@ -991,7 +1012,7 @@ populate_popup_cb(WebKitWebView *v, GtkMenu *m, void *c) { else { item = gtk_menu_item_new_with_label(mi->name); g_signal_connect(item, "activate", - G_CALLBACK(run_menu_command), mi->cmd); + G_CALLBACK(run_menu_command), mi); gtk_menu_shell_append(GTK_MENU_SHELL(m), item); gtk_widget_show(item); } -- cgit v1.2.3 From 60b27c0e224a1153f8cfd6be61524efcf655c3da Mon Sep 17 00:00:00 2001 From: Jake Probst Date: Sun, 20 Feb 2011 17:58:37 -0800 Subject: getting yelled at about memory leaks --- src/callbacks.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) (limited to 'src/callbacks.c') diff --git a/src/callbacks.c b/src/callbacks.c index b603ea0..37c22a6 100644 --- a/src/callbacks.c +++ b/src/callbacks.c @@ -940,14 +940,13 @@ run_menu_command(GtkWidget *menu, MenuItem *mi) { if (mi->context & WEBKIT_HIT_TEST_RESULT_CONTEXT_IMAGE) { gchar* uri; g_object_get(mi->hittest, "image-uri", &uri, NULL); - - gchar* cmd = g_malloc(strlen(uri) + strlen(mi->cmd) + 5); - g_sprintf(cmd, "%s %s", mi->cmd, uri); + gchar* cmd = g_strdup_printf("%s %s", mi->cmd, uri); parse_cmd_line(cmd, NULL); g_free(cmd); g_free(uri); + g_object_unref(mi->hittest); } else { parse_cmd_line(mi->cmd, NULL); -- cgit v1.2.3