ui.gadgets.tables: clean up selected row rendering, add single-click mode
parent
3391dc5935
commit
3ac409e432
|
@ -20,7 +20,7 @@ M: object row-value drop ;
|
|||
M: object row-color 2drop f ;
|
||||
|
||||
TUPLE: table < gadget
|
||||
renderer filled-column column-alignment action hook
|
||||
renderer filled-column column-alignment action single-click? hook
|
||||
column-widths total-width
|
||||
font selection-color focus-border-color
|
||||
mouse-color column-line-color selection-required?
|
||||
|
@ -84,21 +84,26 @@ M: table layout*
|
|||
[ [ row-rect rect-bounds ] dip gl-color ] dip
|
||||
'[ _ @ ] with-translation ; inline
|
||||
|
||||
: draw-selected-row ( table row -- )
|
||||
over selection-color>> [ gl-fill-rect ] highlight-row ;
|
||||
: draw-selected-row ( table -- )
|
||||
{
|
||||
{ [ dup selected-index>> not ] [ drop ] }
|
||||
[
|
||||
[ ] [ selected-index>> ] [ selection-color>> ] tri
|
||||
[ gl-fill-rect ] highlight-row
|
||||
]
|
||||
} cond ;
|
||||
|
||||
: draw-focused-row ( table row -- )
|
||||
over focused?>> [
|
||||
over focus-border-color>> [ gl-rect ] highlight-row
|
||||
] [ 2drop ] if ;
|
||||
: draw-focused-row ( table -- )
|
||||
{
|
||||
{ [ dup focused?>> not ] [ drop ] }
|
||||
{ [ dup selected-index>> not ] [ drop ] }
|
||||
[
|
||||
[ ] [ selected-index>> ] [ focus-border-color>> ] tri
|
||||
[ gl-rect ] highlight-row
|
||||
]
|
||||
} cond ;
|
||||
|
||||
: draw-selected ( table -- )
|
||||
dup selected-index>> dup
|
||||
[ [ draw-selected-row ] [ draw-focused-row ] 2bi ]
|
||||
[ 2drop ]
|
||||
if ;
|
||||
|
||||
: draw-moused ( table -- )
|
||||
: draw-moused-row ( table -- )
|
||||
dup mouse-index>> dup [
|
||||
over mouse-color>> [ gl-rect ] highlight-row
|
||||
] [ 2drop ] if ;
|
||||
|
@ -149,10 +154,11 @@ M: table draw-gadget*
|
|||
dup control-value empty? [ drop ] [
|
||||
origin get [
|
||||
{
|
||||
[ draw-selected ]
|
||||
[ draw-selected-row ]
|
||||
[ draw-columns ]
|
||||
[ draw-lines ]
|
||||
[ draw-moused ]
|
||||
[ draw-focused-row ]
|
||||
[ draw-moused-row ]
|
||||
} cleave
|
||||
] with-translation
|
||||
] if ;
|
||||
|
@ -218,12 +224,15 @@ M: table model-changed
|
|||
PRIVATE>
|
||||
|
||||
: row-action ( table -- )
|
||||
dup selected-row [ swap action>> call ] [ 2drop ] if ;
|
||||
dup selected-row
|
||||
[ swap [ action>> call ] [ hook>> call ] bi ]
|
||||
[ 2drop ]
|
||||
if ;
|
||||
|
||||
<PRIVATE
|
||||
|
||||
: table-button-up ( table -- )
|
||||
hand-click# get 2 =
|
||||
dup single-click?>> hand-click# get 2 = or
|
||||
[ row-action ] [ update-selected-value ] if ;
|
||||
|
||||
: select-row ( table n -- )
|
||||
|
|
Loading…
Reference in New Issue