diff options
| author | Joakim Verona | 2011-06-23 01:25:37 +0200 |
|---|---|---|
| committer | Joakim Verona | 2011-06-23 01:25:37 +0200 |
| commit | 787c27e81f046cfa1c457ed405551f8ca0ddb0e8 (patch) | |
| tree | e958a23e30261b1469426c2c46842dd0af55a6ed | |
| parent | bccbbe01e0d0a9fcd86e516372d13a347481808f (diff) | |
| download | emacs-787c27e81f046cfa1c457ed405551f8ca0ddb0e8.tar.gz emacs-787c27e81f046cfa1c457ed405551f8ca0ddb0e8.zip | |
socket init demo xwidget-demo-a-socket now shows embedded browser again. phew./configure multiple socket views create multiple embeddable processes though which is wrong. the 1st process plug should just be moved between sockets.
| -rw-r--r-- | lisp/xwidget-test.el | 38 | ||||
| -rw-r--r-- | src/xwidget.c | 17 |
2 files changed, 29 insertions, 26 deletions
diff --git a/lisp/xwidget-test.el b/lisp/xwidget-test.el index 301fa1af984..b9c80d081a6 100644 --- a/lisp/xwidget-test.el +++ b/lisp/xwidget-test.el | |||
| @@ -24,18 +24,27 @@ | |||
| 24 | 24 | ||
| 25 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | 25 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
| 26 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | 26 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
| 27 | ;; demo functions | 27 | ;; demo/test functions |
| 28 | (require 'xwidget) | 28 | (require 'xwidget) |
| 29 | 29 | ||
| 30 | (defun xwidget-demo-minimal () | 30 | (defmacro xwidget-demo (name &rest body) |
| 31 | (interactive) | 31 | `(defun ,(intern (concat "xwidget-demo-" name)) () |
| 32 | (insert "xwidgetdemo<<< a button. another button\n") | 32 | (interactive) |
| 33 | (xwidget-insert (point-min) 2 "button" 40 50 1) | 33 | (switch-to-buffer ,(format "*xwidget-demo-%s*" name)) |
| 34 | (define-key (current-local-map) [xwidget-event] 'xwidget-handler-demo-basic) | 34 | (text-mode);;otherwise no local keymap |
| 35 | ) | 35 | (insert "Some random text for xwidgets to be inserted in for demo purposes.\n") |
| 36 | (defun xwidget-demo-basic () | 36 | ,@body)) |
| 37 | (interactive) | 37 | |
| 38 | (insert "xwidgetdemo<<< a button. another button\n") | 38 | (xwidget-demo "a-button" |
| 39 | (xwidget-insert (point-min) 1 "button" 40 50 1) | ||
| 40 | (define-key (current-local-map) [xwidget-event] 'xwidget-handler-demo-basic)) | ||
| 41 | |||
| 42 | (xwidget-demo "a-socket" | ||
| 43 | (xwidget-insert (point-min) 3 "socket" 500 500 5) | ||
| 44 | (define-key (current-local-map) [xwidget-event] 'xwidget-handler-demo-basic)) | ||
| 45 | |||
| 46 | |||
| 47 | (xwidget-demo "basic" | ||
| 39 | (xwidget-insert (point-min) 1 "button" 40 50 1) | 48 | (xwidget-insert (point-min) 1 "button" 40 50 1) |
| 40 | (xwidget-insert 15 2 "toggle" 60 30 2) | 49 | (xwidget-insert 15 2 "toggle" 60 30 2) |
| 41 | (xwidget-insert 30 3 "emacs" 400 200 3) | 50 | (xwidget-insert 30 3 "emacs" 400 200 3) |
| @@ -45,13 +54,6 @@ | |||
| 45 | ) | 54 | ) |
| 46 | 55 | ||
| 47 | 56 | ||
| 48 | (defun xwidget-demo-single () | ||
| 49 | (interactive) | ||
| 50 | (insert "xwidgetdemo<<< a button. another button\n") | ||
| 51 | (xwidget-insert (point-min) 1 "1" 200 300 1) | ||
| 52 | (define-key (current-local-map) [xwidget-event] 'xwidget-handler-demo-basic) | ||
| 53 | ) | ||
| 54 | |||
| 55 | ;it doesnt seem gtk_socket_steal works very well. its deprecated. | 57 | ;it doesnt seem gtk_socket_steal works very well. its deprecated. |
| 56 | ; xwininfo -int | 58 | ; xwininfo -int |
| 57 | ; then (xwidget-embed-steal 3 <winid>) | 59 | ; then (xwidget-embed-steal 3 <winid>) |
| @@ -82,7 +84,7 @@ | |||
| 82 | (cond ( (eq xwidget-event-type 'xembed-ready) | 84 | (cond ( (eq xwidget-event-type 'xembed-ready) |
| 83 | (let* | 85 | (let* |
| 84 | ((xembed-id (nth 3 last-input-event))) | 86 | ((xembed-id (nth 3 last-input-event))) |
| 85 | (message "xembed ready %S" xembed-id) | 87 | (message "xembed ready event: %S xw-id:%s" xembed-id xwidget-id) |
| 86 | ;;will start emacs/uzbl in a xembed socket when its ready | 88 | ;;will start emacs/uzbl in a xembed socket when its ready |
| 87 | (cond | 89 | (cond |
| 88 | ((eq 3 xwidget-id) | 90 | ((eq 3 xwidget-id) |
diff --git a/src/xwidget.c b/src/xwidget.c index 389e6a655ff..5ebecd63937 100644 --- a/src/xwidget.c +++ b/src/xwidget.c | |||
| @@ -223,8 +223,8 @@ xwidget_init_view ( | |||
| 223 | xv->widget = gtk_socket_new (); | 223 | xv->widget = gtk_socket_new (); |
| 224 | //gtk_widget_set_app_paintable (xw->widget, TRUE); //workaround for composited sockets | 224 | //gtk_widget_set_app_paintable (xw->widget, TRUE); //workaround for composited sockets |
| 225 | 225 | ||
| 226 | gdk_color_parse("blue",&color); //the blue color never seems to show up. something else draws a grey bg | 226 | //gdk_color_parse("blue",&color); //the blue color never seems to show up. something else draws a grey bg |
| 227 | gtk_widget_modify_bg(xv->widget, GTK_STATE_NORMAL, &color); | 227 | //gtk_widget_modify_bg(xv->widget, GTK_STATE_NORMAL, &color); |
| 228 | g_signal_connect_after(xv->widget, "plug-added", G_CALLBACK(xwidget_plug_added), "plug added"); | 228 | g_signal_connect_after(xv->widget, "plug-added", G_CALLBACK(xwidget_plug_added), "plug added"); |
| 229 | break; | 229 | break; |
| 230 | case 4: | 230 | case 4: |
| @@ -277,7 +277,8 @@ xwidget_init_view ( | |||
| 277 | switch (xww->type) | 277 | switch (xww->type) |
| 278 | { | 278 | { |
| 279 | case 3: | 279 | case 3: |
| 280 | printf ("socket id:%x %d\n", | 280 | printf ("xwid:%d socket id:%x %d\n", |
| 281 | xww->id, | ||
| 281 | gtk_socket_get_id (GTK_SOCKET (xv->widget)), | 282 | gtk_socket_get_id (GTK_SOCKET (xv->widget)), |
| 282 | gtk_socket_get_id (GTK_SOCKET (xv->widget))); | 283 | gtk_socket_get_id (GTK_SOCKET (xv->widget))); |
| 283 | send_xembed_ready_event (xww->id, | 284 | send_xembed_ready_event (xww->id, |
| @@ -732,7 +733,7 @@ struct xwidget_view* xwidget_view_lookup(struct xwidget* xw, struct window * | |||
| 732 | int | 733 | int |
| 733 | lookup_xwidget (Lisp_Object spec) | 734 | lookup_xwidget (Lisp_Object spec) |
| 734 | { | 735 | { |
| 735 | 736 | /*when a xwidget lisp spec is found initialize the C struct*/ | |
| 736 | int found = 0, found1 = 0, found2 = 0; | 737 | int found = 0, found1 = 0, found2 = 0; |
| 737 | Lisp_Object value; | 738 | Lisp_Object value; |
| 738 | int id; | 739 | int id; |
| @@ -742,6 +743,7 @@ lookup_xwidget (Lisp_Object spec) | |||
| 742 | id = INTEGERP (value) ? XFASTINT (value) : 0; //id 0 by default, but id must be unique so this is dumb | 743 | id = INTEGERP (value) ? XFASTINT (value) : 0; //id 0 by default, but id must be unique so this is dumb |
| 743 | 744 | ||
| 744 | xw = &xwidgets[id]; | 745 | xw = &xwidgets[id]; |
| 746 | xw->id=id; | ||
| 745 | value = xwidget_spec_value (spec, QCtype, &found); | 747 | value = xwidget_spec_value (spec, QCtype, &found); |
| 746 | xw->type = INTEGERP (value) ? XFASTINT (value) : 1; //default to button | 748 | xw->type = INTEGERP (value) ? XFASTINT (value) : 1; //default to button |
| 747 | value = xwidget_spec_value (spec, Qtitle, &found2); | 749 | value = xwidget_spec_value (spec, Qtitle, &found2); |
| @@ -802,8 +804,6 @@ xwidget_touched (struct xwidget_view *xw) | |||
| 802 | void | 804 | void |
| 803 | xwidget_end_redisplay (struct glyph_matrix *matrix) | 805 | xwidget_end_redisplay (struct glyph_matrix *matrix) |
| 804 | { | 806 | { |
| 805 | //return; //until I convert this to MVC | ||
| 806 | |||
| 807 | 807 | ||
| 808 | int i; | 808 | int i; |
| 809 | struct xwidget *xw; | 809 | struct xwidget *xw; |
| @@ -863,8 +863,9 @@ xwidget_end_redisplay (struct glyph_matrix *matrix) | |||
| 863 | for (i = 0; i < MAX_XWIDGETS; i++) | 863 | for (i = 0; i < MAX_XWIDGETS; i++) |
| 864 | { | 864 | { |
| 865 | struct xwidget_view* xv = &xwidget_views[i]; | 865 | struct xwidget_view* xv = &xwidget_views[i]; |
| 866 | 866 | ||
| 867 | if (xv->initialized && ( xv->w == (XWINDOW(FRAME_SELECTED_WINDOW (SELECTED_FRAME()))))) | 867 | //"touched" is only meaningful for the "live" window, so disregard other views |
| 868 | if (xv->initialized && ( xv->w == (XWINDOW(FRAME_SELECTED_WINDOW (SELECTED_FRAME()))))) | ||
| 868 | { | 869 | { |
| 869 | if (xwidget_touched(xv)) | 870 | if (xwidget_touched(xv)) |
| 870 | xwidget_show_view (xv); | 871 | xwidget_show_view (xv); |