aboutsummaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
authorGravatar Jake Probst <jake.probst@gmail.com>2011-02-17 14:41:52 -0800
committerGravatar Jake Probst <jake.probst@gmail.com>2011-02-17 14:41:52 -0800
commitbf3ffb03fd15377022f0cbffcbb041ec1812fb49 (patch)
treeb9d29ed5cd902b47a48e16f9a3569e393d9ad3b1 /src
parent8bbc39b83f362896f133c8cb054dc4f2773c5232 (diff)
menu_image_add is now not totally useless and gives the image url as an argument
Diffstat (limited to 'src')
-rw-r--r--src/callbacks.c33
-rw-r--r--src/uzbl-core.c3
-rw-r--r--src/uzbl-core.h1
3 files changed, 30 insertions, 7 deletions
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);
}
diff --git a/src/uzbl-core.c b/src/uzbl-core.c
index 877dbda..5953a11 100644
--- a/src/uzbl-core.c
+++ b/src/uzbl-core.c
@@ -1398,7 +1398,8 @@ move_statusbar() {
}
g_object_unref(uzbl.gui.scrolled_win);
g_object_unref(uzbl.gui.mainbar);
- gtk_widget_grab_focus (GTK_WIDGET (uzbl.gui.web_view));
+ if (!uzbl.state.plug_mode)
+ gtk_widget_grab_focus (GTK_WIDGET (uzbl.gui.web_view));
return;
}
diff --git a/src/uzbl-core.h b/src/uzbl-core.h
index f81722d..429b892 100644
--- a/src/uzbl-core.h
+++ b/src/uzbl-core.h
@@ -488,6 +488,7 @@ typedef struct {
gchar *cmd;
gboolean issep;
guint context;
+ WebKitHitTestResult* hittest;
} MenuItem;