diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/xwidget.c | 34 |
1 files changed, 26 insertions, 8 deletions
diff --git a/src/xwidget.c b/src/xwidget.c index a47d6c12dbc..c4e4f2c5ba2 100644 --- a/src/xwidget.c +++ b/src/xwidget.c | |||
| @@ -540,26 +540,21 @@ xwidget_init_view ( | |||
| 540 | } else if (EQ(xww->type, Qwebkit_osr)) { | 540 | } else if (EQ(xww->type, Qwebkit_osr)) { |
| 541 | #ifdef HAVE_WEBKIT_OSR | 541 | #ifdef HAVE_WEBKIT_OSR |
| 542 | xv->widget = gtk_drawing_area_new(); | 542 | xv->widget = gtk_drawing_area_new(); |
| 543 | gtk_widget_set_app_paintable ( xv->widget, TRUE); //because expose event handling | 543 | gtk_widget_set_app_paintable ( xv->widget, TRUE); //because expose event handling |
| 544 | #endif | 544 | #endif |
| 545 | #ifdef HAVE_GTK3 //and webkit_osr | 545 | #ifdef HAVE_GTK3 //and webkit_osr |
| 546 | gtk_widget_add_events(xv->widget, | 546 | gtk_widget_add_events(xv->widget, |
| 547 | GDK_BUTTON_PRESS_MASK | 547 | GDK_BUTTON_PRESS_MASK |
| 548 | | GDK_BUTTON_RELEASE_MASK | 548 | | GDK_BUTTON_RELEASE_MASK |
| 549 | | GDK_POINTER_MOTION_MASK | 549 | | GDK_POINTER_MOTION_MASK); |
| 550 | ); | ||
| 551 | |||
| 552 | g_signal_connect (G_OBJECT ( xv->widget), "draw", | 550 | g_signal_connect (G_OBJECT ( xv->widget), "draw", |
| 553 | G_CALLBACK (xwidget_osr_draw_callback), NULL); | 551 | G_CALLBACK (xwidget_osr_draw_callback), NULL); |
| 554 | |||
| 555 | g_signal_connect (G_OBJECT ( xv->widget), "button-press-event", | 552 | g_signal_connect (G_OBJECT ( xv->widget), "button-press-event", |
| 556 | G_CALLBACK (xwidget_osr_button_callback), NULL); | 553 | G_CALLBACK (xwidget_osr_button_callback), NULL); |
| 557 | g_signal_connect (G_OBJECT ( xv->widget), "button-release-event", | 554 | g_signal_connect (G_OBJECT ( xv->widget), "button-release-event", |
| 558 | G_CALLBACK (xwidget_osr_button_callback), NULL); | 555 | G_CALLBACK (xwidget_osr_button_callback), NULL); |
| 559 | g_signal_connect (G_OBJECT ( xv->widget), "motion-notify-event", | 556 | g_signal_connect (G_OBJECT ( xv->widget), "motion-notify-event", |
| 560 | G_CALLBACK (xwidget_osr_button_callback), NULL); | 557 | G_CALLBACK (xwidget_osr_button_callback), NULL); |
| 561 | |||
| 562 | |||
| 563 | #else | 558 | #else |
| 564 | g_signal_connect (G_OBJECT ( xv->widget), "expose_event", | 559 | g_signal_connect (G_OBJECT ( xv->widget), "expose_event", |
| 565 | G_CALLBACK (webkit_osr_expose_event_callback), NULL); | 560 | G_CALLBACK (webkit_osr_expose_event_callback), NULL); |
| @@ -774,6 +769,27 @@ DEFUN ("xwidget-webkit-goto-uri", Fxwidget_webkit_goto_uri, Sxwidget_webkit_got | |||
| 774 | 769 | ||
| 775 | webkit_web_view_load_uri(xw->widget_osr, SDATA(uri)); | 770 | webkit_web_view_load_uri(xw->widget_osr, SDATA(uri)); |
| 776 | } | 771 | } |
| 772 | |||
| 773 | DEFUN ("xwidget-webkit-execute-script", Fxwidget_webkit_execute_script, Sxwidget_webkit_execute_script, 2, 2, 0, | ||
| 774 | doc: /* webkit exec js.*/ | ||
| 775 | ) | ||
| 776 | (Lisp_Object xwidget_id, Lisp_Object script) | ||
| 777 | { | ||
| 778 | |||
| 779 | //TODO refactor this crap to something sane | ||
| 780 | struct xwidget *xw; | ||
| 781 | int xid; | ||
| 782 | |||
| 783 | CHECK_NUMBER (xwidget_id); | ||
| 784 | xid = XFASTINT (xwidget_id); | ||
| 785 | xw = &xwidgets[xid]; | ||
| 786 | |||
| 787 | //TODO check xw actually is of the correct type before trying stuff with it | ||
| 788 | |||
| 789 | webkit_web_view_execute_script(xw->widget_osr, SDATA(script)); | ||
| 790 | return Qnil; | ||
| 791 | } | ||
| 792 | |||
| 777 | #endif | 793 | #endif |
| 778 | 794 | ||
| 779 | 795 | ||
| @@ -868,7 +884,7 @@ DEFUN ("xwidget-set-keyboard-grab", Fxwidget_set_keyboard_grab, Sxwidget_set_key | |||
| 868 | xid = XFASTINT (xwidget_id); | 884 | xid = XFASTINT (xwidget_id); |
| 869 | kbd_flag = XFASTINT (kbd_grab); | 885 | kbd_flag = XFASTINT (kbd_grab); |
| 870 | xw = &xwidgets[xid]; | 886 | xw = &xwidgets[xid]; |
| 871 | if(xw->type != 3) return Qnil; //only relevant for xembed //TODO MVC | 887 | |
| 872 | 888 | ||
| 873 | printf ("kbd grab: %d %d\n", xid, kbd_flag); | 889 | printf ("kbd grab: %d %d\n", xid, kbd_flag); |
| 874 | if (kbd_flag) | 890 | if (kbd_flag) |
| @@ -991,7 +1007,9 @@ syms_of_xwidget (void) | |||
| 991 | defsubr (&Sxwidget_info); | 1007 | defsubr (&Sxwidget_info); |
| 992 | defsubr (&Sxwidget_resize_internal); | 1008 | defsubr (&Sxwidget_resize_internal); |
| 993 | defsubr (&Sxwidget_embed_steal_window); | 1009 | defsubr (&Sxwidget_embed_steal_window); |
| 1010 | |||
| 994 | defsubr (&Sxwidget_webkit_goto_uri); | 1011 | defsubr (&Sxwidget_webkit_goto_uri); |
| 1012 | defsubr (&Sxwidget_webkit_execute_script); | ||
| 995 | 1013 | ||
| 996 | DEFSYM (Qxwidget ,"xwidget"); | 1014 | DEFSYM (Qxwidget ,"xwidget"); |
| 997 | 1015 | ||