Migrating Code from FLTK 1.0 to 1.1

This appendix describes the differences between the FLTK 1.0.x and FLTK 1.1.x functions and classes.

# Color Values

Color values are now stored in a 32-bit unsigned integer instead of the unsigned character in 1.0.x. This allows for the specification of 24-bit RGB values or 8-bit FLTK color indices.

`FL_BLACK` and `FL_WHITE` now remain black and white, even if the base color of the gray ramp is changed using Fl::background(). `FL_DARK3` and `FL_LIGHT3` can be used instead to draw a very dark or a very bright background hue.

Widgets use the new color symbols `FL_FOREGROUND_COLOR`, `FL_BACKGROUND_COLOR`, `FL_BACKGROUND2_COLOR`, `FL_INACTIVE_COLOR`, and `FL_SELECTION_COLOR`. More details can be found in the chapter FLTK Enumerations.

# Cut and Paste Support

The FLTK clipboard is now broken into two parts - a local selection value and a cut-and-paste value. This allows FLTK to support things like highlighting and replacing text that was previously cut or copied, which makes FLTK applications behave like traditional GUI applications.

# File Chooser

The file chooser in FLTK 1.1.x is significantly different than the one supplied with FLTK 1.0.x. Any code that directly references the old `FCB` class or members will need to be ported to the new Fl_File_Chooser class.

# Function Names

Some function names have changed from FLTK 1.0.x to 1.1.x in order to avoid name space collisions. You can still use the old function names by defining the `FLTK_1_0_COMPAT` symbol on the command-line when you compile (`-DFLTK_1_0_COMPAT`) or in your source, e.g.:

#define FLTK_1_0_COMPAT
#include <FL/Fl.H>
#include <FL/Enumerations.H>
#include <FL/filename.H>

The following table shows the old and new function names:

Old 1.0.x Name | New 1.1.x Name
--- | ---
contrast() | fl_contrast()
down() | fl_down()
filename_absolute() | fl_filename_absolute()
filename_expand() | fl_filename_expand()
filename_ext() | fl_filename_ext()
filename_isdir() | fl_filename_isdir()
filename_list() | fl_filename_list()
filename_match() | fl_filename_match()
filename_name() | fl_filename_name()
filename_relative() | fl_filename_relative()
filename_setext() | fl_filename_setext()
frame() | fl_frame()
inactive() | fl_inactive()
numericsort() | fl_numericsort()

# Image Support

Image support in FLTK has been significantly revamped in 1.1.x. The Fl_Image class is now a proper base class, with the core image drawing functionality in the Fl_Bitmap, Fl_Pixmap, and Fl_RGB_Image classes.

BMP, GIF, JPEG, PNG, XBM, and XPM image files can now be loaded using the appropriate image classes, and the Fl_Shared_Image class can be used to cache images in memory.

Image labels are no longer provided as an add-on label type. If you use the old `label()` methods on an image, the widget's `image()` method is called to set the image as the label.

Image labels in menu items must still use the old labeltype mechanism to preserve source compatibility.

# Keyboard Navigation

FLTK 1.1.x now supports keyboard navigation and control with all widgets. To restore the old FLTK 1.0.x behavior so that only text widgets get keyboard focus, call the Fl::visible_focus() method to disable it:

Fl::visible_focus(0);

[Prev] Operating System Issues | [Index] | Migrating Code from FLTK 1.1 to 1.3 [Next]

- © 1998-2012 by Bill Spitzak and others.