Fix some minor UI bugs
parent
cbb50fb2b9
commit
3137d12f12
|
@ -30,6 +30,9 @@ M: line-gadget line-height font>> font-metrics height>> ceiling ;
|
|||
: validate-line ( m gadget -- n )
|
||||
control-value [ drop f ] [ length 1- min 0 max ] if-empty ;
|
||||
|
||||
: valid-line? ( n gadget -- ? )
|
||||
control-value length 1- 0 swap between? ;
|
||||
|
||||
: visible-line ( gadget quot -- n )
|
||||
'[
|
||||
[ clip get @ origin get [ second ] bi@ - ] dip
|
||||
|
|
|
@ -58,6 +58,7 @@ M: viewport pref-dim* gadget-child pref-viewport-dim ;
|
|||
{
|
||||
[ scroller-value vneg offset-rect ]
|
||||
[ viewport>> dim>> rect-min ]
|
||||
[ viewport>> loc>> offset-rect ]
|
||||
[ viewport>> [ v- { 0 0 } vmin ] [ v- { 0 0 } vmax ] with-rect-extents v+ ]
|
||||
[ scroller-value v+ ]
|
||||
[ scroll ]
|
||||
|
|
|
@ -261,19 +261,20 @@ M: table model-changed
|
|||
row-rect [ { 0 1 } v* ] change-dim ;
|
||||
|
||||
: (select-row) ( table n -- )
|
||||
[ dup [ [ thin-row-rect ] [ drop ] 2bi scroll>rect ] [ 2drop ] if ]
|
||||
[ dup [ [ thin-row-rect dup unparse show ] [ drop ] 2bi scroll>rect ] [ 2drop ] if ]
|
||||
[ >>selected-index relayout-1 ]
|
||||
2bi ;
|
||||
|
||||
: mouse-row ( table -- n )
|
||||
[ hand-rel second ] keep y>line ;
|
||||
|
||||
: if-mouse-row ( table true: ( table mouse-index -- ) false: ( table -- ) -- )
|
||||
[ [ mouse-row ] keep 2dup valid-line? ]
|
||||
[ ] [ '[ nip @ ] ] tri* if ; inline
|
||||
|
||||
: table-button-down ( table -- )
|
||||
dup takes-focus?>> [ dup request-focus ] when
|
||||
dup control-value empty? [ drop ] [
|
||||
dup [ mouse-row ] keep validate-line
|
||||
[ >>mouse-index ] [ (select-row) ] bi
|
||||
] if ;
|
||||
[ swap [ >>mouse-index ] [ (select-row) ] bi ] [ drop ] if-mouse-row ;
|
||||
|
||||
PRIVATE>
|
||||
|
||||
|
@ -283,11 +284,14 @@ PRIVATE>
|
|||
[ 2drop ]
|
||||
if ;
|
||||
|
||||
: row-action? ( table -- ? )
|
||||
[ [ mouse-row ] keep valid-line? ]
|
||||
[ single-click?>> hand-click# get 2 = or ] bi and ;
|
||||
|
||||
<PRIVATE
|
||||
|
||||
: table-button-up ( table -- )
|
||||
dup single-click?>> hand-click# get 2 = or
|
||||
[ row-action ] [ update-selected-value ] if ;
|
||||
dup row-action? [ row-action ] [ update-selected-value ] if ;
|
||||
|
||||
: select-row ( table n -- )
|
||||
over validate-line
|
||||
|
@ -320,13 +324,6 @@ PRIVATE>
|
|||
: next-page ( table -- )
|
||||
1 prev/next-page ;
|
||||
|
||||
: valid-row? ( row table -- ? )
|
||||
control-value length 1- 0 swap between? ;
|
||||
|
||||
: if-mouse-row ( table true false -- )
|
||||
[ [ mouse-row ] keep 2dup valid-row? ]
|
||||
[ ] [ '[ nip @ ] ] tri* if ; inline
|
||||
|
||||
: show-mouse-help ( table -- )
|
||||
[
|
||||
swap
|
||||
|
|
Loading…
Reference in New Issue