Fix property merging when combining custom layers with built-in properties
Co-authored-by: Kinneyzhang <38454496+Kinneyzhang@users.noreply.github.com>
This commit is contained in:
parent
04feef0433
commit
9a65f85fe8
17
tp.el
17
tp.el
@ -1066,8 +1066,8 @@ Supports multiple calling conventions:
|
|||||||
(setq props (car props)))
|
(setq props (car props)))
|
||||||
;; Merge duplicate keys in the plist (for single-call property setting)
|
;; Merge duplicate keys in the plist (for single-call property setting)
|
||||||
;; This must happen before tp--resolve-props to properly handle face merging
|
;; This must happen before tp--resolve-props to properly handle face merging
|
||||||
;; Use (cddr props) for O(1) check instead of (> (length props) 2)
|
;; Use (cdddr props) for O(1) check - need at least 4 elements (2 key-value pairs) for possible duplicates
|
||||||
(when (and (listp props) (cddr props))
|
(when (and (listp props) (cdddr props))
|
||||||
(setq props (tp--merge-duplicate-keys props)))
|
(setq props (tp--merge-duplicate-keys props)))
|
||||||
;; Resolve props: handles layer/group names and anonymous reactive plists
|
;; Resolve props: handles layer/group names and anonymous reactive plists
|
||||||
(when props
|
(when props
|
||||||
@ -2868,8 +2868,8 @@ Returns the expanded plist."
|
|||||||
(setq result (append result (list key val)))))
|
(setq result (append result (list key val)))))
|
||||||
(setq remaining (cddr remaining))))
|
(setq remaining (cddr remaining))))
|
||||||
;; Merge duplicate keys in the expanded result
|
;; Merge duplicate keys in the expanded result
|
||||||
;; Use (cddr result) for O(1) check instead of (> (length result) 2)
|
;; Use (cdddr result) for O(1) check - need at least 4 elements (2 key-value pairs) for possible duplicates
|
||||||
(if (cddr result)
|
(if (cdddr result)
|
||||||
(tp--merge-duplicate-keys result)
|
(tp--merge-duplicate-keys result)
|
||||||
result)))
|
result)))
|
||||||
|
|
||||||
@ -2938,8 +2938,13 @@ For group names, includes `tp-layers' property with the full layer stack."
|
|||||||
;; Recursively resolve extra properties (they may also contain layer names)
|
;; Recursively resolve extra properties (they may also contain layer names)
|
||||||
(let ((expanded-props
|
(let ((expanded-props
|
||||||
(if (and layer-props extra-props)
|
(if (and layer-props extra-props)
|
||||||
(let ((resolved-extra (tp--expand-layer-in-plist extra-props)))
|
(let* ((resolved-extra (tp--expand-layer-in-plist extra-props))
|
||||||
(append layer-props resolved-extra))
|
(combined (append layer-props resolved-extra)))
|
||||||
|
;; Merge duplicate keys after combining layer props with extra props
|
||||||
|
;; Need at least 4 elements (2 key-value pairs) for possible duplicates
|
||||||
|
(if (cdddr combined)
|
||||||
|
(tp--merge-duplicate-keys combined)
|
||||||
|
combined))
|
||||||
layer-props)))
|
layer-props)))
|
||||||
;; After expansion, check for reactive symbols in the merged props
|
;; After expansion, check for reactive symbols in the merged props
|
||||||
;; (original props may contain $vars that need reactive tracking)
|
;; (original props may contain $vars that need reactive tracking)
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user