On Thursday, 28 November 2013 at 13:30:53 UTC, Luís Marques wrote:
On Thursday, 28 November 2013 at 12:13:42 UTC, Chris wrote:
What I meant was no bindings to native widgets or other
toolkits. DWT (like SWT) uses the native widgets and needs an
interface. I was thinking of a toolkit where everything is
provided by D and done in D without any reference to native
frameworks (Cocoa etc.).
Whatever API / bindings you use, please don't expose non-native
UIs to users (drawn from scratch, either mimicking the native
UI or not). They never completely integrate with the OS, subtly
deviating from the native behaviour in ways that range from
awkward to infuriating, and are always playing catch-up to the
latest OS changes.
For instance, take Viber for the Mac: what could be a great
application (most of the complexity of a VoIP app isn't even in
the UI), has awkward behaviors (e.g., the scrolling panes don't
implement rubber banding, which makes them feel extremely
unresponsive in OS X), badly imitated controls (e.g., the chat
text box context menu, in OS X at least), etc. Features which
are both complex and subtle like internationalisation also tend
to break.
The situation was already bad when the Windows, Mac and Linux
interfaces were, overall, pretty similar (many of the
non-optimal design decisions in apps with non-native UIs tended
to appear where there were differences, such as in OS X global
menus vs Windows' per window menus). With the trend toward
newer and more diverse interface approaches, such as attempts
to try to bring traditional computers to touch screen hardware,
non-native UIs will tend to perform even worse, feeling even
more alien to the end users.
I don't know, but there are apps out there that do their own
thing rather than relying on the system. I think Chrome and Opera
are implemented like that. The thing is that people are getting
used to different UIs now, because they use e.g. an iPad, an
Android phone and a Windows PC (both privately and at work). So
maybe everything is going in the direction of common UI features.
Take for example multi-touch. Years ago Apple was way ahead
(zooming in and out, rotating pictures etc.). Now most touch
screen devices feature the same set of movements (e.g. scroll
with middle and ring finger on track pad).
Also, when writing bindings to native widgets, you're always
playing catch-up too. Once you've got your bindings, the native
toolkit has new methods, features and classes. I still think it
would be good to have an independent GUI toolkit, like Java Swing
/ FX as opposed to SWT.