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 )
|
: validate-line ( m gadget -- n )
|
||||||
control-value [ drop f ] [ length 1- min 0 max ] if-empty ;
|
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 )
|
: visible-line ( gadget quot -- n )
|
||||||
'[
|
'[
|
||||||
[ clip get @ origin get [ second ] bi@ - ] dip
|
[ 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 ]
|
[ scroller-value vneg offset-rect ]
|
||||||
[ viewport>> dim>> rect-min ]
|
[ viewport>> dim>> rect-min ]
|
||||||
|
[ viewport>> loc>> offset-rect ]
|
||||||
[ viewport>> [ v- { 0 0 } vmin ] [ v- { 0 0 } vmax ] with-rect-extents v+ ]
|
[ viewport>> [ v- { 0 0 } vmin ] [ v- { 0 0 } vmax ] with-rect-extents v+ ]
|
||||||
[ scroller-value v+ ]
|
[ scroller-value v+ ]
|
||||||
[ scroll ]
|
[ scroll ]
|
||||||
|
|
|
@ -261,19 +261,20 @@ M: table model-changed
|
||||||
row-rect [ { 0 1 } v* ] change-dim ;
|
row-rect [ { 0 1 } v* ] change-dim ;
|
||||||
|
|
||||||
: (select-row) ( table n -- )
|
: (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 ]
|
[ >>selected-index relayout-1 ]
|
||||||
2bi ;
|
2bi ;
|
||||||
|
|
||||||
: mouse-row ( table -- n )
|
: mouse-row ( table -- n )
|
||||||
[ hand-rel second ] keep y>line ;
|
[ 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 -- )
|
: table-button-down ( table -- )
|
||||||
dup takes-focus?>> [ dup request-focus ] when
|
dup takes-focus?>> [ dup request-focus ] when
|
||||||
dup control-value empty? [ drop ] [
|
[ swap [ >>mouse-index ] [ (select-row) ] bi ] [ drop ] if-mouse-row ;
|
||||||
dup [ mouse-row ] keep validate-line
|
|
||||||
[ >>mouse-index ] [ (select-row) ] bi
|
|
||||||
] if ;
|
|
||||||
|
|
||||||
PRIVATE>
|
PRIVATE>
|
||||||
|
|
||||||
|
@ -283,11 +284,14 @@ PRIVATE>
|
||||||
[ 2drop ]
|
[ 2drop ]
|
||||||
if ;
|
if ;
|
||||||
|
|
||||||
|
: row-action? ( table -- ? )
|
||||||
|
[ [ mouse-row ] keep valid-line? ]
|
||||||
|
[ single-click?>> hand-click# get 2 = or ] bi and ;
|
||||||
|
|
||||||
<PRIVATE
|
<PRIVATE
|
||||||
|
|
||||||
: table-button-up ( table -- )
|
: table-button-up ( table -- )
|
||||||
dup single-click?>> hand-click# get 2 = or
|
dup row-action? [ row-action ] [ update-selected-value ] if ;
|
||||||
[ row-action ] [ update-selected-value ] if ;
|
|
||||||
|
|
||||||
: select-row ( table n -- )
|
: select-row ( table n -- )
|
||||||
over validate-line
|
over validate-line
|
||||||
|
@ -320,13 +324,6 @@ PRIVATE>
|
||||||
: next-page ( table -- )
|
: next-page ( table -- )
|
||||||
1 prev/next-page ;
|
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 -- )
|
: show-mouse-help ( table -- )
|
||||||
[
|
[
|
||||||
swap
|
swap
|
||||||
|
|
Loading…
Reference in New Issue