aboutsummaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/callbacks.c39
-rw-r--r--src/callbacks.h3
-rw-r--r--src/uzbl-core.c6
-rw-r--r--src/uzbl-core.h2
4 files changed, 42 insertions, 8 deletions
diff --git a/src/callbacks.c b/src/callbacks.c
index a40057c..470e8dd 100644
--- a/src/callbacks.c
+++ b/src/callbacks.c
@@ -291,6 +291,13 @@ cmd_caret_browsing() {
}
void
+set_current_encoding() {
+ webkit_web_view_set_custom_encoding(uzbl.gui.web_view,
+ uzbl.behave.current_encoding);
+}
+
+
+void
cmd_fifo_dir() {
uzbl.behave.fifo_dir = init_fifo(uzbl.behave.fifo_dir);
}
@@ -957,16 +964,28 @@ 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_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);
+ }
}
void
populate_popup_cb(WebKitWebView *v, GtkMenu *m, void *c) {
- (void) v;
(void) c;
GUI *g = &uzbl.gui;
GtkWidget *item;
@@ -981,11 +1000,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) {
@@ -996,7 +1023,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);
}
@@ -1014,7 +1041,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/callbacks.h b/src/callbacks.h
index 13cb83d..ab0c1df 100644
--- a/src/callbacks.h
+++ b/src/callbacks.h
@@ -110,6 +110,9 @@ void
cmd_default_encoding();
void
+set_current_encoding();
+
+void
cmd_enforce_96dpi();
void
diff --git a/src/uzbl-core.c b/src/uzbl-core.c
index e565b14..31ed50d 100644
--- a/src/uzbl-core.c
+++ b/src/uzbl-core.c
@@ -131,6 +131,7 @@ const struct var_name_to_ptr_t {
{ "stylesheet_uri", PTR_V_STR(uzbl.behave.style_uri, 1, cmd_style_uri)},
{ "resizable_text_areas", PTR_V_INT(uzbl.behave.resizable_txt, 1, cmd_resizable_txt)},
{ "default_encoding", PTR_V_STR(uzbl.behave.default_encoding, 1, cmd_default_encoding)},
+ { "current_encoding", PTR_V_STR(uzbl.behave.current_encoding, 1, set_current_encoding)},
{ "enforce_96_dpi", PTR_V_INT(uzbl.behave.enforce_96dpi, 1, cmd_enforce_96dpi)},
{ "caret_browsing", PTR_V_INT(uzbl.behave.caret_browsing, 1, cmd_caret_browsing)},
{ "scrollbars_visible", PTR_V_INT(uzbl.gui.scrollbars_visible, 1, cmd_scrollbars_visibility)},
@@ -762,7 +763,7 @@ eval_js(WebKitWebView * web_view, gchar *script, GString *result, const char *fi
js_script = JSStringCreateWithUTF8CString(script);
js_file = JSStringCreateWithUTF8CString(file);
js_result = JSEvaluateScript(context, js_script, globalobject, js_file, 0, &js_exc);
- if (js_result && !JSValueIsUndefined(context, js_result)) {
+ if (result && js_result && !JSValueIsUndefined(context, js_result)) {
js_result_string = JSValueToStringCopy(context, js_result, NULL);
js_result_size = JSStringGetMaximumUTF8CStringSize(js_result_string);
@@ -1232,7 +1233,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 3240fc6..a4e055f 100644
--- a/src/uzbl-core.h
+++ b/src/uzbl-core.h
@@ -187,6 +187,7 @@ typedef struct {
gchar* style_uri;
guint resizable_txt;
gchar* default_encoding;
+ gchar* current_encoding;
guint enforce_96dpi;
gchar *inject_html;
guint caret_browsing;
@@ -362,6 +363,7 @@ typedef struct {
gchar* cmd;
gboolean issep;
guint context;
+ WebKitHitTestResult* hittest;
} MenuItem;
#endif