summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--corfu.el13
1 files changed, 8 insertions, 5 deletions
diff --git a/corfu.el b/corfu.el
index 6e3c5fd..7c75fcb 100644
--- a/corfu.el
+++ b/corfu.el
@@ -419,13 +419,16 @@ The completion backend can override this with
(set-window-buffer win buffer)
;; Mark window as dedicated to prevent frame reuse (#60)
(set-window-dedicated-p win t))
- ;; XXX HACK Make the frame invisible before moving the popup in order to avoid flicker.
- (unless (eq (cdr (frame-position corfu--frame)) y)
- (make-frame-invisible corfu--frame))
- (set-frame-position corfu--frame x y)
(set-frame-size corfu--frame width height t)
- (unless (frame-visible-p corfu--frame)
+ (if (frame-visible-p corfu--frame)
+ ;; XXX HACK Avoid flicker when frame is already visible.
+ ;; Redisplay, wait for resize and then move the frame.
+ (unless (equal (frame-position corfu--frame) (cons x y))
+ (redisplay)
+ (sleep-for 0.01)
+ (set-frame-position corfu--frame x y))
;; XXX HACK: Force redisplay, otherwise the popup sometimes does not display content.
+ (set-frame-position corfu--frame x y)
(redisplay)
(make-frame-visible corfu--frame))))