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

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

[elpa] externals/corfu-doc 807af9fb2e 08/95: Fix #2: fix frame position


From: ELPA Syncer
Subject: [elpa] externals/corfu-doc 807af9fb2e 08/95: Fix #2: fix frame position calculation when there are multiple displays
Date: Tue, 19 Jul 2022 15:58:00 -0400 (EDT)

branch: externals/corfu-doc
commit 807af9fb2e728a48dbf660528f9d3b7ce8a31223
Author: Yuwei Tian <ibluefocus@outlook.com>
Commit: Yuwei Tian <ibluefocus@outlook.com>

    Fix #2: fix frame position calculation when there are multiple displays
---
 corfu-doc.el | 23 +++++++++++++----------
 1 file changed, 13 insertions(+), 10 deletions(-)

diff --git a/corfu-doc.el b/corfu-doc.el
index e742a1d369..27ee83f984 100644
--- a/corfu-doc.el
+++ b/corfu-doc.el
@@ -196,10 +196,10 @@
          (cf-frame-x (car cf-frame--pos))  ;; corfu--frame x pos
          (cf-frame-y (cdr cf-frame--pos))
          (cf-frame-width (frame-pixel-width corfu--frame))
-         (cf-parent-frame-pos  ;; corfu parent frame pos
+         (cf-parent-frame-x  ;; corfu parent frame x pos
            ;; Get inner frame left top edge for corfu frame's parent frame
            ;; See "(elisp) Frame Layout" in Emacs manual
-           (cl-subseq (frame-edges cf-parent-frame 'inner) 0 2))
+           (car (cl-subseq (frame-edges cf-parent-frame 'inner) 0 2)))
          (cf-parent-frame-width (frame-pixel-width cf-parent-frame))
          (cf-doc-frame-width
            ;; left border + left margin + inner width + right margin + 
right-border
@@ -209,21 +209,24 @@
               (alist-get 'right-fringe corfu-doc--frame-parameters 0)
               1))
          (cf-doc-frame-height (* (frame-char-height) corfu-doc-max-height))
-         (display-width
-           (nth 3 (assq 'geometry (car (display-monitor-attributes-list)))))
+         (display-geometry (assq 'geometry (frame-monitor-attributes 
corfu--frame)))
+         (display-width (nth 3 display-geometry))
+         (display-x (nth 1 display-geometry))
+         (cf-parent-frame-rel-x (- cf-parent-frame-x display-x))
          (display-space-right
            (- display-width (+ (+ cf-frame-x cf-frame-width space)
-                               (car cf-parent-frame-pos))))
-         (display-space-left (+ cf-frame-x (car cf-parent-frame-pos))))
+                               cf-parent-frame-rel-x)))
+         (display-space-left (- (+ cf-frame-x cf-parent-frame-rel-x)
+                                space)))
     (setq x (or
              (and (> cf-doc-frame-width display-space-right)
-                  (> display-space-left (+ cf-doc-frame-width space))
+                  (> display-space-left cf-doc-frame-width)
                   ;; space that right edge of the DOC-FRAME
                   ;; to the right edge of the parent frame
                   ;;   calculation:
-                  ;; (- (+ cf-frame-x (car cf-parent-frame-pos))
+                  ;; (- (+ cf-frame-x cf-parent-frame-x)
                   ;;    space
-                  ;;    (+ (car cf-parent-frame-pos) cf-parent-frame-width))
+                  ;;    (+ cf-parent-frame-x cf-parent-frame-width))
                   (- cf-frame-x space cf-parent-frame-width))
              (let* ((x-on-left-side-of-cp-frame
                       (- cf-frame-x space cf-doc-frame-width)))
@@ -231,7 +234,7 @@
                 ;; still positioned in completion frame's parent frame
                 (and (> x-on-left-side-of-cp-frame 0)
                      ;; and x point is visible in display
-                     (> (+ x-on-left-side-of-cp-frame (car 
cf-parent-frame-pos)) 0)
+                     (> (+ x-on-left-side-of-cp-frame cf-parent-frame-x) 0)
                      x-on-left-side-of-cp-frame)
                 (+ cf-frame-x cf-frame-width space))))
           y cf-frame-y)



reply via email to

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