aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/xwidget.c14
1 files changed, 10 insertions, 4 deletions
diff --git a/src/xwidget.c b/src/xwidget.c
index b362ca55a1f..6732fad02d5 100644
--- a/src/xwidget.c
+++ b/src/xwidget.c
@@ -790,6 +790,7 @@ DEFUN ("xwidget-send-keyboard-event", Fxwidget_send_keyboard_event, Sxwidget_sen
790 ) 790 )
791 (Lisp_Object xwidget, Lisp_Object keydescriptor) 791 (Lisp_Object xwidget, Lisp_Object keydescriptor)
792{ 792{
793 //TODO this code crashes and ive tried many different strategies
793 int keyval = 0x058; //X 794 int keyval = 0x058; //X
794 char *keystring = ""; 795 char *keystring = "";
795 796
@@ -798,11 +799,16 @@ DEFUN ("xwidget-send-keyboard-event", Fxwidget_send_keyboard_event, Sxwidget_sen
798 GdkEventKey* ev = (GdkEventKey*)gdk_event_new(GDK_KEY_PRESS); 799 GdkEventKey* ev = (GdkEventKey*)gdk_event_new(GDK_KEY_PRESS);
799 ev->window = gtk_widget_get_window(xw->widget_osr); 800 ev->window = gtk_widget_get_window(xw->widget_osr);
800 ev->keyval = keyval; 801 ev->keyval = keyval;
801 gdk_event_put((GdkEvent*)ev); 802 ev->time = 0;
803 GdkDeviceManager* manager = gdk_display_get_device_manager(gdk_window_get_display(ev->window));
804 gdk_event_set_device (ev, gdk_device_manager_get_client_pointer(manager));
805 //gdk_event_put((GdkEvent*)ev);
806 g_signal_emit_by_name(ev->window,"key-press-event", ev);
802 ev->type = GDK_KEY_RELEASE; 807 ev->type = GDK_KEY_RELEASE;
803 gdk_event_put((GdkEvent*)ev); 808 //gdk_event_put((GdkEvent*)ev);
804 gtk_main_do_event(ev); 809 g_signal_emit_by_name(ev->window,"key-release-event", ev);
805 gdk_event_free((GdkEvent*)ev); 810 //gtk_main_do_event(ev);
811 //gdk_event_free((GdkEvent*)ev);
806 812
807 return Qnil; 813 return Qnil;
808} 814}