diff options
| author | Joakim Verona | 2011-07-31 23:55:11 +0200 |
|---|---|---|
| committer | Joakim Verona | 2011-07-31 23:55:11 +0200 |
| commit | fceaa88120e9f907c279baecd2e755b16e667059 (patch) | |
| tree | 00cdaf6a0fd7a5e752cd31162dcd87f6430027cb /src | |
| parent | 6752d22f823d01391254b4f10e854f6456d26ed2 (diff) | |
| download | emacs-fceaa88120e9f907c279baecd2e755b16e667059.tar.gz emacs-fceaa88120e9f907c279baecd2e755b16e667059.zip | |
example webkit signal handler for document-loaded. upstream has changed display code so there are some visual glitches. i dont think xwidget code is to blame.
Diffstat (limited to 'src')
| -rw-r--r-- | src/xwidget.c | 34 |
1 files changed, 33 insertions, 1 deletions
diff --git a/src/xwidget.c b/src/xwidget.c index c8e025db579..c2dc1ac8cf8 100644 --- a/src/xwidget.c +++ b/src/xwidget.c | |||
| @@ -142,6 +142,9 @@ extern Lisp_Object QCwidth, QCheight; | |||
| 142 | struct xwidget_view* xwidget_view_lookup(struct xwidget* xw, struct window *w); | 142 | struct xwidget_view* xwidget_view_lookup(struct xwidget* xw, struct window *w); |
| 143 | Lisp_Object xwidget_spec_value ( Lisp_Object spec, Lisp_Object key, int *found); | 143 | Lisp_Object xwidget_spec_value ( Lisp_Object spec, Lisp_Object key, int *found); |
| 144 | gboolean webkit_osr_damage_event_callback (GtkWidget *widget, GdkEventExpose *event, gpointer data) ; | 144 | gboolean webkit_osr_damage_event_callback (GtkWidget *widget, GdkEventExpose *event, gpointer data) ; |
| 145 | void webkit_osr_document_load_finished_callback (WebKitWebView *webkitwebview, | ||
| 146 | WebKitWebFrame *arg1, | ||
| 147 | gpointer user_data); | ||
| 145 | 148 | ||
| 146 | DEFUN ("make-xwidget", Fmake_xwidget, Smake_xwidget, 7, 7, 0, | 149 | DEFUN ("make-xwidget", Fmake_xwidget, Smake_xwidget, 7, 7, 0, |
| 147 | doc: /* xw */ | 150 | doc: /* xw */ |
| @@ -191,7 +194,12 @@ DEFUN ("make-xwidget", Fmake_xwidget, Smake_xwidget, 7, 7, 0, | |||
| 191 | /* store some xwidget data in the gtk widgets for convenient retrieval in the event handlers. */ | 194 | /* store some xwidget data in the gtk widgets for convenient retrieval in the event handlers. */ |
| 192 | g_object_set_data (G_OBJECT (xw->widget_osr), XG_XWIDGET, (gpointer) (xw)); | 195 | g_object_set_data (G_OBJECT (xw->widget_osr), XG_XWIDGET, (gpointer) (xw)); |
| 193 | g_object_set_data (G_OBJECT (xw->widgetwindow_osr), XG_XWIDGET, (gpointer) (xw)); | 196 | g_object_set_data (G_OBJECT (xw->widgetwindow_osr), XG_XWIDGET, (gpointer) (xw)); |
| 194 | g_signal_connect (G_OBJECT ( xw->widgetwindow_osr), "damage-event", G_CALLBACK (webkit_osr_damage_event_callback), NULL); | 197 | /* signals */ |
| 198 | g_signal_connect (G_OBJECT ( xw->widgetwindow_osr), "damage-event", G_CALLBACK (webkit_osr_damage_event_callback), NULL); | ||
| 199 | g_signal_connect (G_OBJECT ( xw->widget_osr), | ||
| 200 | "document-load-finished", | ||
| 201 | G_CALLBACK (webkit_osr_document_load_finished_callback), | ||
| 202 | xw); | ||
| 195 | 203 | ||
| 196 | webkit_web_view_load_uri(WEBKIT_WEB_VIEW(xw->widget_osr), "http://www.fsf.org"); | 204 | webkit_web_view_load_uri(WEBKIT_WEB_VIEW(xw->widget_osr), "http://www.fsf.org"); |
| 197 | UNBLOCK_INPUT; | 205 | UNBLOCK_INPUT; |
| @@ -379,6 +387,30 @@ gboolean webkit_osr_damage_event_callback (GtkWidget *widget, GdkEventExpose *ev | |||
| 379 | } | 387 | } |
| 380 | 388 | ||
| 381 | 389 | ||
| 390 | void webkit_osr_document_load_finished_callback (WebKitWebView *webkitwebview, | ||
| 391 | WebKitWebFrame *arg1, | ||
| 392 | gpointer data) | ||
| 393 | { | ||
| 394 | //TODO this event sending code should be refactored | ||
| 395 | struct input_event event; | ||
| 396 | // struct xwidget *xw = (struct xwidget *) data; | ||
| 397 | struct xwidget* xw = (struct xwidget*) g_object_get_data (G_OBJECT (webkitwebview), XG_XWIDGET); | ||
| 398 | printf("webkit finished loading\n"); | ||
| 399 | |||
| 400 | EVENT_INIT (event); | ||
| 401 | event.kind = XWIDGET_EVENT; | ||
| 402 | event.frame_or_window = Qnil; //frame; //how to get the frame here? //TODO i store it in the xwidget now | ||
| 403 | |||
| 404 | event.arg = Qnil; | ||
| 405 | //event.arg = Fcons (make_number (xembedid), event.arg); | ||
| 406 | event.arg = Fcons (xw, event.arg); //TODO | ||
| 407 | event.arg = Fcons (intern ("document-load-finished"), event.arg); | ||
| 408 | |||
| 409 | |||
| 410 | kbd_buffer_store_event (&event); | ||
| 411 | |||
| 412 | } | ||
| 413 | |||
| 382 | //for gtk3 webkit_osr | 414 | //for gtk3 webkit_osr |
| 383 | gboolean | 415 | gboolean |
| 384 | xwidget_osr_draw_callback (GtkWidget *widget, cairo_t *cr, gpointer data) | 416 | xwidget_osr_draw_callback (GtkWidget *widget, cairo_t *cr, gpointer data) |