     [ [ + ] change-nth ] [ 3drop ] if ;
 
 M: table layout*
-    [ update-table-rows ]
-    [ update-cached-widths ]
-    [ update-filled-column ] tri ;
+    [ update-cached-widths ] [ update-filled-column ] bi ;
 
 : row-rect ( table row -- rect )
     [ [ line-height ] dip * 0 swap 2array ]


M: table model-changed
    nip
        dup update-selection
        dup update-mouse-index
    [ dup mouse-index>> show-row-summary ] [ relayout ] bi ;

    [ model>> value>> ] [ renderer>> ] bi
    '[ _ row-value? ] with find drop ;

: update-table-rows ( table -- )
    [
        [ control-value ] [ renderer>> ] bi
        '[ _ row-columns ] map
    ]
    [ rows<< ] bi ; inline

: update-selection ( table -- )
    [
        {
