ui: a refused drop says so, and looks like a message rather than the status
The refusal was never silent -- `on_drop_channel()` has always set a notice -- but the
status bar renders `notice + " | " + glance` in one label, so "plot 1 already holds
four signals" arrived looking like part of the routine text a reader skims, which is the
"no clear user feedback" report. The probe's own reading showed it plainly: the label held
`plotting 'sine' on plot 1 | live · 4.44 kS/s · 2 s window`.
Three changes:
- While a notice is fresh the status label carries the stock `.warning` class, so a message
looks like a message and the class goes when the notice does. Every notice benefits, not
just this one.
- The refusal says what to *do*: "plot 1 holds four signals already: drop it on another
plot, or add a row with the layout editor (L)".
- The drop's inline notice now goes through `set_notice()`, the one setter, instead of
writing `app.notice` and its deadline by hand.
[drop-probe] reads the whole path, with the row filled first so the drop under test is the
refusal:
full row refused the drop: 0 (want 0)
refused feedback: notice='plot 1 holds four signals already: ...' warning=1
the status line, composed: warning=1 status='plot 1 holds four signals already: ... | live · 9.97 kS/s · 2 s window'
The label is read in the third line and not the second on purpose: the status line composes
the notice into itself on its own cadence, so a beat after the refusal it may still hold the
previous text -- which the first attempt at this reading mistook for the fix not working.
The row limit is not silent in the same way: the layout editor's `+` is insensitive at
`kMaxRows`, which is a control that says "no" by being unusable rather than a message.
This commit is contained in:
1 parent
d34b97158e
commit
aaf544be1e
5 files changed
+78
-3
No files matched your search
@@ -4009,10 +4009,16 @@ gboolean tick(gpointer user) {
|
||||
}
|
||||
if (glance.size() > app->glance_max_chars) app->glance_max_chars = glance.size();
|
||||
|
||||
// A notice is not the glance. It is prefixed onto the same line, which is exactly where a reader
|
||||
// skimming the routine text will not see it -- "there is no clear feedback" was that, with a refusal
|
||||
// ("plot 2 holds four signals already") looking like part of the status. The stock `.warning` class is
|
||||
// what makes a message look like a message, and it goes when the notice does.
|
||||
if (!app->notice.empty() && g_get_monotonic_time() < app->notice_until_us) {
|
||||
gtk_widget_add_css_class(app->status_label, "warning");
|
||||
const std::string with_notice = app->notice + " | " + glance;
|
||||
gtk_label_set_text(GTK_LABEL(app->status_label), with_notice.c_str());
|
||||
} else {
|
||||
gtk_widget_remove_css_class(app->status_label, "warning");
|
||||
app->notice.clear();
|
||||
gtk_label_set_text(GTK_LABEL(app->status_label), glance.c_str());
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user