focused?
multiple-selection? ;
+M: table output-model selection>> ;
+
<PRIVATE
- : push-selected-index ( table n -- table ) swap
- [ insert-sorted prune >array ] change-selected-indices ;
- : multiple>single ( values -- value/f ? ) [ f f ] [ first t ] if-empty ;
- : multiple>single* ( values -- value/f ) multiple>single drop ;
- : selected-index ( table -- n ) selected-indices>> multiple>single* ;
- : set-selected-index ( table n -- table ) 1array >>selected-indices ;
+ : add-selected-index ( table n -- table )
+ over selected-indices>> conjoin ;
+
+ : multiple>single ( values -- value/f ? )
+ dup assoc-empty? [ drop f f ] [ values first t ] if ;
+
+ : selected-index ( table -- n )
+ selected-indices>> multiple>single drop ;
+
+ : set-selected-index ( table n -- table )
+ dup associate >>selected-indices ;
+
PRIVATE>
- : selected ( table -- index/indices ) dup multiple-selection?>>
- [ selected-indices>> ] [ selected-index ] if ;
+
+ : selected ( table -- index/indices )
+ [ selected-indices>> ] [ multiple-selection?>> ] bi
+ [ multiple>single drop ] unless ;
: new-table ( rows renderer class -- table )
new-line-gadget