picoe / Eto

Cross platform GUI framework for desktop and mobile applications in .NET
Other
3.57k stars 325 forks source link

Add wait cursor to Eto.Forms.Cursors list #1826

Open aual1780 opened 3 years ago

aual1780 commented 3 years ago

Eto does not support a native wait cursor. Native support for Eto.Forms.Cursors.Wait would be a nice addition

For now, using a static cur file works as an alternative, but does not offer the native appearance

cwensley commented 3 years ago

I'd like this too. The reason it wasn't added initially was because it is not available on macOS. The "spinning rainbow wheel of death" on macOS is entirely automatic when an app is not responding on its UI thread.

According to Apple's HIG a wait cursor is bad UI design, which is why they do not provide it. 🙄

This being said, we could use a custom cursor on macOS for this purpose, or perhaps just keep the cursor as the default cursor on macOS only, which would follow its HIG but annoy developers when things aren't working as expected.

aual1780 commented 3 years ago

Thanks for the quick answer. I sorta figured it was some OS getting in the way of things.

Personally, I'd use the old Mac busy cursor. It's a static of a watch so it's easy to load as a custom resource. It's also old enough that you don't need to worry about subtle changes in the latest version.

bmuessig commented 3 years ago

@aual1780 The old wait cursor does not integrate well into current versions of macOS. If the beachball is somehow possible, it would be preferrable.

cwensley commented 3 years ago

I'd be inclined to just use the standard cursor on Mac (to follow its HIG), and give you guys a way to define your own cursor if you really need it. The beachball is not possible to be used (nor should it, it tells the user that the app is frozen).

Ideally, your UI would use a ProgressBar or Spinner to tell the user your app is doing something in the background. This is an acceptable (and usually welcome) way to show something is loading for all platforms.

aual1780 commented 3 years ago

ideally your UI would use a progress bar or spinner

Progress bars are not appropriate for many cases. Like when you attempt to send a web request and have to wait for some kind of response.

And a spinner is an option, yes, but that's exactly what the wait cursor is for (aside from Apple). It's an indication that some operation is pending and you can't do anything until it finishes