Start work on mouse handling in diff kitten

This commit is contained in:
Kovid Goyal 2023-03-27 17:06:56 +05:30
parent 6dfe823dfb
commit 840caf5fd5
No known key found for this signature in database
GPG Key ID: 06BC317B515ACE7C
2 changed files with 20 additions and 0 deletions

View File

@ -133,6 +133,7 @@ func main(_ *cli.Command, opts_ *Options, args []string) (rc int, err error) {
return 1, fmt.Errorf("%s does not exist", right) return 1, fmt.Errorf("%s does not exist", right)
} }
lp, err = loop.New() lp, err = loop.New()
loop.MouseTrackingMode(lp, loop.BUTTONS_AND_DRAG_MOUSE_TRACKING)
if err != nil { if err != nil {
return 1, err return 1, err
} }
@ -155,6 +156,7 @@ func main(_ *cli.Command, opts_ *Options, args []string) (rc int, err error) {
lp.OnResize = h.on_resize lp.OnResize = h.on_resize
lp.OnKeyEvent = h.on_key_event lp.OnKeyEvent = h.on_key_event
lp.OnText = h.on_text lp.OnText = h.on_text
lp.OnMouseEvent = h.on_mouse_event
err = lp.Run() err = lp.Run()
if err != nil { if err != nil {
return 1, err return 1, err

View File

@ -627,3 +627,21 @@ func (self *Handler) dispatch_action(name, args string) error {
} }
return nil return nil
} }
func (self *Handler) handle_wheel_event(up bool) {
if self.logical_lines != nil {
amt := 2
if up {
amt *= -1
}
self.dispatch_action(`scroll_by`, strconv.Itoa(amt))
}
}
func (self *Handler) on_mouse_event(ev *loop.MouseEvent) error {
if ev.Event_type == loop.MOUSE_PRESS && ev.Buttons&(loop.MOUSE_WHEEL_UP|loop.MOUSE_WHEEL_DOWN) != 0 {
self.handle_wheel_event(ev.Buttons&(loop.MOUSE_WHEEL_UP) != 0)
return nil
}
return nil
}