Commit 27ad9b0
committed
fix(dashboard): mark every widget dirty on live tick
onLiveTick was only calling markDirty() when the widget carried a
Sensor or Tag property. That left stuck-on-first-render any widget
bound through another mechanism:
- StatusWidget / IconCardWidget with 'Threshold' = MonitorTag (no
Tag/Sensor), used throughout the demo
- MultiStatusWidget (uses a 'Sensors' cell array, not the scalar
Sensor / Tag base properties)
- ChipBarWidget (per-chip StatusFcn closures)
- Any widget driven by ValueFcn / DataFcn / StatusFcn
Those widgets rendered once with their first value and then stayed
frozen because:
Dirty flag is cleared to false at the end of every tick (line 1015).
The guarded markDirty on the next tick never re-fired for them.
So the 'if w.Dirty && ...' gate at line 967 was never satisfied.
Mark every widget dirty every tick; the widget-local refresh() still
decides whether anything actually needs redrawing. Trivial widgets
(text, divider, image) absorb the call as cheap no-ops.
Regression suite: 80/80 green (one run flaked on the known Octave
test_toolbar segfault; re-ran clean).1 parent d240bb8 commit 27ad9b0
1 file changed
Lines changed: 10 additions & 3 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
954 | 954 | | |
955 | 955 | | |
956 | 956 | | |
957 | | - | |
958 | | - | |
959 | | - | |
| 957 | + | |
| 958 | + | |
| 959 | + | |
| 960 | + | |
| 961 | + | |
| 962 | + | |
| 963 | + | |
| 964 | + | |
| 965 | + | |
| 966 | + | |
960 | 967 | | |
961 | 968 | | |
962 | 969 | | |
| |||
0 commit comments