Native Form Widgets Getting Closer

I’ve been working hard on new native form widgets for Mac OS X. I am pretty far along and thing are looking great, but I’ve run up against some difficult layout problems that are going to take some more time to solve the right way. It is now clear to me why nobody wrote a kick-ass native form widgets implementation for Mac OS X before. It is really hard! The biggest problem so far is that theme support via Mozilla’s nsITheme API is not very good. Our layout code only implements support for nsITheme in the specific places where Windows and maybe GTK need it.

There are a bunch of other issues with form control vertical alignment and popup button rendering that are specific to Mac OS X and fixing those without hacks is going to be tricky, but I think taking the time to do this the right way is definitely the way to go. If we go with the hacks it is just going to cause more pain in the future, and we might never get around to undoing them. That is pretty much the story of Mozilla on Mac OS X up until now, and it is time to change that.

I’m a little burned out on native theme stuff for now, I think I’m going to take a short break and work on some other cocoa widget bugs.

Advertisements

4 thoughts on “Native Form Widgets Getting Closer

  1. But they already look much better :-). Despite the obvious and not-so-obvious little problems.
    And I’m with you on the dropmarker button. That thing needs a global make-over. An author can’t even style it properly -on any platform- if needed/wanted.

    I still run Camino with your first patch applied (I know I shouldn’t).

    Keep on the good work.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s