aboutsummaryrefslogtreecommitdiff
path: root/module/vcomponent/base.scm
diff options
context:
space:
mode:
authorHugo Hörnquist <hugo@lysator.liu.se>2023-04-12 11:18:25 +0200
committerHugo Hörnquist <hugo@lysator.liu.se>2023-04-12 11:51:08 +0200
commit81fc535b2b8cb2a726c8514f2ae91e913ac157c7 (patch)
treed37e85a0f87f9a3464f5e57c4de1241d671faf1c /module/vcomponent/base.scm
parentUNFINISHED work on formats. (diff)
downloadcalp-81fc535b2b8cb2a726c8514f2ae91e913ac157c7.tar.gz
calp-81fc535b2b8cb2a726c8514f2ae91e913ac157c7.tar.xz
UNFINISHED work on data stores and formats.
Diffstat (limited to 'module/vcomponent/base.scm')
-rw-r--r--module/vcomponent/base.scm27
1 files changed, 15 insertions, 12 deletions
diff --git a/module/vcomponent/base.scm b/module/vcomponent/base.scm
index e4982336..472c5074 100644
--- a/module/vcomponent/base.scm
+++ b/module/vcomponent/base.scm
@@ -30,6 +30,7 @@
parameters
properties
+ copy-as-orphan
copy-vcomponent
x-property?
internal-field?
@@ -198,23 +199,25 @@
;; TODO deep-copy on parameters?
(get-vline-parameters vline)))
+(define (copy-as-orphan component)
+ (make-vcomponent%
+ (type component)
+ (children component)
+ ;; properties
+ (alist->hashq-table
+ (hash-map->list (lambda (key value)
+ (cons key (if (list? value)
+ (map copy-vline value)
+ (copy-vline value))))
+ (get-component-properties component)))))
+
+
(define (copy-vcomponent component)
- (let ((ev
- (make-vcomponent%
- (type component)
- (children component)
- ;; properties
- (alist->hashq-table
- (hash-map->list (lambda (key value)
- (cons key (if (list? value)
- (map copy-vline value)
- (copy-vline value))))
- (get-component-properties component))))))
+ (let ((ev (copy-as-orphan component)))
(when (parent component)
(reparent! (parent component) ev))
ev))
-
(define (extract field)
(lambda (e) (prop e field)))