- 32-bit Mac OS X support (requires lots of code changes) - add a test for hidden controls when a window is shown - SWP_NOCOPYBITS (or was it WS_CLIPCHILDREN?) - buttons not in tab get drawover issues - buttons in tab without transparent drawing code get copied into the label when stack shown and rehidden - settle onDestroy/destroy naming - implement lifetiming on Windows - forbid free(NULL) to check for bugs - opposite side alignment control in uiBox - disabling containers on wine doesn't redraw children as disabled - test on real windows - collapse multiple consecutive menu separators? - including for quit/preferences/about? - or not even have separators there? - in which case, hide leading or trailing separators? - write an array.c for uiBox, uiGrid, and the Windows backend - it'd just be a clone of GArray from GLib - add the visibility stuff to the Windows makefile - figure out visibility on mac os x - hide command lines in the makefile - rename newcontrol.[cm] to control.[cm] or something else? - use _UI_EXPORT on OS-specific functions - make their headers generated by an IDL - make sure complain()s don't have \n at the end; add one on each platform - add a `[libui]` to the beginning of the message - figure out what to do on Windows and GTK+ if we don't have menus but the user wants a menubar (zero-height widget? don't bother? complain?) - bin.c - find a way to consolidate the duplicate code across OSs - find a way to move the has parent check at the beginning of binDestroy() - determine whether or not margins count in preferredSize() when there is no main control - menu item state change while the menu is visible (not in response to user action) - OS X: requires an [NSMenu update] call after changing state - Windows: requires getting current menu state when amending it in sync() - figure out where we should return HRESULTs - Windows: don't abort if a cleanup function fails? - should uiWindowOnClosing() really return an int? - if so, should the default return 0 instead of 1? - note that uiInitOptions should be initialized to zero - have a cbSize member - drop "Page" from uiTab method names? (uiTabAppendPage() -> uiTabAppend()) - override dock menu quit item to act like our app menu quit item - consider calling setAppleMenu: for the application menu; it doesn't seem to make much of a difference but - release OS X properties in dealloc - switch away from properties or figure out what incantation is necessary for 32-bit - figure out strong/weak vs assign/copy/retain - figure out what to do in OS X terminate: - clean up bin handling - is binSetOSParent() even needed? - readd the allocation tracking as just a list of pointers - add a final cleanup function (uiUninit() or uiCleanup()) - whenever a list of things is destroyed, each successive item must be removed as it is destroyed, otherwise we might wind up in a situation where we access items after they're freed - make the name of the variable to refer to a single tab page consistent (already decided to make them all `page`) - make sure uiEntryOnChanged() is not triggered when calling uiEntrySetText() - clean up windows resizing logic - make it so that only top-level window resizes trigger an update; container resizes do not update - windows resizing logic is simply not comprehensive enough (no null resizes allowed) to do things - we control resizes of all children so we can reliably update after a resize - we already need to do this in uiContainer :/ - make it so Windows API calls that do logLastError(), etc. abort whatever they're doing and not try to continue, just like wintable ultimately: - add some sort of runtime type checking - MAYBE readd lifetime handling/destruction blocking - figure out how to integrate leak checking into the source tree - assign control IDs on windows - GWL(P)_ID - related? [12:25] And the blue outline on those buttons [ALL clicked buttons on Windows 7] won't go away - I get this too notes to self - explicitly document label position at top-left corner - mark that uiControlShow() on a uiWindow() will bring to front and give keyboard focus because of OS X - make sure ShowWindow() is sufficient for zorder on Windows - document that you can't use InsertBefore functions to insert before a nonexistent index (that includes if an array is empty) - reconsider this, as the pointer array code does work with the first invalid index... - we would need to test everything else with it - note that uiTabInsertPageBefore() does NOT change the current tab page (it may change its index if inserting before the current page)