[Mono-list] Cross-platform GUI.

Dan Winship danw@novell.com
Wed, 28 Jul 2004 12:45:29 -0400


On Tue, 2004-07-27 at 19:23 -0400, Miguel de Icaza wrote:
> So that is why doing a Gtk+ backend to Coregraphics/AppearanceManager

(The Appearance Manager is a Mac OS Classic thing.)

> makes sense: to turn plenty of existing Gtk+ apps into apps that look
> and feel like the Mac ones.

You can make screenshots of Gtk apps look like Mac apps, but you're not
going to get them to feel like Mac apps.

Look at Mozilla. They allegedly have cross-platform widgets, but
Thunderbird and FireFox just suck on OS X. You see a pop-up menu that
looks mostly just like an OS X pop-up menu (except that it's too tall),
but when you click on it, instead of popping up a real menu, it pops up
a list box instead. And sure, it looks just like an OS X list box, but
that's not the point. Pop-up menus aren't supposed to look like list
boxes on OS X, but Mozilla's widgets don't abstract far enough away for
them to be able to do the right thing here. And Gtk has exactly the same
problem, except it's worse, because no one's even *trying* to make it
possible to have native look and feel.

If you want to have Gtk apps that look and feel like Mac apps, you need
to
     1. Port gtk to use Cocoa or Carbon directly, without going through
        gdk. Gdk doesn't get enough information to be able to tell for
        certain what widgets it should be drawing, and in some cases the
        way gtk wants to draw the widgets is explicitly wrong anyway.
        Things like GtkMenuBar and GtkToolbar need to be handled
        completely magically. 
     2. Make the widgets recognize when they're being used in ways that
        violate the Aqua HIG and automatically fix themselves. Eg:
              * Menu items should reorganize themselves into the correct
                menus, and fix their keyboard shortcuts
              * Dialogs should recognize when they need to be sheets
                rather than windows, and attach themselves to their
                parent windows if so.
              * Entries should recognize when they are being used for
                searching, and draw themselves with the rounded-corner
                "search field" widget rather than the normal text entry
                widget.
              * Functionality in right-click context menus should
                automatically replicate itself to toolbars, icons, etc,
                as appropriate to make sure that it remains conveniently
                accessible even for one-button-mouse users
              * Icons should redraw themselves in the Aqua color palette
                and drawing style.
              * etc
     3. Fix up libraries higher in the stack as well. Gnome-print needs
        to use the native printing infrastructure and dialogs, etc
     4. Forbid developers to use custom widgets,obviously, since there's
        obviously no way they could be made to integrate properly. A
        nice side effect of this is that there's no need to port most of
        gdk.

If you're not planning to do all of those things, then the resulting
apps might look superficially like Mac apps, but they will feel alien.

-- Dan