fltk/CHANGES

490 lines
23 KiB
Plaintext

CHANGES IN FLTK 1.3.4 RELEASED: ??? ?? ????
New features and extensions
- Added full support of true subwindows to the Mac OS X platform.
Window nesting to any depth is possible. An Fl_Gl_Window window or
subwindow can contain Fl_Window's as subwindows.
- Added the Fl_Shared_Image::scale(width, height) function which gives
a shared image its own drawing size, independently of the size of the
underlying image. This improves much image drawing on high resolution
surfaces such as Laser printers, PDF files, or Apple retina displays.
Other improvements
- The Mac OS X platform no longer uses the deprecated AGL
(Apple GL library) to draw openGL data. Instead, it uses standard
cocoa APIs. This allows FLTK to support drawing GL scenes at high
resolution when an Fl_Gl_Window is mapped to a 'retina' display.
- fl_read_image() now captures all pixels within the rectangle
described by its arguments, whether they belong to a GL scene
or not (STR #3142). It also captures subwindows of GL windows.
- Fl::delete_widget() now hides the widget or window immediately
(i.e. when called) - only destruction is delayed as before.
- The PostScript code output when printing images under Linux/Unix
is quite smaller due to use of lossless compression techniques.
- The Linux/Unix printer dialog now uses BSD-style printing commands
(lpr/lpq) when SystemV-style commands (lp/lpstat) are not available.
Bug fixes
- Reading of .pbm image files is fixed: 1 is now interpreted as
black, and images of width a multiple of 8 are correctly read.
Note: if you relied on the faulty behavior you may need to fix
your image files.
- Restored window background drawing, particularly the 'plastic'
scheme's background (STR #3059). This was a regression since
FLTK 1.3.0.
CHANGES IN FLTK 1.3.3 RELEASED: Nov 03 2014
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.
Other improvements
- 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).
Bug fixes
- 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()
(STR #3028).
- 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).
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
windows
- 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
o Deprecated:
> 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
o Deprecated:
> 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
CHANGES IN FLTK 1.3.2 RELEASED: Dec 12 2012
- Removed unnecessary drawing calls (STR #2898)
- Fixed regression in FLTK 1.3.1 for unbundled Mac OS FLTK applications
that did not appear in dock nor have a menu bar (STR #2890).
- Fl_Table::clear() now calls table->clear() for consistency. (STR #2889)
- Fixed Fl_Scroll widget that fails under Mac OS X 10.8 and Retina
display (STR #2887).
- Prevents scrollbars from drawing when widget is sized too small
to be visible (STR #2886).
- Documented how to make a Mac OS X FLTK application launchable
by dropping files on its icon.
- Fixed a Mac-specific issue that appeared with OS 10.8 (Mountain Lion):
long delay before opening when the application is started by dragging
a file on the application icon.
- Fixed use of PNG image from in-memory data (STR #2884).
- Added static Fl_RGB_Image::max_size(size_t) to limit the maximum
memory size allowed to RGB images (STR #2881).
CHANGES IN FLTK 1.3.1 RELEASED: Nov 06 2012
- Fixed utf_strncasecmp and utf_strcasecmp
- Moved all inline constructors into source file to avoid bad DLLs
- Fixed Fl_Widget::copy_label() and Fl_Window::copy_label() when
called with the old label() (STR #2836)
- Fixed Fl_Input_::maximum_size() documentation and replace() method
to honor maximum_size() as number of allowed characters (STR #2747).
- Fixed a potential crash if Fl_Double_Window::flush() was called
before show()
- Fixed regression (in FLTK 1.3.0) that could clear a radio
button by using the keyboard (space or shortcut) (STR #2748)
- Fixed fl_pie() drawing too small on X11 (STR #2703)
- Fixed Fl_Menu issue with unusual menu flags (STR #2680)
- Fixed Windows DLL import of fl_xid() (STR #2670)
- Added Fl::screen_work_area() functions that compute the work area
of a screen. These functions improve the positioning of menus.
Changed Fl::x(), Fl::y(), Fl::w(), Fl::h() functions
to return the origin and size of the work area of the main screen
(STR #2695 + 2697)
- Created the FL_SCREEN_CONFIGURATION_CHANGED event that is triggered
when a screen is added, removed, moved or when resolution is changed
(STR #2600)
- Improved the description of page size and orientation by
Fl_PostScript_File_Device.
- Added support for horizontal wheel movement under X11 and Windows
Vista and above (STR #2644).
1.3.1 ABI FEATURES
(To enable the following ABI features, put: #define FLTK_ABI_VERSION 10301
at the top of your FL/Enumerations.H and rebuild FLTK and your app)
- Fl_Tree optimized to support large trees (eg. 100k items):
Added _next_sibling and _prev_sibling to Fl_Tree_Item class,
and support methods.
CHANGES IN FLTK 1.3.0 RELEASED: Jun 16 2011
New Features
- Added UTF-8 Unicode support throughout FLTK and Fluid
- Added Fl_Tree widget for hierarchical views
- Added Fl_Table widget for widget layout
- Added Fl_Native_Filechooser as a widget and global options
- Added printing support (Fl_Printer class and friends) for native
printing on Windows and Mac OS X, PostScript printing on X11
with CUPS or lp, and PostScript file output on all platforms
- Added basic Fl_Device abstraction layer for all drawing functions
- Moved OS X code base to the more modern Cocoa toolkit thanks
to the awesome work of Manolo Gouy (STR #2221)
API and ABI Compatibility to FLTK 1.1.x
- All strings are expected to be in UTF-8 Unicode encoding
- Replaced Fl_Scroll::position(int,int) with scroll_to(int,int)
to avoid overriding Fl_Widget::position(int,int) (STR #1303)
- Although FLTK 1.3 maintains source code compatibility as good
as possible, the binary interface changed considerably.
- Updated the bundled libpng to v1.5.1 (released Feb 3, 2011)
- Updated the bundled libjpeg to v8c (released Jan 16, 2011)
- Updated the bundled zlib to v1.2.5 (released Apr 19, 2010)
API Enhancements and Changes
- Changed font index to 32 bit
- Changed font size to 32 bit
- Changed widget coordinates to 32 bit
- Corrected const methods of Fl_Text_{Buffer|Display|Selection}
to be declared const, corrected an Fl_Text_Buffer attrib. typo
- All draw() methods of widgets are now protected (STR #2142).
- Changed Fl_Group::clip_children() to public (STR #2017)
- Changed socket library to winsock2 (ws2_32.dll) instead of
wsock32.dll for Windows. The dll is now loaded dynamically only
if/when needed.
- Changed hide() and show() methods. They are now virtual from
Fl_Widget.
- Added new label and image alignments (STR #2269)
- Added global UI options (STR #2471)
- Added class Fl_Widget_Tracker to simplify safe handling of widget
deletion in callbacks. This is used in Fl_Widget::do_callback()
to prevent accessing widgets after deletion in the callback.
- Added sorting to Fl_Browser_ (STR #2113)
- Added new method client_area() for easier positioning of children
in Fl_Tabs (STR #2480)
- Added interface to set color chooser mode (STR #2407)
- Added Fl_Menu_::find_item by callback
- Added loading jpeg images from memory
- Added support for shortcuts for Fl_Input_, Fl_Value_Input, and
Fl_Text_Display derived widgets (STR #1770)
- Added Fl_Menu_ methods: insert(), find_index(), clear_submenu()
- Hotspot behavior of fl_message() and other common dialogs is now
optional (STR #2561).
- Common dialogs like fl_message() and fl_ask() can now have a window
title (STR #2562).
IDE Support and Command Line Build Options
- FLTK now supports Apple Xcode 3, MS VisualC 2008, and
MS VisualC 2010. MS VisualC 6 support is maintained as a
compatibility base for VisualC.net, etc. . FLTK continues
to support configure/make and improved CMake build files.
- Added step by step README's for MSWindows, OS X, and four
Linux distros.
- Added "ide" subdirectory for all IDE support files
- Added template to generate new projects with Xcode.
- Added --enable-cairo and --enable-cairoext configure options.
- redesigned CMake files (STR #2317).
- The new configure option --enable-x11 (lowercase 'x') enables
Cygwin builds under Windows (with --enable-cygwin) to use X11
instead of GDI drawing (STR #2147, #2183) and is ignored otherwise.
- Changed "fltk-config --post foo" to create an application
bundle rather than attaching a resource fork.
- Changed default for configure option --with-links for common
misspellings on case sensitive file systems like Unix/Linux.
The new default is --without-links; use --with-links on
Unix/Linux only if you need the links (e.g. lowercase '.h')
Fluid
- Added argument-less constructor in Fluid Widget Class
- Added jpeg support to Fluid image() element
- Added binary data type to Fluid
- Empty functions in Fluid no longer create an
implementation (STR #2259)
- Fixed internationalisation of menus using Fluid (STR #2246)
- Fixed menu item counting issue in Fluid (STR #2322)
- Fixed lost top item in Fluid's tree browser (STR #2233)
- Fixed Fluid dependency on X11 (STR #2261)
- Fixed Fluid textcolor output (STR #1992)
- Fixed wrong default value of Fl_Spinner in Fluid (STR #1991)
Documentation
- Added documentation for event delivery (STR #1983)
- Added Fl_Scroll::bbox() documentation (STR #1893)
- Updated documentation for Fl_Input_
- Updated Copyright dates to 2010 (STR #2036)
- Updated mirror sites in documentation (STR #2220)
- Fixed documentation for Fl_Progress (STR #2209)
- Fixed documentation (added missing COMCTL32.LIB dependency)
Other Improvements
- Added drag'n'drop support for Fl_Text_*
- Added visual feedback for button shortcuts (STR #2372)
- Added callback when double-clicking file in a file chooser
(STR #2346)
- Added alternative Xft font names (STR #2215)
- Added mouse!=0 check in Fl_Glut_Window::handle (STR #2381)
- Added indexing to Fl_Preferences
- Added OS X cursor control to Fl_Input (STR #2169)
- Added menu shortcut alignment for OS X
- Added drop box to UTF-8 test that will show the UTF-8 encoding
for the first dropped character
- Added flexible gap size for text buffer (STR #2046)
- Added clarification to Fl_GL_Window mode function (STR #1945)
- Added alternative text input awareness on OS X
- Improved handling of composed keys in OS X 10.5 and up
- Improved stability of fl_read_image (STR #2021)
- Much faster fl_read_image() for Windows (STR #2387).
- Improved support for faulty X11 clients (STR #2385)
- Integrated default menu into Demo test app
- Replaced _WIN32 symbols that had come with UTF-8 and the
new Fl_Table widget with WIN32
- Widgets now remove stale entries from the default callback
queue when they are deleted (STR #2302)
- Managing all Widget flags in a single location now (STR #2161)
- File chooser preview now recognizes UTF-8 encoded
text files (STR #2218)
- Setting a default font for Xft (STR #2216)
- Restructured the unittest application
- Fl_Preferences.H now doesn't include windows.h any more
(Windows only, STR #2173).
- Fl_Window::draw() now doesn't reset its x/y-coordinates to 0
anymore before drawing itself and its children.
- Fl_Help_View handles HTML2 font color specification (STR #890)
- Widgets now remove themselves from their parent group (if any),
when destroyed (STR #1894)
- Changed Fl_Group and Fl_Scroll to resize themselves before
resizing their children (STR #2032)
Bug Fixes
- Fixed potential crash in fl_xid() on Linux (STR #2635)
- Fixed keyboard navigation in fl_choice() (STR #2591)
- Fixed alpha blending under X11 when line data size != 0 (STR #2606)
- Fixed Fl_Tabs selection border drawing, if tabs are at the bottom
of the widget (STR #2480)
- Fixed Compiling with mingw-w64 (STR #2308).
- Fixed crashes when detecting illegal UTF-8 sequences
in Fl_Text_* widgets (STR #2348)
- Fixed Fl_Text_Display Tabulator calculations (STR #2450)
- Fixed file access code to use UTF-8 strings (STR #2440)
- Fixed ARM Unicode cross compilation issue (STR #2432)
- Fixed xclass support for Fl_Window (STR #2053)
- Fixed Caps Lock handling in X11/XIM (STR #2366)
- Fixed handling of missing fonts in Xft (STR #2355)
- Fixed OpenGL hide/show issue in OS X (STR #2260)
- Fixed File Chooser preview hang if a device was choosen
- Fixed blinking of selection when the mouse was dragged
outside of the Fl_Text_* widget
- Fixed Unicode support for Fl_Text_* widgets
- Fixed menu and shortcut handling (STR #2243)
- Fixed fltk-config to give --libs on one line (STR #2408)
- Fixed outside label redraw damage areas (STR #2436)
- Fixed compile errors when HAVE_LIBJPEG was not defined
(STR #2382)
- Fixed special handling for ISO back-tab keycode (STR #2369)
- Fixed static allocation in Fl_Tabs (STR #2370)
- Fixed Fl_Widget::measure_label() to const (STR #2406)
- Fixed unbalanced Windows OleInitialize/OleUnitialize calls
when loading/unloading the FLTK dll (STR #2417)
- Fixed X11/XDBE double buffering (STR #2152, #2197)
- Fixed menu and tooltip window animation bug under X11 (compiz)
by setting an appropriate window type (STR #2082)
- Fixed max. fd calculation, if USE_POLL is enabled (STR #2324)
- Fixed clipping for offscreen rendering (OSX, STR #2330)
- Fixed possibility of wrong flags() in Fl_Window::iconlabel()
(STR #2161)
- Fixed Scrollbar events when max is less than min (STR #2283)
- Fixed crash in test/Editor when freeing buffer
too soon (STR #2294)
- Fixed Fl_Preferences Cygwin wide character bug (STR #2164)
- Fixed sorting in Fl_Browser - last item would not
be sorted (STR #2300)
- Fixed window levels in OS X Cocoa (STR #2316)
- Fixed a buffer overflow in fl_utf8from_mb() (STR #2279)
- Fixed a Windows GDI leak when testing alpha blending capabilities
- Fixed crashes for recursive common dialogs (STR #1986, #2150)
- Fixed a name conflict with new (VS 2008 Express) winsock2.h
versions and another conflict that produced compile errors
with VS 2008 Express (STR #2301)
- Fixed all color related calls to Fl_Color type (STR #2208)
- Fixed Fl_Choice contrast with light-on-dark settings (STR #2219)
- Fixed X server "lock", if a modal dialog window is opened
while a menu is active (STR #1986)
- Fixed Windows compile bug with "#define USE_COLORMAP 0"
(STR #2241)
- Fixed glibc 2.10 compiler problems (Fedora 11 and others)
with scandir() and strchr() (STR #2222)
- Fixed OpenGL shared context handling (STR #2135)
- Fixed gray-scale images with alpha channel (STR #2105)
- Fixed unexpected shortcut behavior for Win32 (STR #2199)
- Fixed fl_draw_image to obey the alpha channel (OS X only)
- Fix for multiple popups, when dragging and calling fl_alert()
and friends from the callback (STR #2159)
- Fixed control key keycodes with modifiers on OS X
- Fixed bad system menu handling in OS X (STR #2153)
- Fixed File Input mouse pointer dragging (STR #2181)
- Fixed 'del' keycode on OS X
- Fixed OS X support for sending and receiving dnd data as UTF-8
- Fixed Copy/Paste operations with UTF-8, UTF-16 support and
fltk1.1 compatibility. (STR #2104, 2121).
- Fixed fl_set_spot() for Windows (STR #2101)
- Fixed callback that would not be called when shortcut was used
with radio and toggle buttons in default FL_RELEASE mode.
- Fixed a problem with TrackMouseEvent() (Windows only) that would
generate wrong FL_LEAVE events with subwindows. TrackMouseEvent
is now enabled by default (it was disabled for GNU compilers).
It can be disabled by defining NO_TRACK_MOUSE.
Improved test/subwindow.cxx (STR #2079)
- Fixed menu position close to screen border (STR #2057)
- Fixed adding an idle handler during a draw() call (STR #1950)
- Fixed first modifier key event (STR #1952)
- Fixed Fl_Scroll inside Fl_Scroll (STR #265)
Removed Features
- Removed Watcom compiler support because it was introduced in
1.1.6 as a partial solution and never completed.
- Removed an XForms compatibility "feature" that prevented the
down array of Fl_Menu_Button from drawing (STR #2141).
- Removed support for gcc 2.x (or older)
- Removed redundant Fl_Group casts
CHANGES IN FLTK 1.1
See CHANGES_1.1
CHANGES IN FLTK 1.0
See CHANGES_1.0