[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)