From 49372d5a7f61d3e9f29a3c648dde12db6ecf6979 Mon Sep 17 00:00:00 2001 From: Pierre Pronchery Date: Sun, 29 Mar 2009 01:13:10 +0000 Subject: [PATCH] Implemented javascript alerts --- src/ghtml-webkit.c | 14 ++++++++++++++ src/surfer.c | 16 ++++++++++++++++ src/surfer.h | 1 + 3 files changed, 31 insertions(+) diff --git a/src/ghtml-webkit.c b/src/ghtml-webkit.c index 7ebfc78..68e797e 100644 --- a/src/ghtml-webkit.c +++ b/src/ghtml-webkit.c @@ -31,6 +31,8 @@ static void _on_load_progress_changed(WebKitWebView * view, gint progress, gpointer data); static void _on_load_started(WebKitWebView * view, WebKitWebFrame * frame, gpointer data); +static void _on_script_alert(WebKitWebView * view, WebKitWebFrame * frame, + gchar * message, gpointer data); static void _on_title_changed(WebKitWebView * view, WebKitWebFrame * frame, const gchar * title, gpointer data); @@ -57,6 +59,8 @@ GtkWidget * ghtml_new(Surfer * surfer) _on_load_progress_changed), widget); g_signal_connect(G_OBJECT(view), "load-started", G_CALLBACK( _on_load_started), widget); + g_signal_connect(G_OBJECT(view), "script-alert", G_CALLBACK( + _on_script_alert), widget); g_signal_connect(G_OBJECT(view), "title-changed", G_CALLBACK( _on_title_changed), widget); /* scrolled window */ @@ -260,6 +264,16 @@ static void _on_load_started(WebKitWebView * view, WebKitWebFrame * frame, } +static void _on_script_alert(WebKitWebView * view, WebKitWebFrame * frame, + gchar * message, gpointer data) +{ + Surfer * surfer; + + surfer = g_object_get_data(G_OBJECT(data), "surfer"); + surfer_warning(surfer, message); +} + + static void _on_title_changed(WebKitWebView * view, WebKitWebFrame * frame, const gchar * title, gpointer data) { diff --git a/src/surfer.c b/src/surfer.c index c54d401..4805ce6 100644 --- a/src/surfer.c +++ b/src/surfer.c @@ -488,6 +488,22 @@ void surfer_unselect_all(Surfer * surfer) } +/* surfer_warning */ +void surfer_warning(Surfer * surfer, char const * message) +{ + GtkWidget * dialog; + + dialog = gtk_message_dialog_new((surfer != NULL) + ? GTK_WINDOW(surfer->window) : NULL, + GTK_DIALOG_DESTROY_WITH_PARENT, + GTK_MESSAGE_WARNING, GTK_BUTTONS_OK, "%s", message); + gtk_window_set_title(GTK_WINDOW(dialog), "Warning"); + g_signal_connect(G_OBJECT(dialog), "response", G_CALLBACK( + gtk_widget_destroy), NULL); + gtk_widget_show(dialog); +} + + /* surfer_zoom_in */ void surfer_zoom_in(Surfer * surfer) { diff --git a/src/surfer.h b/src/surfer.h index 870b647..51e7ad7 100644 --- a/src/surfer.h +++ b/src/surfer.h @@ -78,6 +78,7 @@ void surfer_set_title(Surfer * surfer, char const * title); /* useful */ int surfer_error(Surfer * surfer, char const * message, int ret); +void surfer_warning(Surfer * surfer, char const * message); void surfer_open(Surfer * surfer, char const * url); void surfer_open_dialog(Surfer * surfer);