Disabled MsgBox() on Windows for the time being; I'm going to restructure uitask to avoid needing to deal with channels and it's the only thing using uimsg now.
Converted the Windows backend to make uitask a function that runs the func() passed into it, rather than a channel that sends the function to another dispatcher. Windows lets us, since SendMessage() will switch threads if called form another thread. This gets rid of one goroutine and makes things cleaner. Mac OS X has the same optimization avaialble (performSelectorOnMainThread:); GTK+... doesn't seem to...
Converted the Mac OS X backend to use uitask() instead of uitask chan func().
Rolled back all those changes; I'm stupid.
Restored the previous new API. I'm going to change it so that events are callbacks rather than using a window handler, but other than that... yeah.
Made Window.Closing a callback closure.
Made Button.Clicked a callback.
Removed WindowHandler.
Made the default action for Window.Closing reject the close request.
Renamed init.go to uitask.go because that should have been done ages ago.
Restructured uitask to accept a limited range of actions. Implemented this on the Windows backend.
Converted the GTK+ backend to use the new uitask. Indeterminate progressbars no longer work; this will be fixed soon.
Fixed indeterminate progress bars on GTK+. This specific fix also avoids any future panics caused by Go and GTK+ racing by doing the pulsing all on GTK+.
Migrated the Mac OS X backend to the new uitask system.
Removed the gtk_main_quit() kludge from uitask_unix.go; this also removes our_idle_callback() and its associated stuff.
More TODOs.
Moved everything out of the way pending rewrite.
Added the new plan.
More updates to the new plan.
More planning and TODOs.