Add hints / guards against silent or unclear failures
Some things fail (or crash even) silently—we should add measures to inform users and possibly prevent the rendering.
https://floss.social/@sonny/109975391706946091
I discussed with James if this belongs in Blueprint or Workbench, no clear winner. Let's start/iterate in Workbench and possibly transfer to Blueprint later.
No child allowed
crash: no priority: high
Passing children to objects that don't accept any such as Label will not provide any feedback. It is confusing to beginners as the children don't get rendered but no explanation is given.
We should emit an error.
Label {
label: "Hello";
Button {
label: "World";
}
}
Single child allowed
crash: no priority: high
Some widgets like AdwStatusPage, Adw.Clamp, ScrolledWindow, ... allow only one child. It doesn't error but only the last child will be rendered. It's confusing and makes the user think they did something wrong.
OK
Adw.StatusPage {
Button {
label: "a";
}
}
KO
Adw.StatusPage {
Button {
label: "a";
}
Button {
label: "b";
}
}
Order of properties on Gtk.Adjustment
crash: no priority: medium
OK:
Scale one {
width-request: 130;
adjustment: Gtk.Adjustment {
lower: 0;
upper: 100;
value: 50;
};
}
KO:
Scale one {
width-request: 130;
adjustment: Gtk.Adjustment {
lower: 0;
value: 50;
upper: 100;
};
}
https://matrix.to/#/!aUhETchlgthwWVQzhi:matrix.org/$16780187509362SfqjZ:gnome.org?via=gnome.org&via=matrix.org&via=libera.chat
ToggleButton grouped to each others
Grouping ToggleButtons to each others will render fine but will cause Workbench to freeze when clicking on one of them.
crash: yes priority: low
KO
using Gtk 4.0;
using Adw 1;
Box {
halign: center;
valign: center;
orientation: horizontal;
ToggleButton button_first {
label: "Toggle On";
group: button_second;
}
ToggleButton button_second {
label: "Toggle Off";
group: button_first;
}
}
OK:
using Gtk 4.0;
using Adw 1;
Box {
halign: center;
valign: center;
orientation: horizontal;
ToggleButton button_first {
label: "Toggle On";
}
ToggleButton button_second {
label: "Toggle Off";
group: button_first;
}
}
icon not found
crash: no priority: low
https://matrix.to/#/!kDBZrVKCdhrVuWxbGe:matrix.org/$GI0tPROepvgJBYCqjapML5GqxIXxS6bHukuFrj9RttQ?via=gnome.org&via=matrix.org&via=catgirl.cloud
some references does'nt show up and are replaced by a corrupted icon which looks odd
If we detect an icon as not fund - we could show a hint to lookup the icon library in the menu
Order of properties on Gtk.Adjustment
This one may actually be higher up the stack. I've also seen this happen with action-name and action-target properties, where the action-target must be set first, otherwise setting the action-name complains if the GAction has a non-null parameter signature.
@andyholmes this thread explains why it behaves like that https://matrix.to/#/!aUhETchlgthwWVQzhi:matrix.org/$16780187509362SfqjZ:gnome.org?via=gnome.org&via=matrix.org&via=libera.chat
I personally think it's a huge pitfall that needs to be fixed at some point.
Until then, we can warn users.
Some crash hints were added in https://github.com/sonnyp/Workbench/pull/220
Maybe we can share the mechanism for this ticket.
Blueprint issue about adding a linter https://gitlab.gnome.org/jwestman/blueprint-compiler/-/issues/124
https://floss.social/@sonny/111114764808789906