== Dynamic Windows 3.1 == This is a stable release of Dynamic Windows version 3.1. The current Dynamic Windows source base is considered stable on: OS/2, Mac, Windows, Linux, FreeBSD and OpenSolaris. Changes from version 3.0: * Added support for MacOS versions through Big Sur 11.0, Windows versions through 10 build 20H2. * Fixed a handle leak on OS/2 when built with (Open)Watcom. * Added dark mode support on MacOS Mojave 10.14 and later. * Added experimental dark mode support on Windows 10 build 1809 (disabled by default). * Added embedding Microsoft Edge (Chromium) support on Windows 7 and higher. Requires Windows 8 or higher SDK to build and the nuget package from: https://www.nuget.org/packages/Microsoft.Web.WebView2 unzipped into .\packages\Microsoft.Web.WebView2 Install runtime: https://developer.microsoft.com/en-us/microsoft-edge/webview2/ Will prefer to use the runtime above, but will fallback to an installed browser. * Added notification APIs: dw_notification_new() dw_notification_send() dw_app_id_set() Requires Windows 8 or higher. MacOS 10.8 or higher. GLib 2.40 or higher on Unix. MacOS also requires the application bundle being signed or self-signed. Unix requires a desktop file link with the application ID used in dw_app_id_set(). Unzip WinToast from https://github.com/mohabouje/WinToast into .\packages\WinToast * Added webkit2gtk support and removed dead gtkmozembed and libgtkhtml2 support on Unix. * Added embedded HTML javascript support on Mac, Windows and Unix with webkit(2)gtk. Added function dw_html_javascript_run() to execute javascript code. Added DW_SIGNAL_HTML_RESULT signal for getting the results from javascript. DW_SIGNAL_HTML_RESULT requires webkit2gtk on Unix. * Added DW_SIGNAL_HTML_CHANGED signal handler for getting the status of embedded HTML. Status can be: DW_HTML_CHANGE_STARTED/REDIRECT/LOADING/COMPLETE * Fixed international calendar issues on Mac. * Added dw_mle_set_auto_complete() to enable completion, only available on Mac. * Changed to using GTK3 by default instead of GTK2. --with-gtk2 is now available. * Changed to using winsock2 on Windows ending support for Win95 and NT 3.5. * Changed to using Rich Edit for MLE controls on Windows. This can be disabled with: dw_feature_set(DW_FEATURE_MLE_RICH_EDIT, DW_FEATURE_DISABLED); * Added support for domain sockets on Windows 10 in the dwcompat sockpipe() macro. If compiled with Visual Studio 2017 or later, otherwise the old method is used. * Added dw_feature_set/get() to test if certain features are available on the current library and operating system combination at runtime or enabled/disable features. * Added support for GResource embedded images on GTK2/3 with GLib 2.32. The old resouce system is still available via configure --with-deprecated if needed. * Added support for NSView based Tree, Container and Listbox widgets on Mac 10.7+. * Removed DW_FCF_COMPOSITED support from Windows 8 and higher. This flag will still function to create a glass effect on Windows Vista and 7. The transparent key feature used to create it causes issues on 8 and 10, plus the glass effect, the main reason for the flag was removed in Windows 8. * Removed the incomplete Photon port. Changes from version 2.5: * Added package configuration (pkg-config) support on Unix. * Changed DW_CLR_DEFAULT behavior to improve consistency. * Added dw_signal_connect_data() which features a callback on signal disconnection. * Improvements for building on 64bit Windows with MinGW. Window styles, HTML and Toolbar widgets are now supported. * Added dw_shutdown() for use when shutting down Dynamic Windows but not quite ready to exit immediately. (Functions like dw_exit() without the exit()) * Separated the container "title" (string) and "data" (pointer) into separate spaces. The "classic" functions which take (char *) parameters now maintain their own string memory backing so you no longer need to keep the data available. * Removed dw_container_set_row_data() and dw_container_change_row_data() macros. * Added dw_container_set_row_data() and dw_container_change_row_data() functions. * Removed the "_dw_textcomp" container data flag, dw_container_cursor() and dw_container_delete_row() which take (char *) now function in text compare mode. * Added dw_container_cursor_by_data() and dw_container_delete_row_by_data() functions which do the same things except in pointer comparison mode. * Added DW_CR_RETDATA flag to dw_container_query_*() functions to return the data pointer instead of the string pointer, this may change in the future. * Added exported internal functions _dw_init_thread() and _dw_deinit_thread() for language bindings to setup/cleanup threads created for DW use. * Fixed some memory leaks. * WARNING: Changed how tree and container titles are returned, they are now duplicated and need to be freed with dw_free(). This affects the following functions: dw_tree_get_title(), dw_container_query_start() and dw_container_query_next() You should audit any code using these functions for leaks if using verison 3. Changes from version 2.4: * Added dw_window_set_focus() to focus a widget after the window is shown * Added DW_FCF_TEXTURED flag on Mac, which enables textured backgrounds which had been the default on Mac prior to 2.5. * Added keyboard support for non-entryfield controls on Mac. * Added tab support for notebook controls on Windows and OS/2 and in the process rewrote and optimized the existing tab code. * Added bitmap button support for dw_window_set_bitmap(). * Added full alpha channel support for bitmaps from file on GTK2. * Added support for handling Mac application menu Quit and dock Quit. Use DW_DESKTOP as window handle to dw_signal_connect(). * Improved transparency support for pixmaps/bitmaps from file on OS/2. * Fixed tab support for bitmap buttons which broke in 2.4 on Windows. * Fixed a notebook crash early in creation on Mac. * Fixed unusable scrollbars on Ubuntu Linux when overlay scrollbars are enabled. We now disable overlay scrollbars when creating. * Fixed dw_window_function() not working on non-toplevel windows on Windows and OS/2. * Fixed building 64bit with Visual C 2012 and MINGW gcc on Windows. Changes from version 2.3: * Added support for MacOS 10.8 Mountain Lion. * Added fullscreen support on Mac for resizable windows on Lion. * Added UNICODE build mode on Windows allowing UTF-8 encoded text. ANSI builds are supported by removing -DUNICODE -D_UNICODE and -DAEROGLASS * Added support for antialiased drawing on Windows via GDI+. * Added UNICODE build mode on OS/2 using codepage 1208 (UTF-8) as the active codepage; Non-Unicode mode will use the default codepage. * Added support for Control-Click on Mac for button press events. * Added DW_POINTER() macro for casting parameters to (void *). * Added dw_box_unpack() and dw_box_unpack_at_index() for removing items from boxes without destroying them. Also allows removal of padding. * Added GBM (Generalized Bitmap Module) support for OS/2 and eCS for loading Non-OS/2 native file formats. GBM comes with eCS 1.2 and later. It is also available at http://hobbes.nmsu.edu * Added resizing HICNs to 24x24 max size on platforms which do not do it automatically (Mac and GTK). OS/2 and Windows limit the size. * Added toolbar control support to replace existing bitmap buttons on Windows. * Added dw_filesystem_set_column_title() to fill a hole in localization. * Added new optional UTF-8 parameter to the key press callback. This is a pointer to a UTF-8 string representing the key pressed. The buffer pointed to is only good for the duration of the callback. * Added UTF-8/Wide string conversion functions for Unicode buffer management. * Fixed dwindows-config --version not returning the version at all. * Fixed value changed events not working for spinbuttons on OS/2 and Windows. * Fixed issues drawing arcs on GTK2, GTK3 and Mac. * Fixed a crash in the color chooser on Mac running Lion. * Fixed a layout issue with render widgets on OS/2. * Fixed an expose event issue on OS/2. * Fixed an issue with GTK 3.4 due to properties being inherited from the parent. * Fixed issues with bitmap buttons using icon/pointers on OS/2 and Windows. * Fixed an issue with dw_window_destroy() on Mac. * Fixed issues rendering to printer pixmaps on Windows with GDI+ enabled. * Fixed dw_window_set_bitmap_from_data() prefering the resource ID over the data passed in on most platforms. * Fixed dw_container_delete_row() failing and/or crashing on Mac. * Fixed memory and resource leaks on Windows and Mac. * Fixed incorrect display of status text fields on Mac 10.5 and 10.8. * Fixed compiler warnings on Mac 10.5 and 10.8 by checking selectors directly and removing use of now deprecated APIs. * Fixed incorrect display of textured background non-resizable windows on Mac. * Updated the test program removing deprecated flags and using new ones.