On Mi, Jun 27 2012, Hannes Schüller wrote:
> Hi,
>
> the attached patch should finally make the browser handle window.open
> events correctly. Testing of different websites would be greatly
> appreciated.
I haven't tested this much, but so far it seems to work. I have
published a git branch with the patch for easier testing:
http://git.cs.fau.de/?p=lu03pevi/vimprobable;a=shortlog;h=refs/heads/fixes/javascript_windows
> -static gboolean
> -webview_open_in_new_window_cb(WebKitWebView *webview, WebKitWebFrame *frame, gpointer user_data) {
> - Arg a = { .i = TargetNew, .s = (char*)webkit_web_view_get_uri(webview) };
> - if (strlen(rememberedURI) > 0) {
> - a.s = rememberedURI;
> - }
> +void
> +webview_open_js_window_cb(WebKitWebView* web_view, GParamSpec param_spec) {
> + Arg a = { .i = TargetNew, .s = (char*)webkit_web_view_get_uri(web_view) };
> open_arg(&a);
> - return FALSE;
> +}
> +
> +static WebKitWebView *
> +webview_open_in_new_window_cb(WebKitWebView *webview, WebKitWebFrame *frame, gpointer user_data) {
> + WebKitWebView *new_view = WEBKIT_WEB_VIEW(webkit_web_view_new());
I haven't read the documentation for this, but doesn't "new_view" have
to be destroyed somewhere? Otherwise you'll be leaking memory.
> + g_object_connect(new_view, "signal::notify::uri", G_CALLBACK(webview_open_js_window_cb), NULL, NULL);
> + return new_view;
> }
HP
|