libui/TODO.md

2.1 KiB

  • change all private names away from uiXxxx and uipXxxx
  • make it so Windows API calls that do logLastError(), etc. abort whatever they're doing and not try to continue, just like wintable
  • figure out what to cleanup in darwin terminate:
    • delegate
    • deleted objects view
  • 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
  • make sure all terminology is consistent
  • 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 differences between intmax_t and uintmax_t
  • 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?)

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

notes to self

  • explicitly document label position at top-left corner