[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/corfu 1acc028 1/4: corfu--make-frame: Apply frame/face
From: |
ELPA Syncer |
Subject: |
[elpa] externals/corfu 1acc028 1/4: corfu--make-frame: Apply frame/face settings only if changed (Fix #37) |
Date: |
Fri, 16 Jul 2021 18:57:08 -0400 (EDT) |
branch: externals/corfu
commit 1acc02809b204d38be2d72ac4ffa96a06ef0c45b
Author: Daniel Mendler <mail@daniel-mendler.de>
Commit: Daniel Mendler <mail@daniel-mendler.de>
corfu--make-frame: Apply frame/face settings only if changed (Fix #37)
---
corfu.el | 17 +++++++++++------
1 file changed, 11 insertions(+), 6 deletions(-)
diff --git a/corfu.el b/corfu.el
index ebb1d21..5abe8f6 100644
--- a/corfu.el
+++ b/corfu.el
@@ -319,12 +319,17 @@ filter string with spaces is allowed."
(internal-border-width
. ,(alist-get 'child-frame-border-width
corfu--frame-parameters))
,@corfu--frame-parameters))))
- (set-face-background
- (if (facep 'child-frame-border) 'child-frame-border 'internal-border)
- (face-attribute 'corfu-border :background) corfu--frame)
- (set-frame-parameter
- corfu--frame 'background-color
- (face-attribute 'corfu-background :background))
+ ;;; Setting the same frame-parameter/face-background is not a nop (bug?).
+ ;;; Check explicitly before applying the setting.
+ (let* ((curr (frame-parameter corfu--frame 'background-color))
+ (new (face-attribute 'corfu-background :background)))
+ (unless (equal curr new)
+ (set-frame-parameter corfu--frame 'background-color new)))
+ (let* ((face (if (facep 'child-frame-border) 'child-frame-border
'internal-border))
+ (curr (face-attribute face :background corfu--frame))
+ (new (face-attribute 'corfu-border :background)))
+ (unless (equal curr new)
+ (set-face-background face new corfu--frame)))
(set-window-buffer (frame-root-window corfu--frame) buffer)
;; XXX HACK Make the frame invisible before moving the popup from above to
below the line in
;; order to avoid flicker.