Workbench icon indicating copy to clipboard operation
Workbench copied to clipboard

Add hints / guards against silent or unclear failures

Open sonnyp opened this issue 3 years ago • 5 comments

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

sonnyp avatar Mar 11 '23 10:03 sonnyp

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 avatar Mar 12 '23 04:03 andyholmes

@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.

sonnyp avatar Mar 15 '23 18:03 sonnyp

Some crash hints were added in https://github.com/sonnyp/Workbench/pull/220

Maybe we can share the mechanism for this ticket.

sonnyp avatar Mar 15 '23 18:03 sonnyp

Blueprint issue about adding a linter https://gitlab.gnome.org/jwestman/blueprint-compiler/-/issues/124

sonnyp avatar Jul 31 '23 15:07 sonnyp

https://floss.social/@sonny/111114764808789906

sonnyp avatar Sep 23 '23 13:09 sonnyp