diff options
| author | Joakim Verona | 2011-08-17 15:58:40 +0200 |
|---|---|---|
| committer | Joakim Verona | 2011-08-17 15:58:40 +0200 |
| commit | c65b5f16736436ac97466c2a38b23cb70c06811a (patch) | |
| tree | 79725299b465c2d5129af620030ba3adb5b28f9b /src | |
| parent | 296042b2935046f0bad02e4d40a431a6a5804231 (diff) | |
| download | emacs-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.c | 22 |
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 | } |