diff --git a/src/ghtml-webkit.c b/src/ghtml-webkit.c index 2518595..317554a 100644 --- a/src/ghtml-webkit.c +++ b/src/ghtml-webkit.c @@ -356,16 +356,19 @@ static gboolean _on_load_error(WebKitWebView * view, WebKitWebFrame * frame, Surfer * surfer; surfer = g_object_get_data(G_OBJECT(data), "surfer"); - if(error != NULL && error->message != NULL) + if(error == NULL) + return surfer_error(surfer, "Unknown error", TRUE); + if(error->domain == WEBKIT_NETWORK_ERROR + && error->code == WEBKIT_NETWORK_ERROR_CANCELLED) + return TRUE; /* ignored if the user cancelled it */ + if(error->domain == WEBKIT_POLICY_ERROR + && error->code == WEBKIT_POLICY_ERROR_FRAME_LOAD_INTERRUPTED_BY_POLICY_CHANGE) { - /* ignore if the user cancelled it */ - if(error->domain == WEBKIT_NETWORK_ERROR - && error->code - == WEBKIT_NETWORK_ERROR_CANCELLED) - return TRUE; - surfer_error(surfer, error->message, 0); + /* FIXME propose to download or cancel instead */ + surfer_download(surfer, uri, NULL); + return TRUE; } - return TRUE; + return surfer_error(surfer, error->message, TRUE); } diff --git a/src/surfer.c b/src/surfer.c index 8b782a5..64c7a2b 100644 --- a/src/surfer.c +++ b/src/surfer.c @@ -489,7 +489,7 @@ int surfer_error(Surfer * surfer, char const * message, int ret) GTK_DIALOG_DESTROY_WITH_PARENT, GTK_MESSAGE_ERROR, GTK_BUTTONS_CLOSE, "%s", "Error"); gtk_message_dialog_format_secondary_text(GTK_MESSAGE_DIALOG(dialog), - "%s", message); + "%s", (message != NULL) ? message : "Unknown error"); gtk_window_set_title(GTK_WINDOW(dialog), "Error"); g_signal_connect(G_OBJECT(dialog), "response", G_CALLBACK( gtk_widget_destroy), NULL);