mirror of https://github.com/fltk/fltk.git
FLTK - Fast Light Tool Kit - https://github.com/fltk/fltk - cross platform GUI development
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
275 lines
15 KiB
275 lines
15 KiB
Changes in FLTK 1.4.0 Released: ??? ?? 2022 |
|
|
|
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. |
|
|
|
- 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 |
|
by CMake (for instance Ninja, CodeBlocks, Eclipse, KDevelop3, Xcode, etc.). |
|
See README.CMake.txt for more information. |
|
|
|
- autoconf/configure is still supported by the FLTK team for backwards |
|
compatibility with older systems that lack CMake support. |
|
|
|
|
|
New Features and Extensions |
|
|
|
- FLTK 1.4 introduces a new platform, Wayland, available for recent Linux |
|
distributions. More information in README.Wayland.txt |
|
- Windows platform: added support for using a manifest to set the |
|
application's level of DPI awareness (issue #309). |
|
- X11 platform: class Fl_Native_File_Chooser will run the KDE file dialog |
|
rather than the GTK dialog if the current desktop is KDE and if command |
|
"kdialog" is available on the running platform (issue #278). |
|
- The undocumented feature FLTK_CONSOLIDATE_MOTION is now OFF on X11 and |
|
removed on macOS. In FLTK 1.3 this feature has been ON on X11. The macro can now |
|
be set on the compiler commandline and can be used to reduce the number |
|
of mouse move events sent to the application but it may be unreliable. |
|
Recommendation: let it switched OFF unless you really need it. |
|
- New function fl_capture_window() to capture the content of a rectangular |
|
zone of a mapped window and return it as an Fl_RGB_Image. It improves |
|
with HighDPI displays what can be done with fl_read_image(). |
|
- The Windows platform now draws oblique and curved lines in antialiased |
|
form. The new function void fl_antialias(int state); allows to turn off |
|
or on such antialiased drawing. The new function int fl_antialias(); returns |
|
whether line and curve drawing is currently antialiased. |
|
- The border radius of "rounded" box types can be limited and |
|
the shadow width of "shadow" box types can be configured (issue #130). |
|
See Fl::box_border_radius_max() and Fl::box_shadow_width(). |
|
- New classes Fl_SVG_File_Surface and Fl_EPS_File_Surface to save any FLTK |
|
graphics to SVG or EPS files, respectively. |
|
- New fl_putenv() is a cross-platform putenv() wrapper (see docs). |
|
- New Fl::keyboard_screen_scaling(0) call stops recognition of ctrl/+/-/0/ |
|
keystrokes as scaling all windows of a screen. |
|
- New "Preview" switch added to the GTK native file chooser dialog |
|
available on the X11 platform. This requires function fl_register_images() |
|
to have been called. |
|
- New public variable Fl_Image::register_images_done allows an app. to detect |
|
whether function fl_register_images() has been called. |
|
- Fix Fl::add_timeout() under Linux (STR 3516). |
|
- Fix early timeouts in Fl_Clock seen in some environments (STR 3516). |
|
- Fl_Printer::begin_job() uses by default the Gnome print dialog on the X11 |
|
platform when the GTK library is available at run-time. That can be turned off |
|
with Fl::option(OPTION_PRINTER_USES_GTK, false). |
|
- New member functions Fl_Paged_Device::begin_job() and begin_page() |
|
replace start_job() and start_page(). The start_... names are maintained |
|
for API compatibility. |
|
- New member function Fl_Image::scale(int width, int height) to set |
|
the drawing size of an image independently from its data size. The |
|
same function was previously available only for class Fl_Shared_Image |
|
and with FL_ABI_VERSION >= 10304. New member functions Fl_Image::data_w() |
|
and Fl_Image::data_h() give the width and height of the image data. |
|
- OpenGL draws text using textures on all platforms, when the necessary |
|
hardware support is present (a backup mechanism is available in absence |
|
of this support). Thus, all text drawable in Fl_Window's can be drawn |
|
in Fl_Gl_Window's (STR#3450). |
|
- New member functions Fl::program_should_quit(void), |
|
and Fl::program_should_quit(int) to support detection by the library |
|
of a request to terminate cleanly the program. |
|
- MacOS platform: the processing of the application menu's "Quit" item |
|
has been changed. With FLTK 1.3.x, the application terminated when all |
|
windows were closed even before Fl::run() or Fl::wait() could return. |
|
With FLTK 1.4, Fl::run() returns so the app follows its normal termination path. |
|
- MacOS platform: Added support for rescaling the GUI of any app at run-time |
|
using the command/+/-/0/ keystrokes. |
|
- MSWindows platform: Added support for rescaling the GUI of any app |
|
at run-time using the ctrl/+/-/0/ keystrokes. All applications |
|
detect the desktop scaling factor and automatically scale their GUI |
|
accordingly. This effectively renders WIN32 FLTK apps "per-monitor DPI-aware" |
|
whereas they were "DPI-unaware" with FLTK 1.3.x. |
|
- FLTK apps on the MacOS platform contain automatically a Window menu, which, |
|
under MacOS ≥ 10.12, allows to group/ungroup windows in tabbed form. The new |
|
Fl_Sys_Menu_Bar::window_menu_style() function allows to specify various |
|
styles for the Window menu, even not to create it. |
|
- New function: int fl_open_ext(const char* fname, int binary, int oflags, ...) |
|
to control the opening of files in binary/text mode in a cross-platform way. |
|
- Fix for issue #247 : loading SVG image with BOM. |
|
- New Fl_SVG_Image class: gives support of scalable vector graphics images |
|
to FLTK using the nanosvg software. |
|
- Fl_Text_Selection got a new method length() and returns 0 in length() |
|
and in all offsets (start(), end(), position()) if no text is selected |
|
(selected() == false). The behavior in FLTK 1.3 and earlier versions |
|
(returning undefined values if !selected()) was confusing. |
|
- Added support for MacOS 10.13 "High Sierra". |
|
- New method Fl_Group::bounds() replaces Fl_Group::sizes() which is now |
|
deprecated. Fl_Group::bounds() uses the new class Fl_Rect that contains |
|
widget coordinates and sizes x(), y(), w(), and h() (STR #3385). |
|
Documentation for bounds() and its internal structure was added. |
|
- X11 platform: Added support for HiDPI displays and for rescaling any window |
|
at run-time under user control. Under the gnome desktop, FLTK applications |
|
detect the current gnome scaling factor and use it to scale all FLTK windows. |
|
Under other desktops, the FLTK_SCALING_FACTOR environment variable can be |
|
used to set the starting scaling factor of all FLTK applications. |
|
In addition, it is possible to rescale all FLTK windows mapped to a screen |
|
by typing ctrl-'+' (enlarge), ctrl-'-' (shrink) or ctrl-'0' (back to starting |
|
factor value). Windows moved between screens adjust to the scaling factor of |
|
their screen. This supports desktops mixing screens with distinct resolutions. |
|
- New method shadow(int) allows to disable the shadows of the hands |
|
of Fl_Clock, Fl_Clock_Output, and derived widgets. |
|
- New method Fl_Tabs::tab_align() allows to set alignment of tab labels, |
|
particularly to support icons on tab labels (STR #3076). |
|
- Added Fl_Surface_Device::push_current(new_surface) and |
|
Fl_Surface_Device::pop_current() to set/unset the current surface |
|
receiving graphics commands. |
|
- 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 |
|
OPTION_USE_PANGO. The corresponding configure option is --enable-pango. |
|
This option is OFF by default. |
|
|
|
New Configuration Options (ABI Version) |
|
|
|
- Configure option --enable-wayland allows to build the FLTK library for |
|
the new Wayland platform. The corresponding CMake option is OPTION_USE_WAYLAND. |
|
- The new configure option --disable-gdiplus removes the possibility to draw |
|
antialiased lines and curves on the Windows platform. The corresponding CMake |
|
option is OPTION_USE_GDIPLUS. |
|
- The library can be built without support for reading SVG images or writing |
|
graphics in SVG format using the --disable-svg configure option |
|
or turning off OPTION_USE_SVG in CMake. |
|
- The library can be built without support for PostScript, thus reducing |
|
its size, using the --disable-print configure option or turning off |
|
OPTION_PRINT_SUPPORT in CMake. That makes classes Fl_PostScript_File_Device, |
|
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. |
|
|
|
Bundled libraries |
|
|
|
- Bundled image libraries have been upgraded to newer versions. |
|
For details see README.bundled-libs.txt. |
|
|
|
1.4.0 ABI FEATURES |
|
|
|
- None. FLTK 1.4.0 has a new ABI, breaking 1.3.x ABI. |
|
|
|
|
|
Other Improvements |
|
|
|
- (add new items here) |
|
- Added support for macOS 13.0 "Ventura". |
|
- Fixed X11 Input Method window badly positioned with Fl_Text_Editor |
|
widget (issue #270). |
|
- Added support for macOS 12.0 "Monterey". |
|
- Fixed X11 copy-paste and drag-and-drop target selection (issue #182). |
|
This fix has been backported to 1.3.6 as well. |
|
- Added support for macOS 11.0 "Big Sur" and for building for |
|
the arm64 architecture. |
|
- 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 |
|
maximized window, that would freeze the window (git issue #65). |
|
- Improve X11 16-bit coordinate clipping for text (STR 2798). This |
|
assumes that text is "small" WRT 16-bit coordinate space and clips |
|
text if at least one of the x/y coordinates is out of bounds. |
|
- Fix Fl::add_timeout() in draw() under Linux (STR 3188) |
|
- Class Fl_Native_File_Chooser uses in priority the file chooser dialog |
|
of GTK version 3 when available on the running X11 platform, and falls back |
|
to version 2 when V3 is not available. In contrast, GTK version 2 was used |
|
in priority by FLTK 1.3.x |
|
- Added support for macOS 10.15 "Catalina" |
|
- Improved documentation for '@' symbols in labels (STR #2940). |
|
- Fl_Roller can now be controlled via the mouse wheel (STR #3120). |
|
- Tooltips hide by themselves after 12 seconds (STR #2584). |
|
- Added widget visibility indicator to Fluid (STR #2669). |
|
- Added Fl_Input_::append() method (STR #2953). |
|
- Fix for STR#3473 (and its duplicate STR#3507) to restore configure-based |
|
builds on recent Linux/Unix distributions where the freetype-config |
|
command has been replaced by pkg-config. |
|
- Added support for MacOS 10.14 "Mojave": all drawing to windows is done |
|
through "layer-backed views" when the app is linked to SDK 10.14. |
|
- MacOS ≥ 10.10: Fl_Window::fullscreen() and fullscreen_off() no longer |
|
proceed by Fl_Window::hide() + Fl_Window::show() but essentially |
|
resize the window, as done on the X11+EWMH and Windows platforms. |
|
- Fl_Cairo_Window constructors are now compatible with Fl_Double_Window |
|
constructors - fixed missing constructors (STR #3160). |
|
- The include file for platform specific functions and definitions |
|
(FL/x.H) has been replaced with FL/platform.H. FL/x.H is deprecated |
|
but still available for backwards compatibility (STR #3435). |
|
FL/x.H will be removed in a (not yet specified) future FLTK release. |
|
We recommend to change your #include statements accordingly. |
|
- The Fl_Boxtype and Fl_Labeltype definitions contained enum values |
|
(names) with a leading underscore (e.g. _FL_MULTI_LABEL) that had to |
|
be used in this form. Now all boxtypes and labeltypes can and should |
|
be used without the leading underscore. A note was added to the enum |
|
documentations to make clear that the leading underscore must not be |
|
used in user code, although the enum documentation still contains |
|
leading underscores for technical reasons (internal use). |
|
- The blocks demo program got a new keyboard shortcut (ALT+SHIFT+H) to |
|
reset the user's high score. It is now slower than before in higher |
|
levels, hence you can expect higher scores (due to a bug fix in the |
|
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... |
|
- Separated Fl_Input_Choice.H and Fl_Input_Choice.cxx (STR #2750, #2752). |
|
- Separated Fl_Spinner.H and Fl_Spinner.cxx (STR #2776). |
|
- New method Fl_Spinner::wrap(int) allows to set wrap mode at bounds if |
|
value is changed by pressing or holding one of the buttons (STR #3365). |
|
- Fl_Spinner now handles Up and Down keys when the input field has |
|
keyboard focus (STR #2989). |
|
- Renamed test/help.cxx demo program to test/help_dialog.cxx to avoid |
|
name conflict with CMake's auto-generated target 'help'. |
|
- 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). |
|
- Removed all shadow lint in header files (STR #2714). |
|
- 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). |
|
- Duplicating Widget Class in Fluid no longer crashes (STR #3445). |
|
- 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). |
|
- Fix Fl_PNG_Image error handling. An error was potentially caused |
|
by error handling of the image library with setjmp/longjmp. |
|
- Fix Fl_Browser background and text color parsing (STR #3376). |
|
- Fix Windows CreateDC/DeleteDC mismatch (STR #3373). |
|
- Fix Fl_Tabs label drawing for Fl_Window children (STR #3075). |
|
- Fix line number alignment in Fl_Text_Display/Editor (STR #3363). |
|
- Fix ignored buffer pre-allocation (requestedSize) in Fl_Text_Buffer. |
|
See fltk.general "Fl_Text_Buffer constructor bug" on Dec 5, 2016. |
|
- Fix build with configure --enable-cairo --enable-cairoext, |
|
see this report in fltk.general: |
|
https://groups.google.com/forum/#!topic/fltkgeneral/x80qQ6wt0s4 |
|
|
|
|
|
Removed Features |
|
|
|
- Bundled IDE project files (Xcode and Visual Studio) have been |
|
removed. Please use CMake to generate your IDE project files. |
|
See README.CMake.txt for more information. |
|
- Dropped FLTK 1.0 compatibility (macro FLTK_1_0_COMPAT). This "feature" |
|
was no longer usable since FLTK 1.3, hence it can be dropped safely. |
|
|
|
|
|
Changes in FLTK 1.3 |
|
|
|
See CHANGES_1.3.txt |
|
|
|
|
|
Changes in FLTK 1.1 |
|
|
|
See CHANGES_1.1.txt |
|
|
|
|
|
Changes in FLTK 1.0 |
|
|
|
See CHANGES_1.0.txt
|
|
|