feat(cluster): hold the list still while it is being read, and stop truncating filters
Two things reported together, both about a list that fights back. The GRID froze nothing: every spot landed at the top and pushed the rest down, so a few rows in, the callsign under the pointer had moved by the time the click arrived. It now stops redrawing as soon as it is scrolled away from the top and says how many spots are waiting; reaching the top again, or clicking the notice, releases it. The arrivals are counted by finding the frozen top row in the live list rather than by comparing lengths — the list is a ring buffer, so once it is full a length comparison would report nothing new for the rest of the evening. The COMMAND BUTTONS were capped at 120 characters. A DXSpider filter naming the prefixes an operator wants runs well past that, and the field just stopped accepting keystrokes: the command was saved truncated with nothing to say why. 500 now, with the full text in the tooltip since the box cannot show it.
This commit is contained in:
@@ -4918,11 +4918,18 @@ export function SettingsModal({ onClose, onSaved, initialSection, onMainPaneChan
|
||||
maxLength={24}
|
||||
onChange={(e) => setMacro(i, { label: e.target.value })}
|
||||
/>
|
||||
{/* 500, not 120. A DXSpider filter is a list of prefixes and
|
||||
an operator's own list of wanted countries runs past a
|
||||
hundred characters easily — the field simply stopped
|
||||
accepting keystrokes, with nothing to say why, and the
|
||||
command was saved truncated. The title shows the whole
|
||||
thing, since the box cannot. */}
|
||||
<Input
|
||||
className="h-8 flex-1 min-w-0 font-mono text-xs"
|
||||
placeholder={t('clu.macroCmd')}
|
||||
value={m.cmd}
|
||||
maxLength={120}
|
||||
title={m.cmd}
|
||||
maxLength={500}
|
||||
onChange={(e) => setMacro(i, { cmd: e.target.value })}
|
||||
/>
|
||||
</div>
|
||||
|
||||
Reference in New Issue
Block a user