github.com/jmigpin/editor@v1.6.0/ui/rowseparator.go (about) 1 package ui 2 3 import ( 4 "image" 5 6 "github.com/jmigpin/editor/util/uiutil/event" 7 "github.com/jmigpin/editor/util/uiutil/widget" 8 ) 9 10 type RowSeparator struct { 11 *widget.Separator 12 row *Row 13 } 14 15 func NewRowSeparator(row *Row) *RowSeparator { 16 sep := widget.NewSeparator(row.ui, row.Col.Cols.Root.MultiLayer) 17 sep.Size.Y = separatorWidth 18 sep.Handle.Top = 3 19 sep.Handle.Bottom = 3 20 sep.Handle.Cursor = event.MoveCursor 21 22 rsep := &RowSeparator{Separator: sep, row: row} 23 rsep.SetThemePaletteNamePrefix("rowseparator_") 24 return rsep 25 } 26 func (sh *RowSeparator) OnInputEvent(ev0 interface{}, p image.Point) event.Handled { 27 switch ev := ev0.(type) { 28 case *event.MouseDragMove: 29 switch { 30 case ev.Buttons.Is(event.ButtonLeft): 31 p.Y += sh.Handle.DragPad.Y 32 sh.row.resizeWithMoveToPoint(&p) 33 } 34 case *event.MouseDown: 35 m := ev.Mods.ClearLocks() 36 if m.Is(event.ModNone) { 37 switch ev.Button { 38 case event.ButtonWheelUp: 39 sh.row.resizeWithPushJump(true, &p) 40 case event.ButtonWheelDown: 41 sh.row.resizeWithPushJump(false, &p) 42 } 43 } 44 case *event.MouseClick: 45 switch ev.Button { 46 case event.ButtonMiddle: 47 sh.row.Close() 48 } 49 } 50 return true //no other widget will get the event 51 }