[haiku-development] Re: Stance on animations in the GUI

  • From: "Pascal Abresch" <dmarc-noreply@xxxxxxxxxxxxx> ("nep")
  • To: haiku-development@xxxxxxxxxxxxx
  • Date: Mon, 19 Sep 2022 19:46:51 +0200

pulkomandy@xxxxxxxxxxxxx wrote

These two are from BeOS and I see no reason to remove them. They are not just 
eyecandy, they are meant to show the app is busy doing something that takes a 
bit of time, but it is not completely 
frozen.

On other OSes you would notice an app is frozen because its window start 
glitching and not redrawing, but on BeOS/Haiku that doesn't happen if the 
window thread is still alive (as it should be 
for properly designed apps). So a little feedback is needed.

For WebPositive the intent is also to show some feedback. Since the code is 
very fast, if you enter a wrong password, the window will close and 
immediately reopen. It will look like nothing has 
happened. So we need a way to tell the user "yes, I got the message that you 
entered a password, but it was the wrong password".

I think since this code was written, we have added the MarkAsInvalid() call 
to BTextControl, which would allow to give this feedback without an 
animation. I don't know, would it be as efficient?

The MarkAsInvalid() function makes a big red border around the text control, I 
think this works nicely. IIRC I've used this in Renga already.
(For example Add a new buddy, click the button without entering anything and it 
will jump back to the first field with the focus and mark it as invalid)

Anyway, so that's my stance on animations: use them where they convey some 
meaning, not just to look "cool".

The HIG mentions animations in two places;

"As with any kind of movement in the display, use animation sparingly so that 
it is not distracting."

"Good software keep the lines of communication open. Good feedback just means 
making sure that the user knows what your program is doing at any given time, 
especially if the program is busy doing 
something which makes them wait. Web browsers animate a little icon while 
they download a web page. Users have a natural tendency to think that if 
nothing seems to be happening, then the program is 
probably frozen."

So that isn't as specific, but I think it goes in the same direction.

Thanks for the clarification, this sounds good indeed.

If the intended amount of animations is none to very few it may make sense 
to set the "prefers low motion" flag for webkit by default,
this is equivalent to enabeling "low motion" accesibillity settings on 
MacOS, iOS. For example the Apple site will stop doing this giant animated 
slideshow and be a normal scrollable site 
instead.

What are your thougts?

It looks like it is not what was meant by the people writing the 
specification (the values are "no preference" and "reduce", so if we make 
this opt-out instead of opt-in, we are not really 
following the idea).

We should at least have an option for it in WebPositive settings. I don't 
know if we can switch the default and how much it will confuse users if we 
reduce animations by default.

IIRC this is a bit easier to implement than the dark mode, I would have to 
check how much work it is.
I guess the question is wether using WebPositive on Haiku already counts as a 
preference for less motion content.

I would be fine with adding the option and defaulting to no preference however 
if that seems better to you.

Regards,
Pascal Abresch

Other related posts: