# G - Migrating Code from FLTK 1.0.x

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_FORGROUND_COLOR`, `FL_BACKGROUND_COLOR`, `FL_BACKGROUND2_COLOR`, `FL_INACTIVE_COLOR`, and `FL_SELECTION_COLOR`. More details can be found in the chapter 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);