mirror of
https://github.com/vsariola/sointu.git
synced 2025-06-04 01:28:45 -04:00
feat(tracker): remove axis from NumericUpDown, allow dragging either Y or X
This commit is contained in:
parent
98c8d18a3e
commit
c667ffb4e1
@ -29,7 +29,6 @@ var defaultNumericDownIcon *widget.Icon
|
|||||||
|
|
||||||
type NumberInput struct {
|
type NumberInput struct {
|
||||||
Value int
|
Value int
|
||||||
drag gesture.Drag
|
|
||||||
dragStartValue int
|
dragStartValue int
|
||||||
dragStartXY float32
|
dragStartXY float32
|
||||||
clickDecrease gesture.Click
|
clickDecrease gesture.Click
|
||||||
@ -40,7 +39,6 @@ type NumericUpDownStyle struct {
|
|||||||
NumberInput *NumberInput
|
NumberInput *NumberInput
|
||||||
Min int
|
Min int
|
||||||
Max int
|
Max int
|
||||||
Axis layout.Axis
|
|
||||||
Color color.RGBA
|
Color color.RGBA
|
||||||
Font text.Font
|
Font text.Font
|
||||||
TextSize unit.Value
|
TextSize unit.Value
|
||||||
@ -63,7 +61,6 @@ func NumericUpDown(th *material.Theme, number *NumberInput, min, max int) Numeri
|
|||||||
NumberInput: number,
|
NumberInput: number,
|
||||||
Min: min,
|
Min: min,
|
||||||
Max: max,
|
Max: max,
|
||||||
Axis: layout.Horizontal,
|
|
||||||
Color: white,
|
Color: white,
|
||||||
BorderColor: th.Color.Primary,
|
BorderColor: th.Color.Primary,
|
||||||
IconColor: th.Color.InvText,
|
IconColor: th.Color.InvText,
|
||||||
@ -152,25 +149,18 @@ func (s NumericUpDownStyle) layoutText(gtx C) D {
|
|||||||
func (s NumericUpDownStyle) layoutDrag(gtx layout.Context) layout.Dimensions {
|
func (s NumericUpDownStyle) layoutDrag(gtx layout.Context) layout.Dimensions {
|
||||||
{ // handle dragging
|
{ // handle dragging
|
||||||
pxPerStep := float32(gtx.Px(s.UnitsPerStep))
|
pxPerStep := float32(gtx.Px(s.UnitsPerStep))
|
||||||
for _, e := range s.NumberInput.drag.Events(gtx.Metric, gtx, gesture.Axis(s.Axis)) {
|
for _, ev := range gtx.Events(s.NumberInput) {
|
||||||
switch e.Type {
|
if e, ok := ev.(pointer.Event); ok {
|
||||||
case pointer.Press:
|
switch e.Type {
|
||||||
s.NumberInput.dragStartValue = s.NumberInput.Value
|
case pointer.Press:
|
||||||
if s.Axis == layout.Horizontal {
|
s.NumberInput.dragStartValue = s.NumberInput.Value
|
||||||
s.NumberInput.dragStartXY = e.Position.X
|
s.NumberInput.dragStartXY = e.Position.X - e.Position.Y
|
||||||
} else {
|
|
||||||
s.NumberInput.dragStartXY = e.Position.Y
|
|
||||||
}
|
|
||||||
|
|
||||||
case pointer.Drag:
|
case pointer.Drag:
|
||||||
var deltaCoord float32
|
var deltaCoord float32
|
||||||
if s.Axis == layout.Horizontal {
|
deltaCoord = e.Position.X - e.Position.Y - s.NumberInput.dragStartXY
|
||||||
deltaCoord = e.Position.X - s.NumberInput.dragStartXY
|
s.NumberInput.Value = s.NumberInput.dragStartValue + int(deltaCoord/pxPerStep+0.5)
|
||||||
} else {
|
|
||||||
deltaCoord = e.Position.Y - s.NumberInput.dragStartXY
|
|
||||||
}
|
}
|
||||||
|
|
||||||
s.NumberInput.Value = s.NumberInput.dragStartValue + int(deltaCoord/pxPerStep+0.5)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -179,7 +169,10 @@ func (s NumericUpDownStyle) layoutDrag(gtx layout.Context) layout.Dimensions {
|
|||||||
// register for input
|
// register for input
|
||||||
dragRect := image.Rect(0, 0, gtx.Constraints.Min.X, gtx.Constraints.Min.Y)
|
dragRect := image.Rect(0, 0, gtx.Constraints.Min.X, gtx.Constraints.Min.Y)
|
||||||
pointer.Rect(dragRect).Add(gtx.Ops)
|
pointer.Rect(dragRect).Add(gtx.Ops)
|
||||||
s.NumberInput.drag.Add(gtx.Ops)
|
pointer.InputOp{
|
||||||
|
Tag: s.NumberInput,
|
||||||
|
Types: pointer.Press | pointer.Drag | pointer.Release,
|
||||||
|
}.Add(gtx.Ops)
|
||||||
stack.Pop()
|
stack.Pop()
|
||||||
}
|
}
|
||||||
return layout.Dimensions{Size: gtx.Constraints.Min}
|
return layout.Dimensions{Size: gtx.Constraints.Min}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user