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