summaryrefslogtreecommitdiff
path: root/lisp
diff options
context:
space:
mode:
authorPo Lu <luangruo@yahoo.com>2021-12-07 13:44:52 +0800
committerPo Lu <luangruo@yahoo.com>2021-12-07 13:44:52 +0800
commitbdcf3c3504566fd61c42b06ee41cae5c074c3c03 (patch)
treed0d719ef3a189263f3efa270e92c461261570ad7 /lisp
parente17aea73a5b2ae5f7cbf9057d7dad286be81ffc0 (diff)
downloademacs-bdcf3c3504566fd61c42b06ee41cae5c074c3c03.tar.gz
emacs-bdcf3c3504566fd61c42b06ee41cae5c074c3c03.tar.bz2
emacs-bdcf3c3504566fd61c42b06ee41cae5c074c3c03.zip
Cancel xwidget progress timer when buffer is killed
* lisp/xwidget.el (xwidget-webkit-buffer-kill): New function. (xwidget-webkit-mode): Add `xwidget-webkit-buffer-kill' to `kill-buffer-hook'. (bug#52344)
Diffstat (limited to 'lisp')
-rw-r--r--lisp/xwidget.el6
1 files changed, 6 insertions, 0 deletions
diff --git a/lisp/xwidget.el b/lisp/xwidget.el
index cf4396fec2d..ce9839ebd34 100644
--- a/lisp/xwidget.el
+++ b/lisp/xwidget.el
@@ -409,6 +409,11 @@ If N is omitted or nil, scroll backwards by one char."
(with-current-buffer (xwidget-buffer xwidget)
(force-mode-line-update)))
+(defun xwidget-webkit-buffer-kill ()
+ "Clean up an xwidget-webkit buffer before it is killed."
+ (when (timerp xwidget-webkit--progress-update-timer)
+ (cancel-timer xwidget-webkit--progress-update-timer)))
+
(defun xwidget-webkit-callback (xwidget xwidget-event-type)
"Callback for xwidgets.
XWIDGET instance, XWIDGET-EVENT-TYPE depends on the originating xwidget."
@@ -479,6 +484,7 @@ If non-nil, plugins are enabled. Otherwise, disabled."
(define-derived-mode xwidget-webkit-mode special-mode "xwidget-webkit"
"Xwidget webkit view mode."
(setq buffer-read-only t)
+ (add-hook 'kill-buffer-hook #'xwidget-webkit-buffer-kill)
(setq-local tool-bar-map xwidget-webkit-tool-bar-map)
(setq-local bookmark-make-record-function
#'xwidget-webkit-bookmark-make-record)