diff options
| author | Daniel Mendler <mail@daniel-mendler.de> | 2022-01-19 23:43:20 +0100 |
|---|---|---|
| committer | Daniel Mendler <mail@daniel-mendler.de> | 2022-01-19 23:43:20 +0100 |
| commit | 2c876e7bf0590ec5cd8c22fc8965897ffab47e7c (patch) | |
| tree | 2d516b4221ef16aa35c6a9b025a82be113cf2bd7 | |
| parent | 299f8e8e964148c73e5ebe8a9480893bf7e7bbeb (diff) | |
Try a different frame resizing hack to reduce flicker
| -rw-r--r-- | corfu.el | 13 |
1 files changed, 8 insertions, 5 deletions
@@ -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)))) |
