@vattila wrote: In Owlet, I have made TImageList have proper shared-ownership semantics [...] the signature of the overload would be obvious: SetImageList(const TImageList&, TImageListType) Done in [r9243], with OWLMaker using it in [r9244]: TImageList: copies now share the handle, as in Owlet. An owned handle is destroyed when the last copy goes away. DeepCopy makes an independent duplicate, and IsHandleOwner and GetHandle are new. The rest of the API is unchanged. This step doesn't port Owlet's...
CHG: Build summary and error lists: The list view controls now share the ownership of their image lists. See [feature-requests:#171].
CHG: TImageList now shares the image list handle on copy, and TListViewCtrl can share the ownership of its image lists. See [feature-requests:#171].
@vattila wrote: But perhaps we should improve our code to just hand over ownership to TListViewCtrl instead. That may get rid of some presumably unnecessary members to manage life-time. Is there any reason not to? With the current API, it can't be done cleanly, for two reasons: TImageList can't give up its handle. It has no Release/Detach, and its destructor always calls ImageList_Destroy. To hand the list to the control, OWLMaker would have to duplicate it (ImageList_Duplicate) or build it without...
NEW: TButton stock images are scaled for the DPI of the button. See [feature-requests:#171].
NEW: FolderSize example: Made it Per-Monitor V2 DPI aware. See [feature-requests:#171].
NEW: FolderSize example: Added Auto-fit Layout option. See [feature-requests:#291].
CHG: FolderSize example: Added string table for Window menu.