diff options
author | Po Lu <luangruo@yahoo.com> | 2021-11-22 10:42:46 +0800 |
---|---|---|
committer | Po Lu <luangruo@yahoo.com> | 2021-11-22 10:47:29 +0800 |
commit | 9324efac480df3cd78af112da2b12a0d2bd18e02 (patch) | |
tree | df9a164eca57746fd357c296613062cec7b1f49b /lisp/xwidget.el | |
parent | 536e7bf03b2ef8451fdd6b8d62db08f2bc7ebec9 (diff) | |
download | emacs-9324efac480df3cd78af112da2b12a0d2bd18e02.tar.gz |
Make `xwidget-display-event' a special event as well
* doc/lispref/commands.texi (Xwidget Events): Document that
`xwidget-display-event' is a special event, and that it should
be handled through callbacks.
* etc/NEWS: Update NEWS entry.
* lisp/xwidget.el (xwidget-webkit-new-session)
(xwidget-webkit-import-widget): Attach display callback.
(xwidget-webkit-display-event): Call display callback instead.
(xwidget-webkit-display-callback): New function.
* src/keyboard.c (make_lispy_event): Store
source information for XWIDGET_DISPLAY_EVENT correctly.
* src/xwidget.c (store_xwidget_display_event): Store
source of the display request.
(webkit_ready_to_show): Store source if available.
(webkit_create_cb_1): Store source if available.
(kill_xwidget): Remove dead widget from internal_xwidget_list.
Diffstat (limited to 'lisp/xwidget.el')
-rw-r--r-- | lisp/xwidget.el | 17 |
1 files changed, 14 insertions, 3 deletions
diff --git a/lisp/xwidget.el b/lisp/xwidget.el index 160da67cb21..cf4396fec2d 100644 --- a/lisp/xwidget.el +++ b/lisp/xwidget.el @@ -818,6 +818,7 @@ For example, use this to display an anchor." (xwidget-webkit-set-cookie-storage-file xw (expand-file-name xwidget-webkit-cookie-file))) (xwidget-put xw 'callback callback) + (xwidget-put xw 'display-callback #'xwidget-webkit-display-callback) (xwidget-webkit-mode) (xwidget-webkit-goto-uri (xwidget-webkit-last-session) url))) @@ -840,16 +841,26 @@ Return the buffer." (put-text-property (point-min) (point-max) 'display (list 'xwidget :xwidget xwidget))) (xwidget-put xwidget 'callback callback) + (xwidget-put xwidget 'display-callback + #'xwidget-webkit-display-callback) (set-xwidget-buffer xwidget buffer) (xwidget-webkit-mode)) buffer)) (defun xwidget-webkit-display-event (event) - "Import the xwidget inside EVENT and display it." + "Trigger display callback for EVENT." (interactive "e") - (display-buffer (xwidget-webkit-import-widget (nth 1 event)))) + (let ((xwidget (cadr event)) + (source (caddr event))) + (when (xwidget-get source 'display-callback) + (funcall (xwidget-get source 'display-callback) + xwidget source)))) -(global-set-key [xwidget-display-event] 'xwidget-webkit-display-event) +(defun xwidget-webkit-display-callback (xwidget _source) + "Import XWIDGET and display it." + (display-buffer (xwidget-webkit-import-widget xwidget))) + +(define-key special-event-map [xwidget-display-event] 'xwidget-webkit-display-event) (defun xwidget-webkit-goto-url (url) "Goto URL with xwidget webkit." |