aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBasil L. Contovounesios2019-05-04 16:29:39 +0100
committerBasil L. Contovounesios2019-05-12 12:47:56 +0100
commit571d802df38cb1d3f93222f2977b766995616ac7 (patch)
treed32380deb818d4d7b6d90457d1a31977de60dbe3
parentbb60144d00fce90d7db1fdb5b67d6aa266e5010a (diff)
downloademacs-571d802df38cb1d3f93222f2977b766995616ac7.tar.gz
emacs-571d802df38cb1d3f93222f2977b766995616ac7.zip
Fix Gnus summary widget navigation across frames
* lisp/gnus/gnus-sum.el (gnus-summary-widget-forward) (gnus-summary-widget-backward): Signal more informative error if article window is not found. Consider other frames displaying article buffer, and raise its frame before navigating its widgets. (bug#35565) * lisp/gnus/gnus-win.el (gnus-get-buffer-window): Simplify and add docstring.
-rw-r--r--lisp/gnus/gnus-sum.el18
-rw-r--r--lisp/gnus/gnus-win.el19
2 files changed, 22 insertions, 15 deletions
diff --git a/lisp/gnus/gnus-sum.el b/lisp/gnus/gnus-sum.el
index b8aa302f11a..ac222acfd2d 100644
--- a/lisp/gnus/gnus-sum.el
+++ b/lisp/gnus/gnus-sum.el
@@ -9423,8 +9423,11 @@ With optional ARG, move across that many fields."
9423 (interactive "p") 9423 (interactive "p")
9424 (gnus-summary-select-article) 9424 (gnus-summary-select-article)
9425 (gnus-configure-windows 'article) 9425 (gnus-configure-windows 'article)
9426 (select-window (gnus-get-buffer-window gnus-article-buffer)) 9426 (let ((win (or (gnus-get-buffer-window gnus-article-buffer t)
9427 (widget-forward arg)) 9427 (error "No article window found"))))
9428 (select-window win)
9429 (select-frame-set-input-focus (window-frame win))
9430 (widget-forward arg)))
9428 9431
9429(defun gnus-summary-widget-backward (arg) 9432(defun gnus-summary-widget-backward (arg)
9430 "Move point to the previous field or button in the article. 9433 "Move point to the previous field or button in the article.
@@ -9432,10 +9435,13 @@ With optional ARG, move across that many fields."
9432 (interactive "p") 9435 (interactive "p")
9433 (gnus-summary-select-article) 9436 (gnus-summary-select-article)
9434 (gnus-configure-windows 'article) 9437 (gnus-configure-windows 'article)
9435 (select-window (gnus-get-buffer-window gnus-article-buffer)) 9438 (let ((win (or (gnus-get-buffer-window gnus-article-buffer t)
9436 (unless (widget-at (point)) 9439 (error "No article window found"))))
9437 (goto-char (point-max))) 9440 (select-window win)
9438 (widget-backward arg)) 9441 (select-frame-set-input-focus (window-frame win))
9442 (unless (widget-at (point))
9443 (goto-char (point-max)))
9444 (widget-backward arg)))
9439 9445
9440(defun gnus-summary-isearch-article (&optional regexp-p) 9446(defun gnus-summary-isearch-article (&optional regexp-p)
9441 "Do incremental search forward on the current article. 9447 "Do incremental search forward on the current article.
diff --git a/lisp/gnus/gnus-win.el b/lisp/gnus/gnus-win.el
index 5f7154c5456..a992fe731cb 100644
--- a/lisp/gnus/gnus-win.el
+++ b/lisp/gnus/gnus-win.el
@@ -28,6 +28,7 @@
28 28
29(require 'gnus) 29(require 'gnus)
30(require 'gnus-util) 30(require 'gnus-util)
31(require 'seq)
31 32
32(defgroup gnus-windows nil 33(defgroup gnus-windows nil
33 "Window configuration." 34 "Window configuration."
@@ -509,15 +510,15 @@ should have point."
509 (delq lowest-buf bufs))))) 510 (delq lowest-buf bufs)))))
510 511
511(defun gnus-get-buffer-window (buffer &optional frame) 512(defun gnus-get-buffer-window (buffer &optional frame)
512 (cond ((and (null gnus-use-frames-on-any-display) 513 "Return a window currently displaying BUFFER, or nil if none.
513 (memq frame '(t 0 visible))) 514Like `get-buffer-window', but respecting
514 (car 515`gnus-use-frames-on-any-display'."
515 (let ((frames (frames-on-display-list))) 516 (if (and (not gnus-use-frames-on-any-display)
516 (seq-remove (lambda (win) (not (memq (window-frame win) 517 (memq frame '(t 0 visible)))
517 frames))) 518 (let ((frames (frames-on-display-list)))
518 (get-buffer-window-list buffer nil frame))))) 519 (seq-find (lambda (win) (memq (window-frame win) frames))
519 (t 520 (get-buffer-window-list buffer nil frame)))
520 (get-buffer-window buffer frame)))) 521 (get-buffer-window buffer frame)))
521 522
522(provide 'gnus-win) 523(provide 'gnus-win)
523 524