use register-widget more, fewer arrow widget repaints

This commit is contained in:
Daniel Barlow 2025-05-29 21:13:19 +01:00
parent f64bfeb7fd
commit 2a86a2bfde

View File

@ -126,12 +126,11 @@ label.readout {
})))
(fn readout [name text]
(let [w
(register-widget
name
(doto (Gtk.Label {:label text : name})
(-> (: :get_style_context)
(: :add_class :readout)))]
(tset state-widgets name w)
w))
(: :add_class :readout)))))
(local knot-in-m-s
(/ 1852 ; metres in nautical mile
@ -157,6 +156,7 @@ label.readout {
:speed (widget:set_label
(string.format "%.1f km/h" (* app-state.speed 3.6)))
:osm (: (widget:get_window) :invalidate_rect nil)
:arrow (: (widget:get_window) :invalidate_rect nil)
:time (widget:set_label
(hhmmss (+ utc-offset app-state.time-of-day)))
)))
@ -174,8 +174,10 @@ label.readout {
(: :add (readout :speed "0"))))
(fn arrow []
(let [height 40
w (Gtk.Label {
(let [height 40]
(register-widget
:arrow
(Gtk.Label {
:halign Gtk.Align.CENTER
:valign Gtk.Align.CENTER
:width height :height height
@ -191,8 +193,7 @@ label.readout {
(g:line_to (- height 10) height)
(g:fill)
true)
})]
w))
}))))
(local socket-path (or (. arg 1) "/var/run/gnss-share.sock"))