aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorJoakim Verona2011-08-17 15:58:40 +0200
committerJoakim Verona2011-08-17 15:58:40 +0200
commitc65b5f16736436ac97466c2a38b23cb70c06811a (patch)
tree79725299b465c2d5129af620030ba3adb5b28f9b /src
parent296042b2935046f0bad02e4d40a431a6a5804231 (diff)
downloademacs-c65b5f16736436ac97466c2a38b23cb70c06811a.tar.gz
emacs-c65b5f16736436ac97466c2a38b23cb70c06811a.zip
first version ever with keyboard-send that doesnt crash and even propagates event
Diffstat (limited to 'src')
-rw-r--r--src/xwidget.c22
1 files changed, 13 insertions, 9 deletions
diff --git a/src/xwidget.c b/src/xwidget.c
index 6bcf49ebd38..f5854239d09 100644
--- a/src/xwidget.c
+++ b/src/xwidget.c
@@ -199,8 +199,9 @@ DEFUN ("make-xwidget", Fmake_xwidget, Smake_xwidget, 7, 7, 0,
199 /* signals */ 199 /* signals */
200 g_signal_connect (G_OBJECT ( xw->widgetwindow_osr), "damage-event", G_CALLBACK (webkit_osr_damage_event_callback), NULL); 200 g_signal_connect (G_OBJECT ( xw->widgetwindow_osr), "damage-event", G_CALLBACK (webkit_osr_damage_event_callback), NULL);
201 201
202 g_signal_connect (G_OBJECT ( xw->widget_osr), "key-press-event", G_CALLBACK (webkit_osr_key_event_callback), NULL); 202 //TODO these were just a test hack
203 g_signal_connect (G_OBJECT ( xw->widget_osr), "key-release-event", G_CALLBACK (webkit_osr_key_event_callback), NULL); 203 /* g_signal_connect (G_OBJECT ( xw->widget_osr), "key-press-event", G_CALLBACK (webkit_osr_key_event_callback), NULL); */
204 /* g_signal_connect (G_OBJECT ( xw->widget_osr), "key-release-event", G_CALLBACK (webkit_osr_key_event_callback), NULL); */
204 205
205 g_signal_connect (G_OBJECT ( xw->widget_osr), 206 g_signal_connect (G_OBJECT ( xw->widget_osr),
206 "document-load-finished", 207 "document-load-finished",
@@ -492,7 +493,8 @@ xwidget_init_view (
492 g_signal_connect (G_OBJECT (xv->widget), "clicked", 493 g_signal_connect (G_OBJECT (xv->widget), "clicked",
493 G_CALLBACK (buttonclick_handler), xww); //the model rather than the view 494 G_CALLBACK (buttonclick_handler), xww); //the model rather than the view
494 } else if (EQ(xww->type, Qtoggle)) { 495 } else if (EQ(xww->type, Qtoggle)) {
495 xv->widget = gtk_toggle_button_new_with_label (XSTRING(xww->title)->data); 496 //xv->widget = gtk_toggle_button_new_with_label (XSTRING(xww->title)->data);
497 xv->widget = gtk_entry_new ();//temp hack to experiment with key propagation
496 } else if (EQ(xww->type, Qsocket)) { 498 } else if (EQ(xww->type, Qsocket)) {
497 xv->widget = gtk_socket_new (); 499 xv->widget = gtk_socket_new ();
498 g_signal_connect_after(xv->widget, "plug-added", G_CALLBACK(xwidget_plug_added), "plug added"); 500 g_signal_connect_after(xv->widget, "plug-added", G_CALLBACK(xwidget_plug_added), "plug added");
@@ -571,10 +573,10 @@ xwidget_init_view (
571 G_CALLBACK (xwidget_osr_button_callback), NULL); 573 G_CALLBACK (xwidget_osr_button_callback), NULL);
572 g_signal_connect (G_OBJECT ( xv->widget), "motion-notify-event", 574 g_signal_connect (G_OBJECT ( xv->widget), "motion-notify-event",
573 G_CALLBACK (xwidget_osr_button_callback), NULL); 575 G_CALLBACK (xwidget_osr_button_callback), NULL);
574 g_signal_connect (G_OBJECT ( xv->widget), "key-press-event", 576 /* g_signal_connect (G_OBJECT ( xv->widget), "key-press-event", */
575 G_CALLBACK (xwidget_osr_button_callback), NULL); 577 /* G_CALLBACK (xwidget_osr_button_callback), NULL); */
576 g_signal_connect (G_OBJECT ( xv->widget), "key-release-event", 578 /* g_signal_connect (G_OBJECT ( xv->widget), "key-release-event", */
577 G_CALLBACK (xwidget_osr_button_callback), NULL); 579 /* G_CALLBACK (xwidget_osr_button_callback), NULL); */
578 580
579#endif 581#endif
580 582
@@ -909,10 +911,12 @@ DEFUN ("xwidget-send-keyboard-event", Fxwidget_send_keyboard_event, Sxwidget_sen
909 (Lisp_Object xwidget, Lisp_Object keydescriptor) 911 (Lisp_Object xwidget, Lisp_Object keydescriptor)
910{ 912{
911 //TODO this code crashes for offscreen widgets and ive tried many different strategies 913 //TODO this code crashes for offscreen widgets and ive tried many different strategies
912 int keyval = 0x058; //X 914 //int keyval = 0x058; //X
915 int keyval = XFASTINT(keydescriptor); //X
913 char *keystring = ""; 916 char *keystring = "";
914 GdkKeymapKey* keys; 917 GdkKeymapKey* keys;
915 gint n_keys; 918 gint n_keys;
919 //popup_activated_flag = 1; //TODO just a hack
916 gdk_keymap_get_entries_for_keyval(gdk_keymap_get_default(), keyval, &keys, &n_keys); 920 gdk_keymap_get_entries_for_keyval(gdk_keymap_get_default(), keyval, &keys, &n_keys);
917 921
918 struct xwidget *xw = XXWIDGET(xwidget); 922 struct xwidget *xw = XXWIDGET(xwidget);
@@ -950,7 +954,7 @@ DEFUN ("xwidget-send-keyboard-event", Fxwidget_send_keyboard_event, Sxwidget_sen
950 gdk_event_put((GdkEvent*)ev); 954 gdk_event_put((GdkEvent*)ev);
951 //g_signal_emit_by_name(ev->window,"key-release-event", ev); 955 //g_signal_emit_by_name(ev->window,"key-release-event", ev);
952 //gtk_main_do_event(ev); 956 //gtk_main_do_event(ev);
953 gdk_event_free((GdkEvent*)ev); 957 //gdk_event_free((GdkEvent*)ev);
954 958
955 return Qnil; 959 return Qnil;
956} 960}