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