TODO.md
February 19, 2018 ยท View on GitHub
-
make sure the last line of text layouts include leading
-
documentation notes:
- static binaries do not link system libraries, meaning apps still depend on shared GTK+, etc.
- ui*Buttons are NOT compatible with uiButton functions
-
more robust layout handling
- uiFormTie() for ensuring multiple uiForms have the same label area widths
- uiSizeGroup for size groups (GtkSizeGroup on GTK+, auto layout constraints on OS X; consider adding after 10.8 is gone)
-
windows: should the initial hwndInsertAfter be HWND_BOTTOM for what we want?
-
windows: document the rules for controls and containers
-
windows: document the minimum size change propagation system
-
provisions for controls that cannot be grown? especiailly for windows
-
LC_VERSION_MIN_MACOSX has the 10.11 SDK; see if we can knock it down to 10.8 too; OS version is fine
- apply the OS version stuff to the test program and examples too
- what about micro versions (10.8.x)? force 10.8.0?
-
go through ALL the objective-c objects we create and make sure we are using the proper ownership (alloc/init and new are owned by us, all class method constructors are autoreleased - thanks mikeash)
-
on OS X, edit shortcuts like command-C working require that the menu entries be defined, or so it seems, even for NSAlert
- other platforms?
-
make sure all OS X event handlers that use target-action set the action to NULL when the target is unset
-
provide a way to get the currently selected uiTab page? set?
-
make it so that the windows cntrols only register a resize if their new minimum size is larger than their current size to easen the effect of flicker
- it won't remove that outright, but it'll help
-
add an option to the test program to run page7b as an independent test in its own window
- same for page7c
-
http://blogs.msdn.com/b/oldnewthing/archive/2004/01/12/57833.aspx provide a DEF file on Windows
-
all ports: update state when adding a control to a parent
-
should uiWindowsSizing be computed against the window handle, not the parent?
-
DPI awareness on windows
ultimately:
-
MAYBE readd lifetime handling/destruction blocking
-
related? [12:25]
And the blue outline on those buttons [ALL clicked buttons on Windows 7] won't go away - I get this too
- not anymore
- I get this too
-
SWP_NOCOPYBITS to avoid button redraw issues on Windows when not in tab, but only when making resize faster
-
secondary side alignment control in uiBox
-
Windows: don't abort if a cleanup function fails?
-
32-bit Mac OS X support (requires lots of code changes)
- change the build system to be more receptive to arch changes
notes to self
-
explicitly document label position at top-left corner
-
explicitly document that if number of radio buttons >= 1 there will always be a selection
-
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 use InsertAt functions to insert at the first invalid index, even if the array is empty
-
note that uiTabInsertAt() does NOT change the current tab page (it may change its index if inserting before the current page)
-
note that the default action for uiWindowOnClosing() is to return 0 (keep the window open)
-
note that uiInitOptions should be initialized to zero
-
explicitly document that uiCheckboxSetChecked() and uiEntrySetText() do not fire uiCheckboxOnToggled() and uiEntryOnChanged(), respectively
-
note that if a menu is requested on systems with menubars on windows but no menus are defined, the result is a blank menubar, with whatever that means left up to the OS to decide
-
note that handling of multiple consecutive separators in menus, leading separators in menus, and trailing separators in menus are all OS-defined
-
note that uiDrawMatrixInvert() does not change the matrix if it fails
-
note that the use of strings that are not strictly valid UTF-8 results in undefined behavior
-
test RTL
- automate RTL
-
now that stock items are deprecated, I have to maintain translations of the Cancel, Open, and Save buttons on GTK+ myself (thanks baedert in irc.gimp.net/#gtk+)
- either that or keep using stock items
-
http://blogs.msdn.com/b/oldnewthing/archive/2014/02/26/10503148.aspx
-
build optimizations
-
use http://www.appveyor.com/ to do Windows build CI since people want CI
-
consider just having the windows backend in C++
- consider having it all in C++
don't forget LONGTERMs as well
notes
-
http://blogs.msdn.com/b/oldnewthing/archive/2004/03/29/101121.aspx on accelerators
-
group and tab should act as if they have no child if the child is hidden on windows
-
a way to do recursive main loops
- how do we handle 0 returns from non-recursive uiMainStep() calls that aren't the main loop? (event handlers, for instance)
-
should repeated calls to uiMainStep() after uiQuit() return 0 reliably? this will be needed for non-recursive loops
label shortcut keys
- remove whining from source code
[01:41:47]
FONT LOADING
[00:10:08]
-
Mouse ClickLock: do we need to do anything special? should we? https://msdn.microsoft.com/en-us/library/windows/desktop/ms724947(v=vs.85).aspx
-
consider a uiAnticipateDoubleClick() or uiDoubleClickTime() (for a uiQueueTimer()) or something: https://blogs.msdn.microsoft.com/oldnewthing/20041015-00/?p=37553
-
determine whether MSGF_USER is for and if it's correct for our uiArea message filter (if we have one)
-
source file encoding and MSVC compiler itself? https://stackoverflow.com/questions/20518040/how-can-i-get-the-directwrite-padwrite-sample-to-work
- also need to worry about object file and output encoding...
- this also names the author of the padwrite sample
-
OpenType features TODOs
- https://stackoverflow.com/questions/32545675/what-are-the-default-typography-settings-used-by-idwritetextlayout
- feature/shaping interaction rules for arabic: https://www.microsoft.com/typography/OpenTypeDev/arabic/intro.htm
- other stuff, mostly about UIs and what users expect to be able to set
-
add NXCOMPAT (DEP awareness) to the Windows builds
- and ASLR too? or is that not a linker setting
OS X: embedding an Info.plist into a binary directly https://www.objc.io/issues/6-build-tools/mach-o-executables/ TODO will this let Dictation work? TODO investigate ad-hoc codesigning
https://blogs.msdn.microsoft.com/oldnewthing/20040112-00/?p=41083 def files for decoration (I forget if I said this earlier)
TODO ClipCursor() stuff; probably not useful for libui but still https://blogs.msdn.microsoft.com/oldnewthing/20140102-00/?p=2183 https://blogs.msdn.microsoft.com/oldnewthing/20061117-03/?p=28973 https://msdn.microsoft.com/en-us/library/windows/desktop/ms648383(v=vs.85).aspx
https://cmake.org/Wiki/CMake_Useful_Variables set(CMAKE_SHARED_LINKER_FLAGS "-Wl,--no-undefined") On Unix systems, this will make linker report any unresolved symbols from object files (which is quite typical when you compile many targets in CMake projects, but do not bother with linking target dependencies in proper order). (I used to have something like this back when I used makefiles; did it convert in? I forget)
look into these for the os x port https://developer.apple.com/documentation/appkit/view_management/nseditor?language=objc https://developer.apple.com/documentation/appkit/view_management/nseditorregistration?language=objc
for future versions of the os x port https://developer.apple.com/documentation/appkit/nslayoutguide?language=objc and anchors https://developer.apple.com/documentation/appkit/nsuserinterfacecompression?language=objc https://developer.apple.com/documentation/appkit/nsuserinterfacecompressionoptions?language=objc though at some point we'll be able to use NSStackView and NSGridView directly, so...
Cocoa PDFs https://developer.apple.com/documentation/appkit/nspdfimagerep?language=objc https://developer.apple.com/documentation/coregraphics?language=objc https://developer.apple.com/library/content/documentation/Cocoa/Conceptual/Printing/osxp_pagination/osxp_pagination.html#//apple_ref/doc/uid/20001051-119037 https://developer.apple.com/documentation/appkit/nsprintoperation/1529269-pdfoperationwithview?language=objc https://developer.apple.com/library/content/documentation/Cocoa/Conceptual/Printing/osxp_printapps/osxp_printapps.html#//apple_ref/doc/uid/20000861-BAJBFGED https://developer.apple.com/library/content/documentation/Cocoa/Conceptual/Printing/osxp_printingapi/osxp_printingapi.html#//apple_ref/doc/uid/10000083i-CH2-SW2 https://developer.apple.com/library/content/documentation/Cocoa/Conceptual/Printing/osxp_printinfo/osxp_printinfo.html#//apple_ref/doc/uid/20000864-BAJBFGED https://developer.apple.com/library/content/documentation/Cocoa/Conceptual/Printing/osxp_printlayoutpanel/osxp_printlayoutpanel.html#//apple_ref/doc/uid/20000863-BAJBFGED https://developer.apple.com/documentation/appkit/nspagelayout?language=objc https://developer.apple.com/documentation/appkit/nsprintinfo?language=objc https://developer.apple.com/documentation/applicationservices/core_printing?language=objc https://developer.apple.com/documentation/applicationservices/1463247-pmcreatesession?language=objc https://developer.apple.com/documentation/applicationservices/pmprintsession?language=objc https://developer.apple.com/documentation/applicationservices/1460101-pmsessionbegincgdocumentnodialog?language=objc https://developer.apple.com/documentation/applicationservices/1463416-pmsessionbeginpagenodialog?language=objc https://developer.apple.com/documentation/applicationservices/1506831-anonymous/kpmdestinationprocesspdf?language=objc https://developer.apple.com/documentation/applicationservices/1461960-pmcreategenericprinter?language=objc https://developer.apple.com/documentation/applicationservices/1460101-pmsessionbegincgdocumentnodialog?language=objc https://developer.apple.com/documentation/applicationservices/1464527-pmsessionenddocumentnodialog?language=objc https://developer.apple.com/documentation/applicationservices/1461952-pmsessiongetcggraphicscontext?language=objc https://developer.apple.com/library/content/technotes/tn2248/_index.html https://developer.apple.com/library/content/samplecode/PMPrinterPrintWithFile/Introduction/Intro.html https://developer.apple.com/library/content/documentation/Cocoa/Conceptual/Printing/osxp_aboutprinting/osxp_aboutprt.html
- run os x code with
OBJC_DEBUG_MISSING_POOLS=YESand otherOBJC_HELP=YESoptions- turn off the autorelease pool to make sure we're not autoreleasing improperly
TODO investigate -Weverything in clang alongside -Wall in MSVC (and in gcc too maybe...)
mac os x accessibility
- https://developer.apple.com/documentation/appkit/nsworkspace/1524656-accessibilitydisplayshoulddiffer?language=objc
- https://developer.apple.com/documentation/appkit/nsworkspace/1526290-accessibilitydisplayshouldincrea?language=objc
- https://developer.apple.com/documentation/appkit/nsworkspace/1533006-accessibilitydisplayshouldreduce?language=objc
uiEntry disabling bugs http://www.cocoabuilder.com/archive/cocoa/215525-nstextfield-bug-can-be.html uiMultilineEntry disabling https://developer.apple.com/library/content/qa/qa1461/_index.html
more TODOs:
- make no guarantee about buildability of feature branches