]> gitweb.factorcode.org Git - factor.git/commitdiff
ui.gadgets.panes: fuse labels together with the same style
authorJohn Benediktsson <mrjbq7@gmail.com>
Mon, 1 Aug 2022 04:36:06 +0000 (21:36 -0700)
committerJohn Benediktsson <mrjbq7@gmail.com>
Mon, 1 Aug 2022 04:36:06 +0000 (21:36 -0700)
basis/ui/gadgets/panes/panes.factor

index b94a37438a30a03ae899cf58aa9f727688e12569..138e4e96704ced362ac4deb5e1e5014e8665d443 100644 (file)
@@ -357,8 +357,10 @@ M: pane-stream stream-write-table
 : pane-bl ( style gadget -- )
     swap " " <word-break-gadget> apply-character-style add-gadget drop ;
 
+TUPLE: styled-label < label style ;
+
 : <styled-label> ( style text -- gadget )
-    <label>
+    styled-label new-label over >>style
     apply-font-style
     apply-background-style
     apply-image-style
@@ -367,8 +369,17 @@ M: pane-stream stream-write-table
 
 M: styled-pane pane-label style>> "" <styled-label> ;
 
+: find-styled-label ( gadget -- styled-label/f )
+    dup styled-label? [
+        children>> ?last [ find-styled-label ] [ f ] if*
+    ] unless ;
+
 : pane-text ( string style gadget -- )
-    [ swap <styled-label> ] [ swap add-gadget drop ] bi* ;
+    dup find-styled-label [ pick over style>> = ] [ f f ] if* [
+        2nip [ prepend ] change-text drop
+    ] [
+        drop [ swap <styled-label> ] [ swap add-gadget drop ] bi*
+    ] if ;
 
 M: pack pane-line pane-text ;