emacs-elpa-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[elpa] externals/popper 50568b8af2 090/102: popper.el: Fix child-frame r


From: ELPA Syncer
Subject: [elpa] externals/popper 50568b8af2 090/102: popper.el: Fix child-frame resetting popups
Date: Fri, 8 Sep 2023 15:58:56 -0400 (EDT)

branch: externals/popper
commit 50568b8af2ee4c43d4a5b55241fac7ef11e2f9db
Author: Karthik Chikmagalur <karthikchikmagalur@gmail.com>
Commit: Karthik Chikmagalur <karthikchikmagalur@gmail.com>

    popper.el: Fix child-frame resetting popups
    
    * popper.el (popper--update-popups): Because 
`window-configuration-change-hook'
    runs when a child-frame (such as corfu) is spawned, it resets the list of 
open
    popups to nil each time. `popper--update-popups' now checks if it's called 
on a
    child frame.
---
 popper.el | 59 ++++++++++++++++++++++++++++++-----------------------------
 1 file changed, 30 insertions(+), 29 deletions(-)

diff --git a/popper.el b/popper.el
index 5cb639d10f..2c97068b9d 100644
--- a/popper.el
+++ b/popper.el
@@ -354,36 +354,37 @@ Each element of the alist is a cons cell of the form 
(window . buffer)."
   "Update the list of currently open popups.
 
  Intended to be added to `window-configuration-change-hook'."
-  (let* ((open-buffers (mapcar #'window-buffer (window-list)))
-         (open-popups (popper--find-popups open-buffers))
-         (closed-popups (cl-remove-if-not
-                         (lambda (win-buf)
-                           (memq (buffer-local-value 'popper-popup-status (cdr 
win-buf))
-                                 '(popup user-popup)))
-                         (cl-set-difference popper-open-popup-alist 
open-popups :key #'cdr))))
-    (setq popper-open-popup-alist (nreverse open-popups))
-    ;; First remove all open popups that have been opened
-    (cl-loop for (_ . buf) in open-popups do
-             (let* ((group-name (when popper-group-function
-                                  (with-current-buffer buf (funcall 
popper-group-function))))
-                    (group-popups (cdr (assoc group-name 
popper-buried-popup-alist 'equal))))
-               (setf (alist-get group-name popper-buried-popup-alist
-                                nil nil 'equal)
-                     (cl-remove buf group-popups :key #'cdr))))
-    ;; Then add all popups that have been closed
-    (cl-loop for (win . buf) in closed-popups do
-             (let* ((group-name (when popper-group-function
-                                  (with-current-buffer buf (funcall 
popper-group-function))))
-                    (group-popups (cdr (assoc group-name 
popper-buried-popup-alist 'equal)))
-                    (newpop (cons win buf)))
-               (setf (alist-get group-name popper-buried-popup-alist
-                                nil nil 'equal)
-                     (append (list newpop)
-                             (cl-remove newpop group-popups :key 'cdr))))))
-  ;; Mode line update
-  (cl-loop for (_ . buf) in popper-open-popup-alist do
+  (unless (frame-parent)
+    (let* ((open-buffers (mapcar #'window-buffer (window-list nil 'no-mini)))
+           (open-popups (popper--find-popups open-buffers))
+           (closed-popups (cl-remove-if-not
+                           (lambda (win-buf)
+                             (memq (buffer-local-value 'popper-popup-status 
(cdr win-buf))
+                                   '(popup user-popup)))
+                           (cl-set-difference popper-open-popup-alist 
open-popups :key #'cdr))))
+      (setq popper-open-popup-alist open-popups)
+      ;; First remove all open popups that have been opened
+      (cl-loop for (_ . buf) in open-popups do
+               (let* ((group-name (when popper-group-function
+                                    (with-current-buffer buf (funcall 
popper-group-function))))
+                      (group-popups (cdr (assoc group-name 
popper-buried-popup-alist 'equal))))
+                 (setf (alist-get group-name popper-buried-popup-alist
+                                  nil nil 'equal)
+                       (cl-remove buf group-popups :key #'cdr))))
+      ;; Then add all popups that have been closed
+      (cl-loop for (win . buf) in closed-popups do
+               (let* ((group-name (when popper-group-function
+                                    (with-current-buffer buf (funcall 
popper-group-function))))
+                      (group-popups (cdr (assoc group-name 
popper-buried-popup-alist 'equal)))
+                      (newpop (cons win buf)))
+                 (setf (alist-get group-name popper-buried-popup-alist
+                                  nil nil 'equal)
+                       (append (list newpop)
+                               (cl-remove newpop group-popups :key 'cdr))))))
+    ;; Mode line update
+    (cl-loop for (_ . buf) in popper-open-popup-alist do
              (with-current-buffer buf
-               (setq mode-line-format (popper--modified-mode-line)))))
+               (setq mode-line-format (popper--modified-mode-line))))))
 
 (defun popper--find-buried-popups ()
   "Update the list of currently buried popups.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]