fltk/CHANGES

1335 lines
52 KiB
Plaintext

CHANGES IN FLTK 1.1.0b8
- MacOS: fixed iBook keyboard handling, moved
remaining message handling to Carbon, added mouse
capture support, added timer support, added overlay
support, fixed doublebuffering side effects.
- The configure script wasn't using the -fpermissive or
-fno-exceptions options with GCC.
- Fl_JPEG_Image and friends didn't set the depth if the
image file couldn't be loaded; since Fl_RGB_Image
didn't check for this, it could fail when displaying
or copying these images.
- filename_absolute() did not always free its temporary
buffer.
- filename_relative() did not do a case-insensitive
comparison under MacOS, OS/2, and Windows.
- filename_isdir() didn't properly handle "D:L" under
WIN32.
- Fl_Shared_Image::get() did not check to see if the
image could not be loaded.
- Fixed Fl_Widget::~Fl_Widget() so that "delete widget"
will remove the widget from the parent. Otherwise
the Fl_Group destructor will try to access freed memory...
- Fl_Help_View didn't clear the line array in the
Fl_Help_Block structure; this causes erratic
formatting for some pages.
- The font and size members of Fl_Help_Block were never
used.
- The threading functions (Fl::lock() and friends) were
not exported under WIN32.
- The Fl_Text_Display destructor deleted the scrollbars
twice...
- Fl_Help_View didn't reset the horizontal scroll
position when showing a new page.
- Fl_Pack now allows any child widget to be the
resizable() widget, not just the last one.
- MacOS: opaque window resizing, all events except
Mac menus are now handled using Carbon, window
activation fixed, GL_SWAP_TYPE default changed to
make gl_overlay work.
- Fl_Help_View::resize() didn't resize the horizontal
scrollbar.
- MacOS: list all fonts, fixed clipping and mouse
pointer bugs.
- The Fl_File_Chooser widget now uses hotspot() to
position the dialog under the mouse pointer prior to
showing it.
- Added a configure check for *BSD - use -pthread option
instead of -lpthread.
- Fl_Text_Display could get in an infinite loop when
redrawing a portion of the screen. Added a check for
the return value from fl_clip_box() so that the
correct bounding box is used.
- Removed the Fl_Mutex and Fl_Signal_Mutex classes from
the threads example, since they weren't being used
and apparently are not very portable.
- Fl_Help_View now ignores links when the link callback
returns NULL, and displays a sensible error message
when an unhandled URI scheme is used (e.g. http:,
ftp:)
- Fl_File_Icon::load_system_icons() no longer complains
about missing icon files, just files that exist but
can't be loaded.
- FLUID didn't list the plastic box and frame types.
- Now hide the tooltip window whenever a window is
hidden. Otherwise a tooltip window could keep an
application running.
- Updated FLUID to only append a trailing semicolon to
code lines in a callback (so "#include" and friends
will work...)
- The Fl_Color_Chooser widget now supports keyboard
navigation.
- Fixed button and valuator widgets to call Fl::focus()
instead of take_focus().
- Tweeked the radio button drawing code for better
circles with different boxtypes.
- The Fl_File_Chooser widget did not provide a shown()
method, and fl_file_chooser() and fl_dir_chooser() did
not wait on shown(); this would cause them to return
prematurely if you switched desktops/workspaces.
- Cosmetic changes to plastic boxtypes. Now look much
better for large areas and the buttons now have a much
greater "3D" feeling to them.
- Added new Fl::draw_box_active() method so that
boxtypes can find out if the widget they are drawing
for is active or not.
- Fl_Button and its subclasses did not redraw the parent
when the boxtype was FL_NO_BOX and they lost keyboard
focus (the parent redraw clears the focus box.)
- Fixed the example program makefile - wasn't building
the mandelbrot and shiny demos right.
- Fl::set_font(Fl_Font, Fl_Font) was not implemented.
- Fixed the documentation Makefile commands; was not
using the fltk.book file for some reason...
CHANGES IN FLTK 1.1.0b7
- More documentation updates...
- Mac OS X support works 95%
- The Fl_Window::hotspot() off-screen avoidance code was
commented out.
- Mac OS X uses mostly Carbon event handling to support
Mousewheel, three buttons, all modifier keys, etc.
- Updated paragraph 4 of the FLTK license exceptions;
there was some question about the requirement to show
that a program uses FLTK, which is required by section
6 of the LGPL. The new exemption specifies that
inclusion of the FLTK license is not required, just a
statement that the program uses FLTK.
- Fl_Button::handle() was calling take_focus() for both
FL_PUSH and FL_DRAG.
- File and memory fixes for Fl_GIF_Image, Fl_PNG_Image,
Fl_PNM_Image, Fl_Shared_Image, Fl_Tiled_Image, and
Fl_XBM_Image.
- filename_match() didn't handle backslashes properly
under WIN32, and didn't use a case-insensitive
comparison under MacOS X.
- The Fl class was missing access methods for the
FL_MOUSEWHEEL event values - Fl::event_dx() and
Fl::event_dy().
- The default help string didn't include the -nokbd
option.
- "make uninstall" didn't uninstall the static OpenGL
widget library.
- Mac cursor shapes added...
- Fl_Text_Display would lockup when all text was
deleted; for example, when running the editor
demo, you couldn't load a second file.
- Added Fl::lock() and friends from FLTK 2.0 to
support multi-threaded applications; see the
"threads" demo for an example of this.
- Fl_Check_Button and Fl_Round_Button now use the
FL_NO_BOX box type to show the background of the
parent widget.
- Tweeked the plastic boxtype code to draw with the
right shading for narrow, but horizontal buttons.
- Fl_Progress now shades the bounding box instead of
drawing a polygon inside it.
- Fl::warning() under WIN32 defaults to no action. This
avoids warning dialogs when an image file cannot be
loaded.
- Some Win32 drivers would draw into wrong buffers
after OpenGL mode change
- The file chooser would cause a segfault if you
clicked in an empty area of the file list.
- Fl_File_Icon::labeltype() would cause a segfault
if the value pointer was NULL.
- Fl_File_Icon::load_image() could cause segfaults
(NULL data and incrementing the data pointer too
often.)
- Fl_File_Icon::load_image() now handles 2-byte
per color XPM files.
- Some Win32 drivers would draw into wrong buffers
after OpenGL mode change.
- Message handling and Resources for MacOS port.
- Fl_Help_View could get in an infinitely loop when
determining the maximum width of the page; this
was due to a bug in the get_length() method with
percentages (100% width would cause the bug.)
- Don't need -lgdi32 for CygWin, since -mwindows
does this for us.
- The WIN32 event handler did not properly handle
WM_SYNCPAINT messages.
- Fl_Tabs now uses the boxtype exclusively to draw
both the tabs and surrounding box, so alternate
box types actually work and the look is a little
nicer.
- Fixed the drawing of large areas with the new
plastic boxtypes.
- Updated the Visual C++ demo projects to use fluid
to generate the GUI files as needed.
- The demo program didn't load the right menu file
when compiled for debugging under WIN32.
- Added plastic box types to forms demo.
- Added mousewheel to keyboard demo.
- The Fl_Text_Editor widget caused an infinite loop
when it received keyboard focus.
- filename_isdir() didn't properly handle drive letters
properly; WIN32 needs a trailing slash for drive
letters by themselves, but cannot have a trailing
slash for directory names, go figure...
- The Fl_Text_Buffer and Fl_Text_Display classes did not
initialize all of their members.
- fl_normal_label() had a totally redundant set of
if/else tests, which the new code handles all from
fl_draw().
- The Fl_File_Chooser dialog contained two hotspots.
- The fl_draw_pixmap() function didn't free the 2-byte
color lookup table properly (delete instead of
delete[]).
- fl_draw() reset the text color under WIN32, causing
bitmaps to draw incorrectly.
- Fl::get_font_sizes() is now implemented under WIN32.
- Fl_Text_Display now uses the same default colors for
selection and text as Fl_Input_ and friends.
- Changed the default line scrolling in Fl_Text_Display
to 3 lines for the mouse wheel and scrollbar arrows.
CHANGES IN FLTK 1.1.0b6
- Documentation updates...
- The configure script now works within the CygWin
environment.
- Tooltips are now enabled by default, but are not
re-enabled when calling the Fl_Widget::tooltip()
method.
- Added new Fl::version() method to get the current
FLTK library version (for shared libraries/DLLs)
- Added new Fl::event() method to get the current
event that is being processed.
- Added new fl_beep() function to do audible
notifications of various types.
- Added new Fl_GIF_Image, Fl_JPEG_Image, Fl_PNG_Image,
Fl_PNM_Image, Fl_XBM_Image, and Fl_XPM_Image classes.
- Added new Fl_Shared_Image class, a la FLTK 2.0.
- Added new Fl_Tiled_Image class for tiled backgrounds.
- Added new copy(), desaturate(), inactive(), and
color_average() methods to the Fl_Image classes.
- Added a horizontal scrollbar to the Fl_Help_View
widget.
- Added new FL_PLASTIC_{UP/DOWN}_{BOX/FRAME} boxtypes
for a more "modern" look (sort of a cross between KDE
2.2 and Aqua.)
- Fl_Float_Input and Fl_Int_Input no longer accept
pasted text that is not a floating point or integer
value. Pasted numbers now replace text in these
widgets.
- Implemented the Fl_File_Icon::load_png() method.
- The Fl_File_Icon::load_system_icons() method now
supports KDE 2.x icons.
- Fixed PNG support in Fl_Help_View.
- Removed the "Microsoft" mode button from the menubar
demo.
- The browser demo now makes sure that the input field
contains a number.
- The Fl_Browser::make_visible() method now range checks
the input.
- Updated the fl_draw() and fl_measure() methods to
accept an optional draw_symbols argument, which
controls whether symbols are drawn in the text.
- Added new Fl::visible_focus() methods to control
whether the focus box is drawn.
- The focus box is now drawn using the contrast color.
- Fl_Repeat_Button didn't accept keyboard focus.
- Added new Fl::visible_focus() method and standard
"-kbd" and "-nokbd" options in Fl::args() processing
to control whether keyboard focus is shown and handled
by non-text widgets.
- The wrong tooltip could be shown if the user moved the
mouse over adjacent widgets with tooltips.
- The drop-down button on Fl_Choice widgets was not
limited in width.
- Tooltips could appear off the screen.
- Mouse wheel events are now sent to the focus widget
first, then to any other interested widget.
- The Fl_RGB_Image class now supports images with an
alpha channel. Images are currently drawn using
"screen door" transparency... See the "image" demo
for an example.
- Added new fl_create_bitmask() and fl_delete_bitmask()
functions that create bitmap objects for masking and
bitmap drawing.
- Was sending FL_RELEASE events for buttons 4 and 5
under X11, which are only for FL_MOUSEWHEEL.
- Fl_Help_View now supports the EM and STRONG elements.
- Didn't do callbacks when changing tabs via keyboard.
- FLUID didn't write tooltip strings to the message
catalog file.
- Fl_File_Icon now uses Fl_Shared_Image to load icon
images; the load_png() and load_xpm() methods have
been replaced by a single load_image() method.
- Fl_File_Icon::load_system_icons() now does a better
job of finding KDE icons.
- Now use Fl::warning() and Fl::error() in place of
printf's in some of the newer widgets.
- The default behavior of Fl::error() is now to display
an error but not to exit; Fl::fatal() still exits.
- FLUID now uses the Fl_Shared_Image class, so FLUID-
generated GUIs can embed any of the supported image
file formats.
- New filename_relative() function to convert an
absolute filename to a relative one.
- Updated the filename_absolute(), filename_expand(),
and filename_setext() functions to take the
destination string size, with inline functions for the
old FL_PATH_MAX size.
- fl_file_chooser() and fl_dir_chooser() now return a
relative path.
- Fl_Help_View now supports all ampersand escapes.
CHANGES IN FLTK 1.1.0b5
**** NOTE: DUE TO CHANGES IN THE WIDGET CLASSES, ****
**** YOU MUST RECOMPILE ALL SOURCE FILES ****
**** THAT USE FLTK!!! ****
- All FLTK color values are now 32-bits and support
both the legacy 8-bit color values as well as 24-bit
RGB values (0xRRGGBB00 for 24-bit RGB, 0x000000II
for indexed color).
- Fl::set_boxtype() and fl_internal_boxtype() now keep
track of when a boxtype is changed; this allows you to
override the "special" boxtypes without references to
those boxtypes causing them to be reset.
- Fl_Help_Func now takes a Fl_Widget pointer as well as
a pathname.
- Added code to support FL_KEYUP events.
- Focus did not return to the Fl_Text_Display and Editor
widgets when scrolling and then clicking inside the
editor window.
- Now set the line size of the vertical scrollbar in the
text editor to 1.
- The symbols demo didn't show the strings needed to
show the corresponding symbol (the label string was
not quoted...)
- FLTK should now compile with Cygwin cleanly.
- Shortcut changes were not being saved by FLUID.
- FLUID didn't write the deimage() static data.
CHANGES IN FLTK 1.1.0b4
**** NOTE: DUE TO CHANGES IN THE FL_WIDGET CLASS, ****
**** YOU MUST RECOMPILE ALL SOURCE FILES ****
**** THAT USE FLTK!!! ****
- Updated the flags_ member of Fl_Widget to be an
integer instead of uchar, to support the new
FL_OVERRIDE flag for Fl_Window.
- The parent() method of Fl_Widget now uses pointers to
Fl_Group instead of Fl_Widget.
- Fl_Window now provides the FLTK 2.0 "override()" and
"set_override()" methods for windows.
- Added a configure check (and warning) for GCC 3.0.x.
- Updated the configure script to check for the
png_set_tRNS_to_alpha() function.
- Updated the config.h files for all platforms for the
image and FLTK documentation defines.
- Updated the makeinclude files for all platforms to
match the current makeinclude.in file.
- FLUID would crash if you cleared an image for a
widget.
- Fl_Help_View::add_image() did not initialize the image
member of the base (unscaled) image.
- Fl_Help_View didn't support A elements with both a
NAME and HREF attribute - the HREF was ignored.
- Miscellaneous compile warning fixes.
- Tooltips were being reset by Fl::belowmouse(), which
caused problems with the FLUID main window (flashing
tooltip windows and serious problems with KDE 2.2)
- The editor demo had the save and discard button
actions reversed.
- The Fl_Help_View widget now uses
png_destroy_read_struct() if the older
png_read_destroy() function is not available.
- The WIN32 DLL library now includes the OpenGL widgets.
This is a simpler solution for the export/import
dillemma under WIN32, as OpenGL and non-OpenGL symbols
need to be exported at different times with the
separate library scheme. Since OpenGL is standard
under Windows, this is less of a problem than under
UNIX...
CHANGES IN FLTK 1.1.0b3
- The top-level makefile did not include the makeinclude
file, causing the fltk-config installation commands to
fail.
- The fl_file_chooser.cxx source file conflicted with
Fl_File_Chooser.cxx under Windows. Similarly, the
fl_file_chooser.H header file conflicts with the
Fl_File_Chooser.H header file.
- Now save and restore the GDI pen object when
responding to WIN32 paint messages.
- Documentation updates from A. Suatoni.
CHANGES IN FLTK 1.1.0b2
- New fltk-config script.
- Fixed image/text label handling; in b1 the label
needed a non-blank text string to display the image.
This bug also caused all sorts of crashes and display
problems.
- Added new filetype() method to Fl_FileBrowser to allow
for file or directory browsing.
- Fixed the drawing of the focus box around
Fl_Return_Button.
- Fixed menu item measurement bug (wasn't initializing
image pointers to 0...)
- Radio and checkbox menu items now draw with the new
style (round radio buttons with dots and square check
buttons with check marks.)
- Improved the appearance of Fl_Check_Button.
- Improved the Fl_HelpView table formatting code; now
dynamically sizes the table columns, and supports
COLSPAN.
- The FLUID keyboard shortcuts now work as expected
(CTRL-C copies, SHIFT-CTRL-C writes code, etc.)
- The FLTK_DOCDIR environment variable can now be
used to tell FLUID where to find the on-line
documentation files.
- FLUID now supports image labels in addition to text
labels + text over image alignment.
- FLUID now supports tooltips.
- The widget panel in FLUID is now tabbed, a la FLTK
2.0.
- The FLUID pixmap destructor tried to free 1 too many
lines of image data.
- FLUID now provides on-line help.
- Changed Fl_FileXYZ to Fl_File_XYZ.
- Changed Fl_HelpXYZ to Fl_Help_XYZ.
- Tooltip fixes for Fl_Browser_, Fl_Choice, and Fl_Input_.
- Added tooltips to FLUID, help dialog, and file chooser.
- Now load system icons in FLUID.
CHANGES IN FLTK 1.1.0b1
- Added new image() and deimage() methods to support
image + text labels more easily.
- Added new alignment bit FL_ALIGN_TEXT_OVER_IMAGE.
- Added tooltip support using Jacques Tremblay's tooltip
patch.
- Added keyboard navigation to all widgets.
- Added support for mouse wheels using the new
FL_MOUSEWHEEL event type. Get the mouse wheel
movement values from Fl::e_dx (horizontal) and
Fl::e_dy (vertical).
- Added the Fl_Check_Browser, Fl_FileBrowser,
Fl_FileChooser, Fl_FileIcon, Fl_HelpDialog,
Fl_HelpView, Fl_Progress, and Fl_Wizard widgets from
the bazaar.
- Added 2.0 Fl_Text_Display and Fl_Text_Editor widgets
based on NEdit.
- The Fl_Choice widget now looks more line a combo box
than a Motif option menu.
- Moved the OpenGL widgets into a separate library
called fltkgl - this eliminates shared library
dependencies on OpenGL when no OpenGL functionality is
used/required.
- FLUID now supports the new Fl_CheckBrowser,
Fl_FileBrowser, Fl_FileIcon, Fl_HelpView,
Fl_Text_Display, Fl_Text_Editor, and Fl_Wizard
widgets.
- Updated configure stuff to support shared libraries
under AIX (link to -lfltk_s)
- Symbol labels can now contain regular text.
- FLUID now supports relative filenames for the source
and header files you generate.
- Fl_Menu_Item::add() didn't use the flags that were
passed in.
- Fixed a bug in Fl_Scrollbar - clicking in the "trough"
of the scrollbar would move the scroller in the wrong
direction.
- Made the Forms pixmap parameter const to match the
Fl_Pixmap.H definitions.
- Changed the Fl_Pixmap constructor to use the explicit
keyword which should work for all C++ compilers.
- Fl_Menu_add of a menu item with the same name as an
existing submenu title would mess up by replacing that
menu title, it now adds a new item.
- Fl_Menu::add() of text starting with '/' to a menu is
assummed to be a filename. So "/foo/bar" creates a
single menu item. You can also put filenames into
submenus by doing "submenu//foo/bar", this will create
a submenu called "submenu" with an item "/foo/bar".
Menu items starting with "\_" will insert an item
starting with '_' rather than a divider line. These
changes make the menus compatable with fltk 2.0.
- Another little fix for the BoXX OpenGL overlays.
- Fl_Gl_Window no longer blanks the mouse pointer on
WIN32 unless an OpenGL overlay is being used. This
should make non-overlay displays faster when a cursor
is set.
CHANGES SINCE FLTK 1.0.10
- CHANGED THE DEFAULT RUN-TIME LINKING TO "MULTITHREADED
DLL". You'll need to change your project settings to
use this as well or you'll get errors.
- Added new --disable-gl option to configure script.
- Added new const const pointer versions of pixmap
functions to eliminate an annoying pointer warning
message that was generated by the Sun and other C++
compilers.
- Eliminated all "var hides class::var" warnings.
- Eliminated all "string literal converted to char *"
warnings.
- OS/2 updates from Alexander Mai.
- Tidied up the HTML documentation to be more standards
compliant.
- Compiling with -DBOXX_BUGS will work around some
problems with the newest X drivers that BoXX delivers,
the problems all affect use of Overlays for normal X
drawing and OpenGL drawing. Normal compilation is
unchanged.
- The file chooser buttons use user_data() rather than
the label to decide what to do, allowing the label to
be somewhat cleaner.
- Selection color on X changed to blue, to match what
happens on Windows now.
- Added support for AIX (static library only).
- Added support for SunOS 4.x
- Now process WIN32 WM_ACTIVATEAPP message to reset the
key and button states in Fl::e_state.
- Fl_has_idle only tested N-1 callbacks and missed one.
- Restored WM_SYNCPAINT handling under WIN32; this fixed
a refresh bug under some versions of Windows.
- Check for OpenGL headers before checking to see if
OpenGL is supported. This should eliminate compile
errors due to missing non-FLTK header files...
- Add -D_INCLUDE_POSIX_SOURCE option when compiling with
the HP compilers.
- Replaced remaining _WIN32 symbols with WIN32
- Removed reference to unused GL/glu.h header file, which is missing on
some Linux systems.
- Fl_Gl_Window has a new method to allow you to get and set the context:
void Fl_Gl_Window::context(void*, int destroy = 0)
void* Fl_Gl_Window::context() const;
Return or set a pointer to the GLContext that this window is
using. This is a system-dependent structure, but it is portable to
copy the context from one window to another. You can also set it to
NULL, which will force FLTK to recreate the context the next time
make_current() is called, this is useful for getting around bugs in
OpenGL implementations.
If destroy_flag is true the context will be destroyed by fltk when
the window is destroyed, or when the mode() is changed, or the next
time context(x) is called.
- Some cleanup of Fl_Gl_Choice to move most of the system dependent
#ifdefs into Fl_Gl_Choice.cxx.
- Fl_Gl_Window does not set drawbuffer(BACKBUFFER) for
single-buffered windows.
- Fl_Input::replace(...) correctly updates the display
if the replaced region does not include the mark,
point, or selected region.
- Added Fl::add_check(...), Fl::remove_check, and
Fl::has_check. These are similar to idle callbacks but
are only called just before it waits for new events.
They can be used to watch for changes in global state
and respond to them.
- "accu-timer": some changes to repeat_timeout that seem
to make it accurate on Unix and WIN32 at speeds up to
500000 timeouts/second (and 700000 on Linux), and
within about .001% as accurate as the system clock.
- Fix to Fl_Valuator::step() by Guillermo Andrade.
- Fixed the FLUID write-menu bug introduced in 1.0.10
- Fl::flush() now calls GdiFlush() under WIN32 to
ensure that all graphics are drawn.
- fl_curve() now uses a much better algorithim to figure
out how many pieces to cut the curve into.
- FLUID now uses GetTempPath() under WIN32 to determine
where to store the clipboard.
- Right-ctrl does not delete selected text in Fl_Input,
until you type a composed character.
- Added simple FLTK and FLUID manual pages.
- Fl_Gl_Window leaked memory under WIN32.
- The colbrowser demo was missing an include file when
compiled under OS/2.
CHANGES SINCE FLTK 1.0.9
- Added a strcasecmp() function to FLUID; AIX doesn't
have it.
- Bug #115509: Fl_Scroll not repainting background.
- Updated the configure script and makeinclude.in file
to work with the Sun PRO compilers.
- Disabled the WIN32 async socket select code by default:
it doesn't seem to work anymore...
- Fl::below_mouse() was incorrectly clearing e_is_click;
this prevented any double-clicks from getting
through...
- No longer clear Fl::keysym on every event, this makes
better back compatability and fixes Win2000
- Fluid now restores which tab in an Fl_Tabs was
selected when loads .fl files.
- Hack to fix the annoying "raise another application
when a modal window is closed" problem on WIN32.
- Fl_Tabs now draws the background behind the tabs.
- Fl::set_fonts() on WIN32 fixed to work before the
first window is shown.
- CUA function keys, code submitted by George Yohng
<yohng@drivex.dosware.8m.com>
- Another attempt to get glut.h to work on WIN32.
- Fl_Menu_::add() ignores '&' signs when comparing menu
items, so you don't have to make the shortcuts the
same all the time.
- Fixed bit-flipping patterns in WIN32 bitmap code.
- Fixed size of data written by gif images to .C files
- Menu titles and buttons in the menubar can be images
(allows it to be used as a toolbar)
- Reads selectBackground from the xrdb database to set
the selection color. Adding this to your .Xdefaults
will make fltk and Motif programs look much more
Windoze-like:
*selectForeground: white
*selectBackground: #000080
- FL_WHEN_RELEASE on Fl_Input will now do the callback
when the input field is hidden, for instance when it
is on a tab and the user switches to another tab.
- Fl_Gl_Window with an overlay on X always resized any
child windows even if you turned resizable() off
because it turned it back on to resize the overlay
window. This patch avoids changing resizable().
- Fix so multiple Fl::add_idle() calls works
- The input focus got messed up if you called
Fl_Tabs::value(x) and there was something that took
focus on an earlier tab.
- Removed some (not all) of the warnings when compiled
with -Wwrite-strings, this should also get similar
warnings Solaris produces.
- Made Fl_Browser not hide the Fl_Widget::show() method
- Changes & additions for OS/2 from Alexander Mai
- Patch from Mike Lindner to make the turning on/off of
scrollbars on Fl_Scroll smarter.
- Added missing FL_EXPORT for Fl_Valuator::format()
- Shortcuts for "buttons" in a Fl_Menu_Bar work again.
- Fix for cut/paste support and Xdnd.
- Shortcuts for submenu titles in a menubar pop up the
submenu (rather than calling the callback)
- Added documentation for GL_SWAP_TYPE
- Buttons with box(FL_NO_BOX) did not draw. Apparently
they did in older versions of fltk, I restored this.
(bug 108771)
- Removed 8-bit colormap drawing code that was not doing
anything in fl_draw_image due to the colormap
allocation changes. I also made fl_color(r,g,b)
actually allocate the requested color rather than the
nearest fltk color-cube color (this is only done for
the first color that maps to a given entry in the fltk
color cube), the result is that pixmaps with a small
number of colors are drawn much more accurately. The
resulting code seems to produce better images and is a
good deal smaller!
- Fixed makeinclude.in so CFLAGS are used for c source
code instead of CXXFLAGS. (bug 108694)
- Better fix for gif files suggested by pauly (bug
108770)
- Performance of Fl_Gl_Window may be improved on some
types of OpenGL implementations, in particular MESA
or other software emulators, by setting the
GL_SWAP_TYPE environment variable. This variable
declares what is in the back buffer after you do a
swapbuffers:
setenv GL_SWAP_TYPE COPY
This indicates that the back buffer is copied to
the front buffer, and still contains it's old
data. This is true of many hardware
implementations. Setting this will speed up
emulation of overlays, and widgets that can do
partial update can take advantage of this as
damage() will not be cleared to -1.
setenv GL_SWAP_TYPE NODAMAGE
This indicates that nothing changes the back
buffer except drawing into it. This is true of
MESA and Win32 software emulation and perhaps some
hardware emulation on systems with lots of memory.
All other values for GL_SWAP_TYPE, and not setting
the variable, cause fltk to assumme that the back
buffer must be completely redrawn after a swap.
This is easily tested by running the gl_overlay demo
program and seeing if the display is correct when
you drag another window over it or if you drag the
window off the screen and back on. You have to exit
and run the program again for it to see any changes
to the environment variable.
- Optimized colormap usage on 8-bit displays with
images. New code only allocates colors as they are
needed (still converts indexed images to full RGB and
dithers, tho...)
- Fixed .gif files in fluid, they were broken by the fix
for large .xpm files in version 1.0.9.
- Fix for OpenGL hardware overlays with the transparent
index != 0. Tested on the brand new HP Linux
Workstations, this is the only bug encountered. Both
X and OpenGL hardware overlay works perfectly on
these, though configue may not enable it by
default...)
- Fl_Choice and all other Fl_Menu_ subclasses draw the
items using textcolor() as the default color of the
text.
- Fix suggested by Stuart Levy to fix scrolling when
deleting items from the browser.
- Replaced the -$(MAKEFLAGS) with $(MFLAGS) as per the
gmake documenation. Apperntly this works with other
make programs and MAKEFLAGS is passed invisibly by
gmake, though the documenation is not too clear...
CHANGES SINCE FLTK 1.0.8
- More documentation fixes.
- GLUT_STROKE_*_ROMAN in glut.h are defined as 0,1 on
WIN32 to match the glut header files there.
- Added Fl::has_timeout() and Fl::has_idle() functions.
- Added new Fl::repeat_timeout() method that
measures time from when the last timeout was called.
This has slightly less overhead and allows accurate
spacing of timeouts.
- More Cygwin changes
- FLUID could crash with identifiers with trailing
whitespace.
- Fixed the XPM loading code in FLUID to handle files
longer than 2048 lines.
- Added a bunch of missing FL_EXTERN's to glut.h to
eliminate GLUT linking errors under WIN32.
- Fix for sliders so that clicking on one with a small
(or zero) slider_size will not move the slider.
- fl_shortcut.cxx didn't export fl_old_shortcut() in the
WIN32 DLL.
- Fixed xpaint link in the documentation.
- Included Fl_Input word-wrap fixes from Alexander Rabi
Beels. This will not affect things much because
word-wrap is normally disabled.
- Patch from Stuart Levy so the *last* widget in an
Fl_Pack may be resizable. This should be compatable
because resizable didn't do anything before so there
was no reason to set it.
- Cleaned up the timeout and Fl::wait() code. The new
code calls the clock function less than half as much,
which results in a noticable performance improvement
in some apps.
- Fl::wait(time) with a time greater than the system can
handle (24.855 days on NT, the same on some Unix
systems) will now act as though the time is infinity.
Before it would do unpredictable things.
- "USE_POLL" now compiles and works, although it is
disabled by default. poll() is an alternative to the
UNIX select() call which is available on some version
of UNIX and may be faster depending on the platform;
try it by editing config.h.
- The WIN32 USE_ASYNC_SELECT code now does translation
and dispatching of the select events; this makes
Windows a lot happier.
- Added a check for an open display in Fl::wait() so
that you don't need an open window under X to call it.
[changes in snapshot 2]
- fl_old_shortcut() wasn't being exported in the WIN32 DLL
project.
- Updated Cygwin and Mingw makefiles.
- Updated the BC++ project file.
- You can no longer insert control chars into Fl_Int/Float_Input.
- Fl_Multiline_Input now resets the horizontal position when
focus is changed; this caused problems when multiple multiline
widgets were used in an application.
- All handle() methods are now public, and all draw() methods are
now protected in FLTK widgets.
- More fixes to the OpenGL overlay code on win32. This now
seems to work quite reliably on several different pieces of
hardware. Apparently doing SetLayerPaletteEntries with a
palette larger than the overlay size caused the drivers to
screw up in unpredictable ways. Also SwapBuffers swapped both
the overlay and main window, which is not what fltk's
interface wanted, this was easy to fix however.
- Patch for full scrollbars so that clicking on them does not
move anything.
- Documentation fixes.
- Better horizontal scrolling of Fl_Input when cursor is near
the end of the line.
- Fl_Input::value(x) selects all text.
- Fl_Output and Fl_Multiline_Output would scroll to the end
of the text.
- filename_isdir() now drops any trailing slash from the
filename (needed for Windows)
- Added return type for main() function in line_style demo.
- Running FLUID with the "-cs" option writes the I18N message
file.
- The WIN32 version of XParseGeometry() didn't initialize some
variables. This caused a compiler warning but did not affect
the actual code.
[changes in snapshot 1]
- EMail changes - fltk-bugs@easysw.com now officially
fltk-bugs@fltk.org.
- The FLTK DLL project file didn't include fl_compose.cxx
- Dropped the GCC -fno-rtti option since it caused problems
with existing programs.
- Moved the .fl rules back to the test directory.
- Fixed some makefile and spec file problems.
- Fixed hardware overlays. The problem was the new
fl_clipped() code, which tests against the current window
size. The hardware overlay code did not set the current
window when drawing the overlay. I needed hardware overlay
for DD's code, I'm not sure if these fixes are good enough to
enable this in our general release. Hardware overlay still
only works on SGI Irix.
- Some patches to turn off the MSVC++ -Oa (assumme no aliasing)
optimization flag. Suprisingly this only broke a few parts
of fltk, or at least these are the only ones I found.
- Does not unmap child windows when the main window is
iconized. This reduces flashing when the window is
deiconized.
- Fl::key() is set to zero by all events except key down/up.
This will allow you to reliably test if an event or callback
was produced by a keystroke. Fixes the bug posted about
stopping Escape from closing the window.
- User defined cursors on OpenGL windows slowed down NT a
*LOT*. Some attempts to fix this by turning off the cursor
while drawing the window.
- Filename completion in the file chooser works better on NT.
Typing TAB fixes the case of everything you typed to match
the shortest name that can be completed.
CHANGES SINCE FLTK 1.0.7
- Many documentation changes/fixes/improvements.
- FLUID didn't save Fl_Double_Window's as
double-buffered windows.
- Fl_Menu_ text color is used if Fl_Menu_Item text color
is not set.
- Added Fl::first_window(window) method to change the
"top" window that is used when showing modal windows.
By default it is the window the user last
clicked/typed in.
- The Fl_Menu::global() handler now uses the current top
window instead of the menu bar for modal stuff.
- Added fl_line_style() function to set the line style.
Note that user-defined line styles ONLY WORK UNDER X11
and Windows NT/2000. Windows 95/98 do, however,
support the "standard" line styles.
- Fl::wait() does not return immediately when no windows
- XForms keyboard shortcuts using hex keycode constants
now work.
- Updated the configure script for *BSD and to turn off
exceptions and RTTI in the FLTK library itself (does
not affect applications which use these things)
- FLUID now supports I18N using the POSIX or GNU
mechanisms.
- Fixed definition of glutBitmapWidth to match header
file.
- Does not turn visible() on when a window is iconized()
or if a modal window is shown and it's parent is
iconized. This allows the code "while (w->visible()
&& w->damage()) Fl::check();" to reliably wait for the
window to be mapped and drawn the first time.
- Setting box(FL_NO_BOX) on a button makes it an
invisible overlay
- FL_NORMAL_SIZE is now a global variable so you can
change the default text size prior to creating your
widgets.
- Menus now draw properly with a box type of
FL_FLAT_BOX.
- Cygwin fixes to compile in POSIX mode.
- Fl_Value_Input callback can call value() or
destructor.
- OpenGL overlays now work under Windows NT!
- Fl_Slider and Fl_Scrollbar could cause a divide by
zero.
- Clicking in an Fl_Input field no longer selects the
whole field, it just moves the text cursor.
- Tru64 UNIX fixes for filename_list()
- Fl_Browser now draws itself properly when deactivated.
- FLUID GUIs now use Courier font for all code input.
- The FLUID OK and Cancel buttons are now all shown in
the same order in all windows.
- Fixes to compile under GCC 2.95.2
- Fixed the BC5 project files.
- FL_LEFT_MOUSE and friends are now in
<FL/Enumerations.H>
- Fixes for fake OpenGL overlay code under WIN32.
- Message windows are now resizeable.
- On WIN32 non_modal (but not modal) windows have the
close and size boxes.
- Fl_Button and friends didn't honor the
FL_WHEN_NOT_CHANGED condition.
- Disabled XDBE on all platforms.
- XGetDefault patch from James Roth
- New fl_open_display(Display *) function to allow FLTK
to share a display connection with another toolkit
(like Xt, GTK, etc.)
- Shortcut labels for special keys should now display
properly under WIN32.
- fl_set_fonts() did not reuse fonts.
- Fixed shortcut problem under WIN32 when the focus
window changes.
- "dead" keys should now work under X11.
- Fixes to make FLTK compile with GCC 2.95.2
- FL_SHORTCUT fix for I18N.
- Fixed cut/paste problems under WIN32
- FLUID now produces correct code for nested class
destructors.
- Nested windows should now redraw properly under WIN32.
- "table" is now static in fl_cursor.cxx
- Fl_Chart used the textcolor() and not the color() for
horizontal bar charts.
- Now set the input hint for TWM and TWM-derived window
managers.
- Now look for TrueColor visual if FLTK is compiled with
USE_COLORMAP == 0.
- Fl_Scrollbar could generate a divide-by-0 error if the
min and max values were the same.
- Fl_Menu_::remove() now removes whole submenus if
needed.
- Scrollbar buttons now draw themselves pushed in as
needed.
- Fixed the gl_overlay demo (and gl overlays in general)
when they are faked with no hardware and the window is
resized.
- Selections weren't shown in Fl_Browser widgets when an
item used the @B (background) format.
- Windows can now be resized by the program under X11
for more window managers.
- OS/2 makeinclude updates.
- Added Fl.H required by an inline function in
Fl_Repeat_Button.H
- Fl_add_idle adds new functions to the end of the queue
ring, rather than the start, so they are executed in
the order added, and a callback that adds itself does
not prevent others from being called.
- Fluid lets you type in code that starts with '#' for
cpp directives.
- XBell() could be called before the X11 display was
opened, causing a segfault.
- Fixed Fl_Gl_Window::ortho() - Borland C++ doesn't
define GLint to "int", but instead to "long"...
- Fixed Fl_Browser scrollbars within an Fl_Scroll
widget.
- Fl_Output (and non-focused Fl_Input) now scroll in
response to position()
- Fl_Input now does not scroll horizontally if the
entire string will fit in the widget.
- Fl_Scrollbar didn't push the right arrow buttons when
you clicked outside the scroller.
- Now use WSAAsyncSelect() for better socket performance
with Fl::add_fd()
CHANGES SINCE FLTK 1.0.6
- Fixed Fl_Input_ bug under WIN32 - no longer stop accepting input
when one of the "Windows" keys is pressed.
- Now call TranslateEvent for all events under WIN32.
- Fixes for OpenBSD and NetBSD
- The FL_CURSOR_HAND cursor now uses the IDC_HAND cursor instead of
IDC_UPARROW under Windows 98 and 2000.
- Fl_Scrollbar now does a page-up/down when you click outside the
scroller.
- Fl_Window::show(0, NULL) causes core dump
- Fixed a compile-time error in fl_call_main.c for Borland C++.
- "fluid -c filename.fl" would try to open an X display if the
FLUID file contained an Fl_Browser widget.
- Fl_Browser now correctly measures items with @C or @B color
formatting commands.
- Fixed a bitmap drawing bug for WIN32 (bit reversal table was wrong)
- fl_xyz() dialogs now set a title in the title bar.
- fl_alert() sounds the bell under X11.
- fl_xyz() dialogs now call MessageBeep() under WIN32.
- Fl_Browser_ didn't draw the selection box with the inactive color
when the browser wasn't activated.
- Fl_Browser now responds to FL_KEYBOARD as well as FL_SHORTCUT. If
you subclass it to accept focus then keyboard navigation will work.
- Fl_Tile and Fl_Tabs do their callback when the user changes their
display.
- Made some of the private methods of Fl_Browser protected.
- Now set win_gravity correctly, this helps some X
window managers that use it position the window where
FLTK wants it to be.
- 0-width browsers crashed.
- Minor change: if the X window manager does not do
anything else with windows that don't have their
position specified, the windows appear centered in the
screen, rather than in the top-left corner. This
happened with modal windows under Irix 4Dwm. This
also causes windows to be centered when no window
manager is running, which might be useful for
installation gui programs?
- Clicking in an Fl_Input field the first time selects the entire
field.
- Clicking the middle mouse button in an Fl_Input field now inserts
the text at the indicated position instead of the cursor position.
- Drag-selecting text in an Fl_Input field now copies the text
automatically.
- Fl::flush() no longer calls the draw() method for invisible windows.
- Calling deactivate() on an invisible widget could cause an
infinite loop in some obscure cases.
- Added #pragma's for SGI C++ compilers - the 6.{23} X headers had
errors in them.
- Fl_Gl_Window::ortho() changed so that text and images
are not erased if the origin is off the left/bottom of the
window.
- Small change to Fl_Input so that a click that gives it
the focus also selects all the text.
- Fixed a slider drawing problem.
- You can now add/delete children of Fl_Tabs widgets whether or
not they are visible.
- Now embed woff options for SGI C++ compilers (gets rid of X11
header warnings)
- draw_pixmap used a cast that the Digital UNIX C++ compiler didn't
like.
- The GLUT function key constants were off by one.
- The XPM reading code didn't handle RGB colors other than #rrggbb.
CHANGES SINCE FLTK 1.0.5
- Fl_win32.cxx defined WM_MOUSE_LEAVE instead of WM_MOUSELEAVE.
- Fl_get_key_win32.cxx needed to include <ctype.h>
- gl_draw_pixmap.cxx needed a pointer cast for ANSI C++.
- Fl_Repeat_Button didn't always delete its timeout.
- Now keep track of the current OpenGL context; this provides
significant performance improvements for OpenGL applications
with a single context.
CHANGES SINCE FLTK 1.0.4
- Fl_Roller didn't handle a width and height of 0.
- filename_list() fix for FreeBSD.
- Fixed RPM install docos - needed "--install" option...
- Fl_Browser_ wouldn't draw the vertical scrollbar right away if it
added a horizontal one which covered the last line.
- Fl_Tabs problems - single-character labels don't show up (problem in
measure_tabs() or measure_label() methods?), and doesn't clear top
tab area before drawing tabs.
- Fl_Browser needs a destructor.
- fl_draw_label() quoted characters between 0x80 and 0xa0, which
caused problems for some programs using the WinANSI character set.
- FLUID didn't handle declared class destructors.
- Fixed another WIN32 cut/paste bug.
- Fl_Tabs didn't work properly when there was only 1 tab.
- Fl_Menu::add() didn't delete the old array.
- Fl_Repeat_Button didn't delete its timeout when disabled.
- fl_draw() would crash if no font was set (now defaults to
a 14-pixel Helvetica font)
- Can't forward declare classes; need to check for "class ", "struct ",
"union ", etc. See Bill's message
- Added #pragma around xlib.h for IRIX
- FL_KEYBOARD events have the correct x/y when sent to child X
windows. Note that if you worked around this bug by adjusting the
x/y yourself you will have to change your code. In addition all
events have the correct x/y when sent to the grab() widget. And
the code to do all this was simplified a lot.
- The XPM code didn't handle named colors with spaces in the names.
- Pressing ESCape closed the window with pointer focus, even if there
was a modal window open (now closes the modal window).
- Fluid no longer produces trigraphs accidentally in the image data.
- Fluid uses string constant concatenation to produce shorter image
data.
- The Fl_Group deletion code crashed if there was exactly one child
widget.
- Simulated overlays in single-buffered Fl_Gl_Windows now draw
correctly (though very slowly as it requires the entire window to
be redrawn to erase the overlay). This fix ported our Digital
Domain programs better to systems with no overlay hardware.
- Added support for extern "C" declarations in FLUID.
- Added Fl_Pack support to FLUID.
- Fixed the order of #include's in FLUID generated header files.
- Fixed detection of vsnprintf and snprintf under HP-UX 10.20 once
and for all.
- The checkers demo did not compile with GCC 2.95
- FLUID didn't output virtual destructors properly.
- Added inline "make_visible()" method to Fl_Browser.
- Fl::wait() now returns immediately if any timeouts are
called.
- 16-bit XPM files are now properly handled.
- Fl_Window::resize() was missing FL_EXPORT (caused problems
with Windows DLLs)
- FLUID was writing extern declarations twice.
- New FLUID arrow key functionality: arrows move by one pixel, shift+arrow
resizes, ctrl+arrow steps by grid
CHANGES SINCE FLTK 1.0.3
- Documentation updates
- Fl_Browser::bottomline(size) didn't scroll to the bottom
if the second-to-last line was visible.
- fl_wait() didn't poll FDs properly for WIN32.
- Fixed DLL definitions for BC++.
- FLUID now handles nested classes properly.
- The "connect" demo now does a wait() for the PPP process
so that you aren't left with a lot of zombie processes.
- Fixed the FLTK colormap to use FF instead of F4 for full
intensity values.
- Minor change to scrollbar drawing code to match other
toolkits.
- New selections would cancel themselves out in WIN32.
- The header file links were broken in the IRIX
distributions.
- fl_elapsed() now always uses GetClockTick() for WIN32.
- fl_display is now initialized to GetModuleHandle(NULL) -
this fixes problems people had with Cygwin and MingW32.
- WinMain() is no longer compiled in with Cygwin and
MingW32; it wasn't being used for those compilers anyways.
- Added Solaris compiler options to configure script.
- Fl_Value_Input wouldn't update properly if you set the
value from a callback.
- Fl_Tile wouldn't resize if the resizeable widget was the
last child.
- Was missing #include <ctype.h> and #include <stdlib.h> in
several files, which caused problems on some platforms.
- Fixed another case where Fl_Browser_ could get in an
infinite resizing loop.
- Fl_win32.cxx now includes <FL/filename.H> to export missing
DLL symbols.
- Fluid didn't handle member functions that include the
scope operator.
- Fl_Chart was dividing by 0 if there were no data samples
or if they were all the same (min == max).
CHANGES SINCE FLTK 1.0.2
- XDBE is now enabled for IRIX 6.[234] as well as 6.5.
- FLUID didn't write the when() condition properly.
- Tab/space/backtab/backspace can be used to navigate
through menus.
- Changed $(DSONAME) in the src/Makefile to "libfltk.so.1
libfltk.sl.1".
- Fl_Browser could read past the end of the string when
computing the item height.
- Fl_Browser could get in an infinite loop when checking to
see if scrollbars needed to be displayed.
- FLUID now honors the return type of the outermost widget.
This was a problem when substituting Fl_Group in an
Fl_Window widget.
- Fl_Menu_::copy() wasn't allocating a power of 2 for the
array size.
- FLWM would crash if fl_xmousewin was deleted.
- The fast_slow demo now uses output widgets.
- Timers under WIN32 were unreliable.
CHANGES SINCE FLTK 1.0.1
- Documentation updates
- The Visual C++ project files didn't include fl_add_idle.cxx.
- LIBRARY/DSO name inconsistencies in src/Makefile.
- src/Makefile didn't clean the DSO.
- The valuator demo now has only a single callback.
- The code looked for HAVE_SYS_SELECT_H, but the
config file uses HAVE_SYS_SELECT.
- Fl_Image redraw not quite right under X11 or WIN32
- Problems with timeouts & cube demo under WIN32
- FLUID problems with inline functions.
- Documentation fixes...
- Fl_Browser::item_height() didn't handle blank lines or
non-default fonts properly.
- FL/math.h didn't have #ifndef...#define...#endif guards
against multiple inclusion...
- Fl_Menu_::copy() fix - didn't allocate power of 2...
- Fl::damage() now remains true until all windows are actually
redrawn.
- Fl_Widget destructor, hide(), and deactivate() methods no longer
send FL_LEAVE, FL_RELEASE, or FL_UNFOCUS events to the widget
(which could cause applications to crash).
- FLUID now outputs symbolic names for align() and when().
- Fixed select() to use maxfd + 1 instead of maxfd.
- Added "Fl::remove_fd(fd, when)" function so you can remove the
read and write callbacks separately.
- The Fl::add_fd() and Fl::add_timeout() arrays are now dynamically
allocated.
- FLUID didn't always turn the FL_SUBMENU flag on for submenu titles.
- The "extra code" in FLUID now is placed before the "o->end()" call
for Fl_Group and its derived classes.
- You can now set a FL_Window widget's class in FLUID to Fl_Group to
generate a function or class that builds part of a GUI (i.e. no window).
- FLUID now displays "Save file before exiting?" with the standard yes,
no, and cancel buttons rather than "Discard changes?".
- Fl_Menu_::add() now works with any type of menu, even one set with
the menu() method.
- The keypad keys were not always decoded properly under X11.
- Some pointers were not being turned off when widgets were deleted,
which caused some applications (like FLWM) to crash.
CHANGES SINCE FLTK 1.0
- Documentation fixes.
- Fl::check() didn't return the correct value, breaking a number
of applications.
- Fixed fluid bug that caused styles patch to crash when you delete
a menu item.
- Updated valuators demo to put the values in the gui box.
- Fl_Browser_::item_height() didn't always compute the correct
value.
- Fixed the alignment of Fl_Choice text.
- Fixes for OS/2.
- Fl_Menu_Item::clear() didn't clear value.
- Added some changes to make FLTK work with Borland C++.
- ANSI C++ fixes.
- Plugged a memory leak in the fractal demo.
- Fl::add_timeout() didn't work under WIN32 with small values.
- The configure script and makefiles now define DSONAME and
use the static library for all example programs.