From 926797d4859b0967b5e63e001709820ef132a529 Mon Sep 17 00:00:00 2001 From: Slava Pestov Date: Wed, 5 Aug 2009 22:56:08 -0500 Subject: [PATCH] ui.gadgets.tables: more fixes --- basis/ui/gadgets/tables/tables.factor | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/basis/ui/gadgets/tables/tables.factor b/basis/ui/gadgets/tables/tables.factor index eba646d08a..3856553b96 100644 --- a/basis/ui/gadgets/tables/tables.factor +++ b/basis/ui/gadgets/tables/tables.factor @@ -55,7 +55,7 @@ multiple-selection? ; over selected-indices>> conjoin ; : multiple>single ( values -- value/f ? ) - dup assoc-empty? [ drop f f ] [ keys first t ] if ; + dup assoc-empty? [ drop f f ] [ values first t ] if ; : selected-index ( table -- n ) selected-indices>> multiple>single drop ; @@ -262,12 +262,13 @@ M: table pref-dim* PRIVATE> -: (selected-rows) ( table -- {row} ) - [ selected-indices>> keys natural-sort ] keep - '[ _ nth-row [ 1array ] [ drop { } ] if ] map concat ; +: (selected-rows) ( table -- assoc ) + [ selected-indices>> ] keep + '[ _ nth-row drop ] assoc-map ; -: selected-rows ( table -- {value} ) - [ (selected-rows) ] [ renderer>> ] bi '[ _ row-value ] map ; +: selected-rows ( table -- assoc ) + [ selected-indices>> ] [ ] [ renderer>> ] tri + '[ _ nth-row drop _ row-value ] assoc-map ; : (selected-row) ( table -- value/f ? ) (selected-rows) multiple>single ; @@ -306,7 +307,7 @@ PRIVATE> : (update-selected-indices) ( table -- set ) [ selection>> value>> dup array? [ 1array ] unless ] keep - [ find-row-index ] curry map sift unique f like ; + [ find-row-index ] curry map sift unique f assoc-like ; : initial-selected-indices ( table -- set ) { @@ -315,7 +316,7 @@ PRIVATE> [ drop { 0 } unique ] } 1&& ; -: update-selected-indices ( table -- {n}/f ) +: update-selected-indices ( table -- set ) { [ (update-selected-indices) ] [ initial-selected-indices ] @@ -324,7 +325,7 @@ PRIVATE> M: table model-changed nip dup update-selected-indices { [ >>selected-indices f >>mouse-index drop ] - [ [ f ] [ first ] if-empty show-row-summary ] + [ multiple>single drop show-row-summary ] [ drop update-selected ] [ drop relayout ] } 2cleave ;