diff options
| author | Joakim Verona | 2011-11-01 12:00:58 +0100 |
|---|---|---|
| committer | Joakim Verona | 2011-11-01 12:00:58 +0100 |
| commit | ae2cf9364728f21a4024783a3e1947755a851377 (patch) | |
| tree | 880fab3731b3e91d848ad278c2a35ff8c503c4f3 /src | |
| parent | bd5feebdfc13dc4bcb7d1e462fff91ee17ecf2c3 (diff) | |
| download | emacs-ae2cf9364728f21a4024783a3e1947755a851377.tar.gz emacs-ae2cf9364728f21a4024783a3e1947755a851377.zip | |
initial signal handling for downloads
Diffstat (limited to 'src')
| -rw-r--r-- | src/xwidget.c | 47 |
1 files changed, 46 insertions, 1 deletions
diff --git a/src/xwidget.c b/src/xwidget.c index 49e8917892f..6ef5bff1352 100644 --- a/src/xwidget.c +++ b/src/xwidget.c | |||
| @@ -147,7 +147,16 @@ gboolean webkit_osr_key_event_callback (GtkWidget *widget, GdkEventKey *event, g | |||
| 147 | void webkit_osr_document_load_finished_callback (WebKitWebView *webkitwebview, | 147 | void webkit_osr_document_load_finished_callback (WebKitWebView *webkitwebview, |
| 148 | WebKitWebFrame *arg1, | 148 | WebKitWebFrame *arg1, |
| 149 | gpointer user_data); | 149 | gpointer user_data); |
| 150 | 150 | void webkit_osr_download_callback (WebKitWebView *webkitwebview, | |
| 151 | WebKitDownload *arg1, | ||
| 152 | gpointer data); | ||
| 153 | |||
| 154 | gboolean webkit_osr_mime_type_policy_typedecision_requested_callback(WebKitWebView *webView, | ||
| 155 | WebKitWebFrame *frame, | ||
| 156 | WebKitNetworkRequest *request, | ||
| 157 | gchar *mimetype, | ||
| 158 | WebKitWebPolicyDecision *policy_decision, | ||
| 159 | gpointer user_data); | ||
| 151 | DEFUN ("make-xwidget", Fmake_xwidget, Smake_xwidget, 7, 7, 0, | 160 | DEFUN ("make-xwidget", Fmake_xwidget, Smake_xwidget, 7, 7, 0, |
| 152 | doc: /* xw */ | 161 | doc: /* xw */ |
| 153 | ) | 162 | ) |
| @@ -209,6 +218,17 @@ DEFUN ("make-xwidget", Fmake_xwidget, Smake_xwidget, 7, 7, 0, | |||
| 209 | G_CALLBACK (webkit_osr_document_load_finished_callback), | 218 | G_CALLBACK (webkit_osr_document_load_finished_callback), |
| 210 | xw); | 219 | xw); |
| 211 | 220 | ||
| 221 | g_signal_connect (G_OBJECT ( xw->widget_osr), | ||
| 222 | "download-requested", | ||
| 223 | G_CALLBACK (webkit_osr_download_callback), | ||
| 224 | xw); | ||
| 225 | |||
| 226 | g_signal_connect (G_OBJECT ( xw->widget_osr), | ||
| 227 | "mime-type-policy-decision-requested", | ||
| 228 | G_CALLBACK (webkit_osr_mime_type_policy_typedecision_requested_callback), | ||
| 229 | xw); | ||
| 230 | |||
| 231 | |||
| 212 | webkit_web_view_load_uri(WEBKIT_WEB_VIEW(xw->widget_osr), "http://www.fsf.org"); | 232 | webkit_web_view_load_uri(WEBKIT_WEB_VIEW(xw->widget_osr), "http://www.fsf.org"); |
| 213 | UNBLOCK_INPUT; | 233 | UNBLOCK_INPUT; |
| 214 | 234 | ||
| @@ -428,6 +448,31 @@ void webkit_osr_document_load_finished_callback (WebKitWebView *webkitwebvi | |||
| 428 | 448 | ||
| 429 | } | 449 | } |
| 430 | 450 | ||
| 451 | void webkit_osr_download_callback (WebKitWebView *webkitwebview, | ||
| 452 | WebKitDownload *arg1, | ||
| 453 | gpointer data) | ||
| 454 | { | ||
| 455 | printf("download requested %s\n", webkit_download_get_uri (arg1)); | ||
| 456 | return FALSE; | ||
| 457 | } | ||
| 458 | |||
| 459 | gboolean webkit_osr_mime_type_policy_typedecision_requested_callback(WebKitWebView *webView, | ||
| 460 | WebKitWebFrame *frame, | ||
| 461 | WebKitNetworkRequest *request, | ||
| 462 | gchar *mimetype, | ||
| 463 | WebKitWebPolicyDecision *policy_decision, | ||
| 464 | gpointer user_data) | ||
| 465 | { | ||
| 466 | printf("mime policy requested\n"); | ||
| 467 | if(!webkit_web_view_can_show_mime_type(webView, mimetype)){ | ||
| 468 | webkit_web_policy_decision_download (policy_decision); | ||
| 469 | return TRUE; | ||
| 470 | }else{ | ||
| 471 | return FALSE; | ||
| 472 | } | ||
| 473 | } | ||
| 474 | |||
| 475 | |||
| 431 | //for gtk3 webkit_osr | 476 | //for gtk3 webkit_osr |
| 432 | gboolean | 477 | gboolean |
| 433 | xwidget_osr_draw_callback (GtkWidget *widget, cairo_t *cr, gpointer data) | 478 | xwidget_osr_draw_callback (GtkWidget *widget, cairo_t *cr, gpointer data) |