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

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

[elpa] externals/posframe 0567d06aae 2/2: Add posframe--calculate-new-po


From: ELPA Syncer
Subject: [elpa] externals/posframe 0567d06aae 2/2: Add posframe--calculate-new-position
Date: Wed, 14 Dec 2022 03:58:06 -0500 (EST)

branch: externals/posframe
commit 0567d06aae1d8d324a679455edbe06afcc7e1088
Author: Feng Shu <tumashu@163.com>
Commit: Feng Shu <tumashu@163.com>

    Add posframe--calculate-new-position
---
 posframe.el | 35 ++++++++++++++++++++---------------
 1 file changed, 20 insertions(+), 15 deletions(-)

diff --git a/posframe.el b/posframe.el
index fd81d92814..da06ae0861 100644
--- a/posframe.el
+++ b/posframe.el
@@ -830,23 +830,11 @@ of `posframe-show'."
     (setq posframe--last-poshandler-info info)
     (let* ((ref-position (plist-get info :ref-position))
            (poshandler (posframe--get-valid-poshandler info))
-           (position (funcall poshandler info))
-           (x (car position))
-           (y (cdr position)))
+           (position (funcall poshandler info)))
       (if (not ref-position)
           position
-        (let* ((parent-frame-width (plist-get info :parent-frame-width))
-               (parent-frame-height (plist-get info :parent-frame-height))
-               (posframe-width (plist-get info :posframe-width))
-               (posframe-height (plist-get info :posframe-height))
-               (ref-x (or (car ref-position) 0))
-               (ref-y (or (cdr ref-position) 0)))
-          (when (< x 0)
-            (setq x (- (+ x parent-frame-width) posframe-width)))
-          (when (< y 0)
-            (setq y (- (+ y parent-frame-height) posframe-height)))
-          (cons (+ ref-x x)
-                (+ ref-y y)))))))
+        (posframe--calculate-new-position
+         info position ref-position)))))
 
 (defun posframe--get-valid-poshandler (info)
   "Get valid poshandler function with the help of INFO."
@@ -860,6 +848,23 @@ of `posframe-show'."
                #'posframe-poshandler-absolute-x-y)
               (t (error "Posframe: have no valid poshandler"))))))
 
+(defun posframe--calculate-new-position (info position ref-position)
+  "Calcuate new position according to INFO, POSITION and REF-POSITION."
+  (let* ((parent-frame-width (plist-get info :parent-frame-width))
+         (parent-frame-height (plist-get info :parent-frame-height))
+         (posframe-width (plist-get info :posframe-width))
+         (posframe-height (plist-get info :posframe-height))
+         (ref-x (or (car ref-position) 0))
+         (ref-y (or (cdr ref-position) 0))
+         (x (car position))
+         (y (cdr position)))
+    (when (< x 0)
+      (setq x (- (+ x parent-frame-width) posframe-width)))
+    (when (< y 0)
+      (setq y (- (+ y parent-frame-height) posframe-height)))
+    (cons (+ ref-x x)
+          (+ ref-y y))))
+
 (defun posframe--set-frame-position (posframe position
                                               parent-frame-width
                                               parent-frame-height)



reply via email to

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