Infrastructure for simple internal hyperlink handling

This commit is contained in:
Kovid Goyal
2024-05-04 13:44:09 +05:30
parent 9e688720a6
commit 51472e1e88
7 changed files with 217 additions and 20 deletions

View File

@@ -57,6 +57,7 @@ func main() (rc int, err error) {
if err != nil {
return 1, err
}
lp.MouseTrackingMode(loop.FULL_MOUSE_TRACKING)
h := &handler{lp: lp}
lp.OnInitialize = func() (string, error) {
lp.AllowLineWrapping(false)

View File

@@ -254,13 +254,15 @@ func (h *handler) finalize() {
func (h *handler) draw_screen() (err error) {
h.lp.StartAtomicUpdate()
defer h.mouse_state.UpdateHoveredIds()
defer h.mouse_state.ApplyHoverStyles(h.lp)
defer h.lp.EndAtomicUpdate()
h.lp.ClearScreen()
h.lp.AllowLineWrapping(false)
h.mouse_state.ClearCellRegions()
switch h.state {
case SCANNING_FAMILIES:
h.lp.Println("Scanning system for fonts, please wait...")
return nil
case LISTING_FAMILIES:
return h.draw_listing_screen()
}
@@ -281,7 +283,9 @@ func (h *handler) on_wakeup() (err error) {
}
func (h *handler) on_mouse_event(event *loop.MouseEvent) (err error) {
return h.mouse_state.UpdateState(event)
err = h.mouse_state.UpdateState(event)
h.mouse_state.ApplyHoverStyles(h.lp)
return
}
func (h *handler) on_key_event(event *loop.KeyEvent) (err error) {