[ Return to Articles | Show Comments | Submit Comment ]
Article #1392: FLTK 1.3.3 released on Nov 03, 2014
Created at 14:23 Nov 03, 2014 by AlbrechtS
Even though FLTK 1.3.3 does not fix all STRs, we decided to release FLTK 1.3.3 as it contains many new features, bug fixes, and adaptations to new compiler releases.
CHANGES IN FLTK 1.3.3
New features and extensions
- New class Fl_Copy_Surface allows copying graphical data to the
clipboard in a cross-platform way (STR #3058).
- Support for pasting graphical data from the clipboard to a widget.
- New class Fl_Image_Surface allows drawing into an Fl_Image object.
- Methods Fl::add_clipboard_notify() and Fl::remove_clipboard_notify()
to get notifications whenever the clipboard changes (STR #2636).
- New method Fl_Window::wait_for_expose() (STR #3124, STR #3129).
- New bilinear scaling method for RGB images (STR #2869, STR #3062).
- New method Fl_Widget::top_window() (STR #2948).
- New method Fl_Widget::top_window_offset() (part of STR #2944).
- New Fl_Tree_Item methods label_x(), label_y(), label_w(), label_h().
- New methods Fl::enable_im() and Fl::disable_im() to enable/disable
system Input Methods (IM).
- New methods Fl::add_system_handler() and Fl::remove_system_handler()
to intercept low level system events.
- New FLTK scheme "gleam" (STR #2672).
- New method Fl::is_scheme() to compare the current scheme name.
- New method to set custom icons for windows (STR #2816),
see Fl_Window::icon() for more info.
- New method to set any custom cursor, based on a Fl_RGB_Image object.
Also changed fallback cursors to use this method, so that fallback
cursors are handled in a platform independent manner (STR #2660).
- New ability to convert Fl_Pixmap to Fl_RGB_Image (STR #2659).
- Support for full screen windows over multiple monitors.
- New optional line numbers in Fl_Text_Display and options to control
line numbers and word wrapping (on/off) in example test/editor.cxx.
- On Linux/Unix, class Fl_Native_File_Chooser uses file dialogs from
the Gnome environment (provided by the libgtk dynamic library) if
available, and falls back to Fl_File_Chooser if not (STR #3088).
Use option Fl::OPTION_FNFC_USES_GTK to enable/disable this feature.
- New support for the Mac OS text input system that deals with character
composition and input of languages with large character sets (e.g.
Chinese and Japanese). This implementation has been reported to work
well for Chinese. Superficial testing suggests it's also operational
for Japanese. In-depth testing remains needed though.
- Many CMake improvements (e.g. STR #2962, 2977, 2994, 3045, 3055).
- Some autoconf, configure improvements.
- Removed 1024 bytes constraint in labels and browser lines (STR #2990).
- Mac OS version of Fl_Native_File_Chooser: when using filters in a
save file dialog, the output file extension gets changed when the
user modifies the output file type.
- Many Mac OS X improvements related to Fl_Sys_Menu_Bar.
- Improved Mac OS X keyboard handling of special keys or combinations.
- General Mac OS X improvements, incl. high resolution (Retina)
displays, and support up to Mac OS X 10.10.
- Documentation improvements and clarifications.
- Printing support improvements, including GL windows.
- Many improvements related to Fl_Tree (some of them only as ABI
breaking features, see below).
- Some static data has been made 'const' to improve memory usage
with shared libraries.
- Don't grab navkeys with modifiers (CTRL, ALT), as the application
may want them (STR #3104).
- Check compiler support of -fvisibility, -fvisibility-inlines-hidden,
and use it, if available. Reduces shared library size.
- Drag'n'drop behaves better now: if text is dropped in the widget it
comes from, then it works like cut and paste.
- Other improvements of DND handling when dragging text from other
applications, e.g. Firefox and Thunderbird.
- Windows message WM_QUIT is processed like SIGTERM, i.e. as a
request to terminate the program.
- Fluid no longer closes the code window when hitting ESC (STR #2997).
- Improved Fl_Widget::when() handling in Fl_Tabs (STR #2939).
- Improved support for more recent compilers (clang and gcc) that
issue more warnings, and fixed some 32-/64-bit compilation issues.
- Added method Fl_Window::clear_modal_states() to make it possible
to remove the modal or non-modal state from a window (STR #3123).
- Fixed word selection dragging in text input (STR #3014).
- Fixed border padding for special cases (STR #3061, Windows only).
- Fixed crash if Fl_Window::flush() called while window not shown()
- Fixed segfault in fl_set_fonts_xft.cxx when loading fonts not named
as expected (STR #2976).
- Fixed a memory leak in font loading/allocation (STR #3069).
- Fixed minor memory leaks in handling/freeing of X11 objects.
- Fixed OS X fl_read_image() and Fl_Paged_Device::print_window_part()
when using a Retina display.
- Fixed MinGW build if configure didn't find strcasecmp() (STR #2994).
- Fixed access of protected member under Linux/Unix (STR #2903).
- Fixed various Mac specific OpenGL issues (STR #2944)
- Fixed PostScript printing with non-english locale (STR #3130).
- Fixed a regression in Fl_File_Chooser since FLTK 1.1.8: the
Enter key now selects the file again.
- Fixed a bug in Fl_Native_File_Chooser (Windows) for some file name
input filters (STR #3101).
- Fixed out-of-bounds memory access in Fl_Text_Display (STR #2730).
FLTK 1.3.3 ABI FEATURES
To enable the following ABI features, put:
#define FLTK_ABI_VERSION 10303
..at the top of your FL/Enumerations.H and rebuild FLTK and your app.
- Added Fl_Window::shape(const Fl_Image*) to create arbitrarily-shaped
- Made Fl_Help_View::handle() public and Fl_Help_View::draw() protected
to enable inheritance and for consistency (STR #2834).
Note: both methods were private.
- Made Fl_Scroll::recalc_scrollbars() protected so that it can be used
in derived widgets to calculate scrollbar visibility and positions.
- Added Fl_Table::tab_cell_nav() for controlling Tab key navigation of table
- Added Fl_Tree::get_selected_items(), returns the selected items as an array
- Added Fl_Tree::item_draw_callback(), letting one define a custom draw
function for Fl_Tree_Item's.
- Fl_Tree: various related changes:
o Added horizontal scrollbar
o Separated draw() and tree size calculation
o Added new public methods:
> resize() -- uses optimized dim calc, avoids tree recalc
> next_item() -- added parameters: direction, visibility
> extend_selection() -- added parameters, improved algorithm
> calc_dimensions() -- calc tix/y/w/h, tox/y/w/h and scrollbars
> calc_tree() -- calc tree_w/tree_h
> recalc_tree() -- schedules calc_tree()
> first_visible_item(), last_visible_item(), next_visible_item()
> first_selected_item(), last_selected_item(), next_selected_item()
o Added protected variables:
> _tix/y/w/h -- tree widget 'inner' dimension
> _tox/y/w/h -- tree widget 'outer' dimension
> _tree_w,_tree_h -- entire tree hierarchy width/height
> item_clicked() -- use callback_item() instead
> first_visible() -- use first_visible_item() instead
> last_visible() -- use last_visible_item() instead
- Fl_Tree_Item: various related changes:
o Added Fl_Tree ptr: needed for auto-recalc when item modified directly
o Added new methods tree(), recalc_tree()
o Added new ctor that accepts Fl_Tree*
o draw() parameters changed to include tree size calculations
> ctor using Fl_Tree_Prefs parameter (Fl_Tree* version better,
and must be used for 1.3.3 ABI features to work correctly)
> next_displayed() -- use next_visible() instead
> prev_displayed() -- use prev_visible() instead
- test/tree: added tests for newly added features
[ Listing ]
[ Submit Comment ]