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);