diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/callbacks.c | 55 | ||||
-rw-r--r-- | src/callbacks.h | 6 | ||||
-rw-r--r-- | src/uzbl-core.c | 8 | ||||
-rw-r--r-- | src/uzbl-core.h | 1 |
4 files changed, 45 insertions, 25 deletions
diff --git a/src/callbacks.c b/src/callbacks.c index a12d51c..351d97e 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); } @@ -452,29 +459,45 @@ void load_status_change_cb (WebKitWebView* web_view, GParamSpec param_spec) { (void) param_spec; - WebKitWebFrame *frame = webkit_web_view_get_main_frame(web_view); + WebKitWebFrame *frame; WebKitLoadStatus status = webkit_web_view_get_load_status(web_view); switch(status) { case WEBKIT_LOAD_PROVISIONAL: - send_event(LOAD_START, NULL, TYPE_STR, uzbl.state.uri ? uzbl.state.uri : "", NULL); + send_event(LOAD_START, NULL, TYPE_STR, uzbl.state.uri ? uzbl.state.uri : "", NULL); break; case WEBKIT_LOAD_COMMITTED: - g_free (uzbl.state.uri); - GString* newuri = g_string_new (webkit_web_frame_get_uri (frame)); - uzbl.state.uri = g_string_free (newuri, FALSE); - g_setenv("UZBL_URI", uzbl.state.uri, TRUE); - + frame = webkit_web_view_get_main_frame(web_view); send_event(LOAD_COMMIT, NULL, TYPE_STR, webkit_web_frame_get_uri (frame), NULL); break; case WEBKIT_LOAD_FINISHED: - send_event(LOAD_FINISH, NULL, TYPE_STR, webkit_web_frame_get_uri(frame), NULL); + send_event(LOAD_FINISH, NULL, TYPE_STR, uzbl.state.uri, NULL); break; case WEBKIT_LOAD_FIRST_VISUALLY_NON_EMPTY_LAYOUT: break; /* we don't do anything with this (yet) */ case WEBKIT_LOAD_FAILED: break; /* load_error_cb will handle this case */ } +} +void +load_error_cb (WebKitWebView* page, WebKitWebFrame* frame, gchar *uri, gpointer web_err, gpointer ud) { + (void) page; (void) frame; (void) ud; + GError *err = web_err; + + send_event (LOAD_ERROR, NULL, + TYPE_STR, uri, + TYPE_INT, err->code, + TYPE_STR, err->message, + NULL); +} + +void +uri_change_cb (WebKitWebView *web_view, GParamSpec param_spec) { + (void) param_spec; + + g_free (uzbl.state.uri); + g_object_get (web_view, "uri", &uzbl.state.uri, NULL); + g_setenv("UZBL_URI", uzbl.state.uri, TRUE); } void @@ -489,20 +512,6 @@ selection_changed_cb(WebKitWebView *webkitwebview, gpointer ud) { } void -load_error_cb (WebKitWebView* page, WebKitWebFrame* frame, gchar *uri, gpointer web_err, gpointer ud) { - (void) page; - (void) frame; - (void) ud; - GError *err = web_err; - - send_event (LOAD_ERROR, NULL, - TYPE_STR, uri, - TYPE_INT, err->code, - TYPE_STR, err->message, - NULL); -} - -void destroy_cb (GtkWidget* widget, gpointer data) { (void) widget; (void) data; @@ -1004,7 +1013,7 @@ populate_popup_cb(WebKitWebView *v, GtkMenu *m, void *c) { 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); + gdk_window_get_pointer(gtk_widget_get_window(GTK_WIDGET(v)), &x, &y, NULL); ev.x = x; ev.y = y; mi->hittest = webkit_web_view_get_hit_test_result(v, &ev); diff --git a/src/callbacks.h b/src/callbacks.h index a026f46..6b76ee6 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 @@ -158,6 +161,9 @@ void load_error_cb (WebKitWebView* page, WebKitWebFrame* frame, gchar *uri, gpointer web_err, gpointer ud); void +uri_change_cb (WebKitWebView *web_view, GParamSpec param_spec); + +void selection_changed_cb(WebKitWebView *webkitwebview, gpointer ud); void diff --git a/src/uzbl-core.c b/src/uzbl-core.c index ef509a4..4e1a7d8 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); @@ -1161,8 +1162,10 @@ parse_command_parts(const gchar *line, GArray *a) { CommandInfo *c = NULL; gchar *exp_line = expand(line, 0); - if(exp_line[0] == '\0') + if(exp_line[0] == '\0') { + g_free(exp_line); return NULL; + } /* separate the line into the command and its parameters */ gchar **tokens = g_strsplit(exp_line, " ", 2); @@ -1420,6 +1423,7 @@ create_scrolled_win() { "signal::selection-changed", (GCallback)selection_changed_cb, NULL, "signal::notify::progress", (GCallback)progress_change_cb, NULL, "signal::notify::load-status", (GCallback)load_status_change_cb, NULL, + "signal::notify::uri", (GCallback)uri_change_cb, NULL, "signal::load-error", (GCallback)load_error_cb, NULL, "signal::hovering-over-link", (GCallback)link_hover_cb, NULL, "signal::navigation-policy-decision-requested", (GCallback)navigation_decision_cb, NULL, diff --git a/src/uzbl-core.h b/src/uzbl-core.h index 484f670..91ccf65 100644 --- a/src/uzbl-core.h +++ b/src/uzbl-core.h @@ -185,6 +185,7 @@ typedef struct { gchar* style_uri; guint resizable_txt; gchar* default_encoding; + gchar* current_encoding; guint enforce_96dpi; gchar *inject_html; guint caret_browsing; |