Update ANNOUNCEMENT and CHANGES files for release 1.4.0

This commit is contained in:
Albrecht Schlosser 2024-10-20 19:40:02 +02:00
parent d163ab1357
commit 32ac2ce0ac
3 changed files with 305 additions and 25 deletions

View File

@ -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

View File

@ -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).

View File

@ -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