diff --git a/ANNOUNCEMENT b/ANNOUNCEMENT index 9b3afe13e..8ed124ac2 100644 --- a/ANNOUNCEMENT +++ b/ANNOUNCEMENT @@ -1,15 +1,44 @@ -FLTK 1.4 is based on the final release of FLTK 1.3.4. +FLTK 1.4 is based on the final release of FLTK 1.3.4. Later updates +have been backported to 1.3.5 - 1.3.9. FLTK 1.3.10 with the latest +backports is planned to be released shortly after 1.4.0 or 1.4.1. -Technically the branch was forked earlier, but all changes in FLTK 1.3.4 -have also been (modified and) committed in branch-1.3-porting, which is -the base of branch-1.4. - -FLTK 1.4 is intended to be mostly API compatible with FLTK 1.3.4 so +FLTK 1.4 is intended to be mostly API compatible with FLTK 1.3.x so you don't need to change source code when you switch to FLTK 1.4. +However, all programs must be recompiled with FLTK 1.4 because the +ABI (Application Binary Interface) has changed. -However, the platform dependent code in FLTK 1.4 was rewritten to enable +Potential source code conflicts are documented in the in chapter +"Migrating Code from FLTK 1.3 to 1.4" of the user documentation [1]. + +FLTK 1.4 adds some new widgets (e.g. Fl_Flex, Fl_Grid) for flexible GUI +layout, Fl_Scheme_Choice for scheme selection by users, and more. +Other widgets (Fl_Tabs, Fl_Tile, Fl_Spinner etc.) have been improved +for better user experience. + +CMake support has been improved significantly and requires CMake 3.15 or +higher, autotools/configure/make is still supported. The latter will be +dropped in the next minor release (1.5.0). + +macOS is supported up to 15.0 "Sequoia". + +The platform dependent code in FLTK 1.4 was rewritten to enable better porting to new platforms. Basically all platform dependent code has been isolated and implemented in virtual methods of "driver" classes. See src/drivers and subdirectories. -More to come ... +FLTK is now compatible with the Wayland platform on current Linux +distributions and FreeBSD. The default build of the library on these +platforms supports both X11 and Wayland in a "hybrid" library. Programs +compiled and linked to this library start using Wayland if it is +available at runtime and fall back to using X11 if not. Programs using +X11 specific code that are not yet ported to Wayland can still be used +on pure X11 systems or by disabling the Wayland support on startup so +they fall back to using X11 only. + +The current development branch on GitHub [2] is `master`. This will be +changed to `branch-1.4` when development of FLTK 1.5.0 begins and 1.4 +will move to maintenance mode. + +[1] https://www.fltk.org/doc-1.4/ (HTML) and + https://www.fltk.org/doc-1.4/fltk.pdf (PDF) +[2] https://github.com/fltk/fltk.git diff --git a/CHANGES.txt b/CHANGES.txt index e680547d8..4e32220ee 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -1,20 +1,21 @@ -Changes in FLTK 1.4.0 Released: Oct ?? 2024 +Changes in FLTK 1.4.0 RC1 Released: Oct 20 2024 General Information about this Release - - FLTK 1.4.0 is based on FLTK 1.3.4 (released Nov 15 2016), - see CHANGES_1.3.txt for more information. + - FLTK 1.4.0 is based on FLTK 1.3.4 (released Nov 15 2016). + Later updates have partially been backported to 1.3.x releases, see + CHANGES_1.3.txt for more information. - CMake is the primary supported build system in FLTK 1.4.0 and later. - CMake can be used to generate Makefiles, IDE project files, and - several other build systems by using different "generators" provided + CMake can be used to generate Makefiles, IDE project files, and files + for several other build systems by using different "generators" provided by CMake (for instance Ninja, CodeBlocks, Eclipse, KDevelop3, Xcode, etc.). FLTK uses "Modern CMake" since release 1.4.0 which simplifies user project build systems significantly. See README.CMake.txt and documentation chapter "Migrating Code from FLTK 1.3 to 1.4" for more information. - - autoconf/configure is still supported by the FLTK team for backwards + - autoconf/configure is still supported by the FLTK Team for backwards compatibility with older systems that lack CMake support. Support of autoconf/configure will be dropped in FLTK 1.5.0. @@ -23,6 +24,35 @@ Changes in FLTK 1.4.0 Released: Oct ?? 2024 New Features and Extensions + - fltk-config allows to compile multiple files with more compiler and linker + options given on the commandline. + - fl_contrast() functionality has been improved, adding a new contrast + calculation method based on human contrast perception. This new function + is now the default but the old, less accurate, contrast function can be + chosen as an option. + - Timeout handling has been unified across platforms (#379), see documentation + in chapter "Migrating Code from FLTK 1.3 to 1.4". + - New Fl::remove_next_timeout(...) to remove only one timeout (#992). + - New fltk-options executable, improved Fl::option documentation. + - New function `Fl_Window::get_size_range()` (#981). + - New FL_DEPRECATED macro to flag deprecated functions and methods. + - Enable suppression of "deprecated" warnings by macro FL_NO_DEPRECATE. + - New animated GIF images support (Fl_Anim_GIF_Image class) (#375). + - GIF and BMP files can now be "read" from memory, i.e. they can be included + in source code (use their new constructors). + - New Fl_Scheme_Choice widget can be used to easily switch schemes in apps. + - A new scheme named "oxy" has been added (STR 2675, STR 3477). + - Drawing "Arrows" has been unified in all core widgets. + - Drawing "Radio Buttons" has been unified in all core widgets. + - Drawing "Check Marks" has been unified in all core widgets. + - New methods Fl_Group::on_insert/on_remove/on_move (#527) can be used in + derived classes to detect addition or removal of children. + - FLTK widgets can now be used in OpenGL 3 windows. + - The new convenience function Fl::hide_all_windows() can be used to close + all open windows, for instance to exit the running program. + - Windows platform: optionally use GDI+ to antialias oblique lines and curves. + - Windows: The new function Fl::args_to_utf8() can be used to convert + "wide character" commandline arguments to UTF-8. - X11 and Wayland platforms: Added support of HiDPI displays. FLTK apps detect the current display scaling factor and use it to scale all windows. - MSWindows platform: FLTK applications detect the display scaling factor and @@ -38,10 +68,21 @@ Changes in FLTK 1.4.0 Released: Oct ?? 2024 This supports desktops mixing screens with distinct resolutions. In addition, use environment variable FLTK_SCALING_FACTOR to further adjust the starting scaling factor of all FLTK apps. + - Note: On some platforms and with some international keyboard layouts you may + need to set Fl::option(OPTION_SIMPLE_ZOOM_SHORTCUT) to be able to use one or + more of the scaling shortcuts above with or without pressing the Shift key. + The new executable `fltk-options` can be used to set this option either + system wide or for a single user. + - New horizontal and vertical label margins. + - Fluid got a lot of UI and functional improvements and the Fluid docs have + been reworked and put in an own "Fluid User Manual" (HTML and PDF). + Fluid supports the new Fl_Flex and Fl_Grid widgets. + For more details please see the manual. - New Fl_Grid class to layout multiple columns and rows of widgets. - New Fl_Flex class to layout one row or one column of widgets. - - New Fl_Terminal widget supporting Unicode/utf-8, ANSI/xterm escape codes + - New Fl_Terminal widget supporting Unicode/UTF-8, ANSI/xterm escape codes with full RGB color control. + - New Fl_Copy_Surface to copy drawings to the clipboard. - New Fl::keyboard_screen_scaling(0) call stops recognition of ctrl/+/-/0/ keystrokes as scaling all windows of a screen. - New member function Fl_Image::scale(int width, int height) to set @@ -53,6 +94,9 @@ Changes in FLTK 1.4.0 Released: Oct ?? 2024 Fl_Widget::bind_deimage(Fl_Image *img) to bind an image to a widget, that is, to set an image to be used as part of the widget label and also to be deleted when the widget is deleted. + - New member function Fl_Menu_::menu_end() to ensure that the menu is fully + constructed in its final location after dynamic modifications. This is + called automatically before the menu is shown. - New Fl_SVG_Image class: gives support of scalable vector graphics images to FLTK using the nanosvg software. - New Fl_ICO_Image class to read Windows .ico icon files. @@ -65,6 +109,8 @@ Changes in FLTK 1.4.0 Released: Oct ?? 2024 - Fl_Tabs widget now supports close buttons for individual tabs. - Fl_Tabs widget now supports four different modes for handling an overflowing number of tabs. + - Mouse buttons 4 + 5 (aka "side buttons") are now supported (#1076, #1068). + These are typically used as "back" and "forward" functions, e.g. in browsers. - Windows platform: added support for using a manifest to set the application's level of DPI awareness (issue #309). - class Fl_Native_File_Chooser on the X11/Wayland platform relies on external @@ -140,6 +186,11 @@ Changes in FLTK 1.4.0 Released: Oct ?? 2024 receiving graphics commands. - New macros for easy function and method callbacks with multiple type safe arguments (see FL_METHOD_CALLBACK_1 etc.) . + - The value box size of Fl_Value_Slider is now user settable (STR 3222). + - The new header file FL/fl_config.h replaces FL/abi-version.h and + includes some more build configuration settings. This file is always + included automatically. + - Nested (aka recursive) common dialogs are now possible (STR 3242, #282). Removed Features @@ -147,15 +198,19 @@ Changes in FLTK 1.4.0 Released: Oct ?? 2024 and the CMake option 'OPTION_USE_XDBE' have been removed because XDBE was unreliable and rarely supported by X servers. Double buffering support in Fl_Double_Window is not affected. + - Hardware "overlay" support has been removed. This was rarely implemented + and should not affect user code because overlay support is simulated. New Configuration Options (ABI Version) + - Add --without-fluid configure option (#725) if Fluid is not needed. - X11 platform: Added support for drawing text with the pango library which allows to draw most scripts supported by Unicode, including CJK and right-to-left scripts. FLTK now outputs PostScript that draws those scripts in vectorial form. The corresponding CMake option is FLTK_USE_PANGO. The corresponding configure option is --enable-pango. - This option is OFF by default. + This option is OFF by default when the build is only for X11 and ON + when Wayland support is built as well. - Configure option --enable-wayland allows to build the FLTK library for the new Wayland platform while remaining compatible with X11. The corresponding CMake option is FLTK_BACKEND_WAYLAND. This option is ON by default. @@ -174,6 +229,9 @@ Changes in FLTK 1.4.0 Released: Oct ?? 2024 Fl_EPS_File_Surface and Fl_Printer (under X11 platform only) ineffective. - FLTK's ABI version can be configured with 'configure' and CMake. See documentation in README.abi-version.txt. + - Building the 'Forms' compatibility library 'fltk_forms' is now optional, + default is ON. This may be turned to OFF in a later FLTK release. + - CMake/Windows/MSVC: New option to select MSVC Runtime when linking apps. Bundled libraries @@ -187,7 +245,13 @@ Changes in FLTK 1.4.0 Released: Oct ?? 2024 Other Improvements - - (add new items here) + - Fl_Image::copy() is now 'const', including all derived classes. + Note: This may require code changes in classes derived from Fl_Image, + see documentation in chapter "Migrating Code from FLTK 1.3 to 1.4". + - Fl_Native_File_Chooser can now use kdialog, zenity, and/or GTK3 native + file choosers on Linux. + - Contrast of check marks and radio buttons has been improved (#443). + - Improve X11 (16-bit) clipping of lines and rectangles. - Added support of macOS 15.0 "Sequoia", 14.0 "Sonoma", 13.0 "Ventura", 12.0 "Monterey", and 11.0 "Big Sur". - Added macOS support for the arm64 architecture since 11.0 (Big Sur). @@ -199,6 +263,10 @@ Changes in FLTK 1.4.0 Released: Oct ?? 2024 widget (issue #270). - Fixed X11 copy-paste and drag-and-drop target selection (issue #182). This fix has been backported to 1.3.6 as well. + - The user can now copy standard dialog text to the clipboard by + hitting Ctrl/C (#388). + - The selected color in Fl_Color_Chooser can now be copied to the + clipboard by hitting Ctrl/C. - Add optional argument to Fl_Printer::begin_job() to receive a string describing the error when an error occurs. - Fix Windows-specific bug when the program tries to enlarge a @@ -209,9 +277,8 @@ Changes in FLTK 1.4.0 Released: Oct ?? 2024 - Fix Fl::add_timeout() in draw() under Linux (STR 3188) - Improved documentation for '@' symbols in labels (STR #2940). - Fl_Roller can now be controlled via the mouse wheel (STR #3120). + - Handle Shift + mousewheel event as horizontal scrolling (STR 3521). - Tooltips hide by themselves after 12 seconds (STR #2584). - - Added widget visibility indicator to Fluid (STR #2669). - - Improved shell script support in FLUID - Improved constructor for creating Fl_Preferences files with flags for the correct locale and for overwriting existing files. - Added Fl_Input_::append() method (STR #2953). @@ -242,7 +309,8 @@ Changes in FLTK 1.4.0 Released: Oct ?? 2024 timer code). You can use the '+' key to increase the level at all times. - Some methods of Fl_Tabs are now virtual and/or protected for easier subclassing without code duplication (STR #3211 and others). - To be continued... + - Fl_Tabs now has an option to delete tabs by the user (UI), and tab + overflow has been largely improved with several options. - glutAddMenuEntry() now has a *const* label argument (STR #3323) - Separated Fl_Input_Choice.H and Fl_Input_Choice.cxx (STR #2750, #2752). - Separated Fl_Spinner.H and Fl_Spinner.cxx (STR #2776). @@ -254,12 +322,14 @@ Changes in FLTK 1.4.0 Released: Oct ?? 2024 name conflict with CMake's auto-generated target 'help'. - Fl_Menu_Bar: left and right arrow keys now wrap to the menu at the other end of the menubar when pressed in the first (resp. last) menu. + - Previously "public" members Fl::awake_ring_*_ are now "private" (#559). + - The test/clipboard demo program can now save PNG images. + - New virtual int Fl_Group::delete_child(int n) (STR 3218). - Many documentation fixes, clarifications, and enhancements. Bug Fixes - - (add new items here) - Fixed all Pixmaps to be '*const' (STR #3108). - Fixed Fl_Text_Editor selection range after paste (STR #3248). - Fixed crash for very small Fl_Color_Chooser (STR #3490). @@ -267,15 +337,12 @@ Changes in FLTK 1.4.0 Released: Oct ?? 2024 - Fixed pulldown menu position when at the bottom of the screen (STR #2880). - Fixed missing item handling in Fl_Check_Browser (STR #3480). - Fixed Delete key in Fl_Input deleting entire widgets in Fluid (STR #2841). - - Reorganized Fluid Template feature (STR #3336). - - Updated Fluid documentation and image (STR #3328). - - FLUID recognizes `override` and `FL_OVERRIDE` keywords (Github #801) - Duplicating Widget Class in Fluid no longer crashes (STR #3445). + - Fixed 'fluid.app' on case sensitive macOS (was: Fluid.app). - Fl_Check_Browser::add(item) now accepts NULL (STR #3498). - Interface to set maximum width of spinner text field (STR #3386). - Fl_Text_Display no longer wiggles (STR #2531). - Fixed Help_View return value (STR #3430). - - Fix 'fluid.app' on case sensitive macOS (was: Fluid.app). - Fix FL_PUSH event handling of Fl_Check_Browser (STR #3004). - Fix a potential crash when a program exits before it opens a window (Windows only, STR #3484). diff --git a/CHANGES_1.3.txt b/CHANGES_1.3.txt index 8844aa027..cac1ab721 100644 --- a/CHANGES_1.3.txt +++ b/CHANGES_1.3.txt @@ -1,3 +1,187 @@ +CHANGES IN FLTK 1.3.9 RELEASED: Dec 09 2023 + +FLTK 1.3.9 is a maintenance release with some fixes and enhancements. + +Highlights in this release: + + - Support macOS up to macOS 14 "Sonoma". + - Update bundled libraries to current versions (see below). + - Introduce bundled image library "prefixing" to avoid conflicts + with system libraries. + - New CMake option FLTK_MSVC_RUNTIME_DLL to select Visual Studio + Runtime version: DLL (/MDx) or static (/MTx), see README.CMake.txt + + +Bundled library versions (see also README.bundled-libs.txt): + + Library Version Release date + --------------------------------------------- + jpeg jpeg-9e 2022-01-16 + png libpng-1.6.40 2023-06-21 + zlib zlib-1.3 2023-08-18 + + +Details: + + Albrecht Schlosser: + Backport X11 INCR protocol fixes from 1.4.0 (issue #451) + X11: Suppress compiler warnings when using gcc or clang + Fix crash if a program exits before it opens a window (STR 3484). + Fix compilation error with current Visual Studio 2022 + Windows: #define WIN32 if not defined by user + Backport warning fixes from 1.4.0 in src/fl_draw.cxx (#693) + Fix compiler warning as pointed out in PR #693 + Fix another compiler warning (#693) + Remove unused variable, fix "type issue" (#445, part 2) + Fix stack buffer overflow found by address sanitizer + Fix "gtk+ rendering" (GitHub Issue #443) + Fix doxygen warnings + Bump version numbers, prepare release 1.3.9 + Fix several compiler warnings + Update bundled image libraries and zlib to current versions + Update README, README.CMake.txt, and some support files + Fix compiler warnings: backported from 1.4 (git 'master') + CMake/MSVC: remove confusing recommendation to rerun CMake + Documentation: remove dark color on title page + Raise CMake minimum required version to 3.15 and more + + ManoloFLTK: + macOS platform: Issue #325 "Disabling IM disables Greek and Cyrillic layouts" + Fix fullscreen window level corner cases on macOS + Fix issue #373 apparent with macOS platform and SDK ≤ 10.13 + Issue #452: Fl::get_font_name failure on OS-X. + Issue #454: crash in Fl::get_font_name(). + Issue #469: Fl_Sys_Menu_Bar menu item shortcuts using Esc or Tab don't work on Mac + Fix "Focus is lost leaving full screen on macOS 13" (#608) + Add support of macOS Ventura 13.0 and macOS Sonoma 14.0 + macOS: remove configure option --enable-x11 and CMake OPTION_APPLE_X11; + this functionality remains in FLTK 1.4. + configure.ac: make sure local-png and local-zlib always run together + Remove the -mwindows argument from CFLAGS and CXXFLAGS + +Matthias Melcher: + Issue #188: Fix reference counts and search for Fl_Shared_Image original + + YX: + Fix IME problem (issue #270) + + +CHANGES IN FLTK 1.3.8 RELEASED: Nov 20 2021 + +FLTK 1.3.8 is a maintenance release with some fixes and enhancements. + +Details: + + Albrecht Schlosser: + Make "FLTK_CONSOLIDATE_MOTION" user-definable (issue #76) + Fix compiler warnings (backported from 1.4) + Add new dialog fl_choice_n() with extended return values (#282) + + ManoloFLTK: + Account for deprecation of [NSBitmapImageRep initWithFocusedViewRect:] + in macOS 10.14 + macOS: fix fullscreen window when other windows were created before + Fix issue #287: "FLTK 1.3.6 doesn't handle fullscreen on macOS" + Fix issue #288: "FLTK 1.3.6+ doesn't notify window movement on macOS" + Fix issue #279: "HiDpi issue on macOS with retina display" + macOS: Allow building with non-Apple compiler that may not support blocks + + +CHANGES IN FLTK 1.3.7 RELEASED: Jul 25 2021 + +FLTK 1.3.7 is a maintenance release for macOS only. It fixes one +regression introduced in FLTK 1.3.6 and two long standing timer +issues on macOS. + +Other platforms than macOS are not concerned. + +Changes: + + Avoid premature FL_RELEASE event at start of drag-n-drop operation + Fix a timer inconsistency and prevent a crash + Fl::add_timeout() must always create a new timer (#248) + + + +CHANGES IN FLTK 1.3.6 RELEASED: May 15 2021 + +There have been no changes since FLTK 1.3.6rc2. + + +CHANGES IN FLTK 1.3.6rc2 RELEASED: May 04 2021 + +FLTK 1.3.6rc2 fixes some minor issues of 1.3.6rc1, particularly macOS +bundle generation. It addresses an issue that bundles can't be executed +on macOS 11.3 Big Sur if built with configure/make after downloading +the release tarball because of the macOS "quarantine" feature. + +Details: + + Albrecht Schlosser: + Rename file 'VERSION' to 'fltk_version.dat' (#191) + Fix version number in doxygen docs + Fix build with Cairo for CMake < 3.13 + CMake: fix old (pre 3.13) link_directories() usage + Enhance CMake build configuration summary + Refactor macOS bundle generation to avoid "quarantine" + Fix a new compiler warning + + +CHANGES IN FLTK 1.3.6rc1 RELEASED: Apr 26 2021 + +FLTK 1.3.6 is a maintenance release with new macOS Big Sur support +and some bug fixes. macOS Big Sur is supported on both Intel and the +new Apple Silicon (M1) chips. + +CMake support has been improved but is not yet "perfect". Documentation +has been enhanced, bundled image libraries have been updated to current +versions. + +The following lists are subsets of all commits. References in '(...)' +are either STR numbers (STR xxxx) or GitHub Issues or Pull Requests +(#nnn). + + +Bug fixes and other improvements + + Albrecht Schlosser: + Fix Fl::add_timeout() in draw() under Linux (STR 3188) + X11: Fix X Input Methods (XIM) (STR 3502, 3192) + Fix overly restrictive JPEG filter (#81) + Fix DND in read-only Fl_Input (Fl_Output) (#113) + Fix offscreen drawing under X11 (STR 3384) + Fix potential fluid crashes (STR 3420) + memory leak + Fix X11 copy-paste and drag-and-drop target selection (#182) + Fix CMake install procedure (#212) + Avoid "Bogus FL_MOVE/FL_DRAG events" (#76) + CMake: Document FLTKConfig.cmake and set FLTK_INCLUDE_DIR + + Greg Ercolano: + Fix issue92, added -d debug flag to fluid (#92) + Merge pull request #176 from ComputerNerd/errmsg-fix-13 + + ManoloFLTK: + X11: add support for copy+paste of image within one app + Windows: add bitmap version of graphics when copying to clipboard + Fix use of Xrender extension with old, 16-bit framebuffers. + Fix for Fl_Native_File_Chooser under macOS 10.15 Catalina and ... + Restore macOS capacity to turn window fullscreen encompassing several screens. + Improve Fl_Copy_Surface under macOS + Set OPTION_USE_SYSTEM_LIBPNG/JPEG off under macOS by default + Have Fl_Pack::draw() call Fl_Group::init_sizes() on its parent group. + CMake support of the Darwin+XQuartz test platform + Add support of macOS "Big Sur" 11.0 + Fix when building with SDK 10.15 and running with 11.0 Big Sur + Backport fix for issue #185 "Shared Image reload() loses initial dimensions" from branch 1.4 + Fix fl_endpoints() for macOS platform that was not effective. + Fix stack corruption when loading GIF (pull request #200) + Restore ./configure --enable-x11 on macOS + Fix crash when terminating any macOS app by cmd-Q + + OKAMURA, Yasunobu: + Fix JIS Keyboard dead keys + + CHANGES IN FLTK 1.3.5 RELEASED: Mar 03 2019 Bug fixes and other improvements