branch: externals/corfu
commit abe4a14d520c9545f82c38c65ab17fbaca84591f
Author: Yuwei Tian <[email protected]>
Commit: Daniel Mendler <[email protected]>
Add optional argument to hack redisplay when move the frame
---
corfu.el | 16 +++++++++++-----
1 file changed, 11 insertions(+), 5 deletions(-)
diff --git a/corfu.el b/corfu.el
index 0cb58762f9..9cf260a453 100644
--- a/corfu.el
+++ b/corfu.el
@@ -391,10 +391,14 @@ The completion backend can override this with
;; Function adapted from posframe.el by tumashu
(defvar x-gtk-resize-child-frames) ;; Not present on non-gtk builds
-(defun corfu--make-frame (frame params buffer x y width height)
+(defun corfu--make-frame (frame params buffer x y width height
+ &optional hack-redisplay-p)
"Make child frame from BUFFER and show it at X/Y with WIDTH/HEIGHT.
-PARAMS are frame parameters and FRAME is the existing frame."
+PARAMS are frame parameters and FRAME is the existing frame.
+
+If the optional argument HACK-REDISPLAY-P is non-nil,
+hack redisplay to avoid flicker."
(when corfu--frame-timer
(cancel-timer corfu--frame-timer)
(setq corfu--frame-timer nil))
@@ -450,8 +454,9 @@ PARAMS are frame parameters and FRAME is the existing
frame."
;; XXX HACK Avoid flicker when frame is already visible.
;; Redisplay, wait for resize and then move the frame.
(unless (equal (frame-position frame) (cons x y))
- (redisplay 'force)
- (sleep-for 0.01)
+ (when hack-redisplay-p
+ (redisplay 'force)
+ (sleep-for 0.01))
(set-frame-position frame x y))
;; XXX HACK: Force redisplay, otherwise the popup sometimes does not
;; display content.
@@ -504,7 +509,8 @@ A scroll bar is displayed from LO to LO+BAR."
lines "\n"))))
(setq corfu--frame
(corfu--make-frame corfu--frame corfu--frame-parameters buffer
- x y width height))))
+ x y width height
+ 'hack-redisplay))))
(defun corfu--hide-frame-deferred ()
"Deferred frame hiding."