Improve child frame X position calculation logic
This commit is contained in:
parent
7b0477697b
commit
bf7efd8903
@ -333,19 +333,27 @@ All functions are run with the eldoc child frame selected."
|
|||||||
|
|
||||||
(defun eldoc-frame--calc-frame-x-position (frame)
|
(defun eldoc-frame--calc-frame-x-position (frame)
|
||||||
"Calculate the appropriate X position (offset) for FRAME.
|
"Calculate the appropriate X position (offset) for FRAME.
|
||||||
|
|
||||||
If the selected window is on the right side of the selected frame and is too
|
If the selected window is on the right side of the selected frame and is too
|
||||||
small to overlay FRAME over, or if `point' is too close to the right edge of the
|
narrow to overlay FRAME over, or if FRAME would overlap with `point', return an
|
||||||
selected frame, return an X coordinate that will place FRAME on the left side of
|
X coordinate that will position FRAME on the left side of the selected frame.
|
||||||
the selected frame. Otherwise, return an X coordinate that will place FRAME on
|
|
||||||
the right side of the selected frame."
|
Otherwise, return an X coordinate that will position FRAME on the right
|
||||||
|
side of the selected frame."
|
||||||
(let ((offset-l (nth 0 eldoc-frame-offset))
|
(let ((offset-l (nth 0 eldoc-frame-offset))
|
||||||
|
(offset-y (nth 1 eldoc-frame-offset))
|
||||||
(offset-r (nth 2 eldoc-frame-offset))
|
(offset-r (nth 2 eldoc-frame-offset))
|
||||||
(window-left (nth 0 (window-absolute-pixel-edges)))
|
(window-left (nth 0 (window-absolute-pixel-edges)))
|
||||||
(min-containing-width (* (eval eldoc-frame-max-pixel-width) 2))
|
(point-abs-x (or (car (window-absolute-pixel-position)) 0))
|
||||||
(cursor-x-position (or (car (window-absolute-pixel-position)) 0)))
|
(point-abs-y (or (cdr (window-absolute-pixel-position)) 0))
|
||||||
(if (or (and (< (window-pixel-width) min-containing-width)
|
(min-containing-width (* (eval eldoc-frame-max-pixel-width) 2)))
|
||||||
|
(if (or (and (< (window-pixel-width) (+ min-containing-width offset-r))
|
||||||
(> window-left (* (frame-pixel-width) .40)))
|
(> window-left (* (frame-pixel-width) .40)))
|
||||||
(> cursor-x-position (* (frame-pixel-width) .70)))
|
(and (> point-abs-x (- (frame-pixel-width)
|
||||||
|
(frame-pixel-width frame)))
|
||||||
|
(< point-abs-y (+ (frame-pixel-height frame)
|
||||||
|
offset-y
|
||||||
|
(frame-char-height)))))
|
||||||
;; FRAME should be displayed on the left:
|
;; FRAME should be displayed on the left:
|
||||||
offset-l
|
offset-l
|
||||||
;; FRAME should be displayed on the right:
|
;; FRAME should be displayed on the right:
|
||||||
|
Loading…
Reference in New Issue
Block a user