FLTK 1.4.0
Todo List
Page Adding and Extending Widgets
Clarify Fl_Window::damage(uchar) handling - seems confused/wrong? ORing value doesn't match setting behavior in Fl_Widget.H!
Member Fl::now (double offset=0)
Fl::system_driver()->gettime() was implemented for the Forms library and has a limited resolution (on Windows: milliseconds). On POSIX platforms it uses gettimeofday() with microsecond resolution. A new function could use a better resolution on Windows with its multimedia timers which requires a new dependency: winmm.lib (dll). This could be a future improvement, maybe set as a build option or generally (requires Win95 or 98?).
Member Fl_Browser_::scrollbar_width () const
This method should eventually be removed in 1.4+
Member Fl_Browser_::scrollbar_width (int width)
This method should eventually be removed in 1.4+
Class Fl_Chart
Refactor Fl_Chart::type() information.
Member Fl_File_Input::errorcolor (Fl_Color c)
Remove Fl_File_Input::errorcolor(Fl_Color) in FLTK 1.5.0 or higher.
Member Fl_File_Input::errorcolor () const
Remove Fl_File_Input::errorcolor() in FLTK 1.5.0 or higher.
Member fl_filename_list (const char *d, struct dirent ***l, Fl_File_Sort_F *s=fl_numericsort)
should support returning OS error messages
Class Fl_Grid
This (relative group coordinates of nested groups of Fl_Grid) needs explanation and maybe an example.
Member Fl_Grid::Cell::~Cell ()
Fl_Grid's cell destructor should remove the cell from the grid. Currently it does nothing!
Member Fl_Grid::clear_layout ()
Fl_Grid::clear() needs to be implemented as documented above!
Member Fl_Grid::debug (int level=127)

Add more information about cells and children.

Control output by using level.

Member Fl_Grid::Fl_Grid (int X, int Y, int W, int H, const char *L=0)
More documentation of Fl_Grid constructor?
Member Fl_Grid::layout ()
Document when and why to call layout() w/o args. See Fl_Flex::layout()
Member Fl_Grid::layout (int rows, int cols, int margin=-1, int gap=-1)
Document when and why to call layout() w/o args. See Fl_Flex::layout()
Member Fl_Group::delete_child (int n)
Reimplementation of Fl_Group::delete_child(int) in more FLTK subclasses. This is not yet complete.
Member fl_height (int font, int size)
In the future, when the XFT issues are resolved, this function should simply return the 'size' value.
Member Fl_Help_View::find (const char *s, int p=0)
complex HTML entities for Unicode code points > 0x80 are currently treated like one byte (not character!) and do not (yet) match correctly ("<" matches "&lt;" but "€" doesn't match "&euro;", and "ü" doesn't match "&uuml;")
Member Fl_Input_::handle_mouse (int, int, int, int, int keepmark=0)
Add comment and parameters
Member Fl_Input_::handletext (int e, int, int, int, int)
Add comment and parameters
Class Fl_Label
There is an aspiration that the Fl_Label type will become a widget by itself. That way we will be avoiding a lot of code duplication by handling labels in a similar fashion to widgets containing text. We also provide an easy interface for very complex labels, containing html or vector graphics. However, this re-factoring is not in place in this release.
Member Fl_Menu_::add (const char *, int shortcut, Fl_Callback *, void *=0, int=0)
Raw integer shortcut needs examples. Dependent on responses to https://www.fltk.org/newsgroups.php?gfltk.coredev+v:10086 and results of STR#2344
Class Fl_Native_File_Chooser
Improve documentation about selection of native file choosers on X11/Wayland.
Member Fl_Shortcut
Discuss and decide whether we can "shift" these special keyboard flags to the upper byte to enable full 21-bit Unicode characters (U+0000 .. U+10FFFF) plus the keyboard indicator bits as this was originally intended. This would be possible if we could rely on all programs being coded with symbolic names and not hard coded bit values.
Member Fl_Terminal::scrollbar

Support scrollbar_left/right() - See Fl_Browser_::scrollbar docs

Support new ScrollbarStyle

Member Fl_Text_Display::extend_range_for_styles (int *start, int *end)
Unicode?
Member Fl_Text_Display::handle_vline (int mode, int lineStart, int lineLen, int leftChar, int rightChar, int topClip, int bottomClip, int leftClip, int rightClip) const

we need to handle hidden hyphens and tabs here!

we handle all styles and selections

we must provide code to get pixel positions of the middle of a character as well

Member Fl_Text_Display::overstrike (const char *text)
Unicode? Find out exactly what we do here and simplify.
Member Fl_Text_Display::position_to_linecol (int pos, int *lineNum, int *column) const
a column number makes little sense in the UTF-8/variable font width environment. We will have to further define what exactly we want to return. Please check the functions that call this particular function.
Member Fl_Text_Display::scroll (int topLineNum, int horizOffset)
Column numbers make little sense here.
Member Fl_Text_Display::scrollbar_width (int width)
This method should eventually be removed
Member Fl_Text_Display::scrollbar_width () const
This method should eventually be removed.
Member Fl_Text_Display::shortcut (int s)
FIXME : get set methods pointing on shortcut_ have no effects as shortcut_ is unused in this class and derived!
Member Fl_Text_Display::shortcut () const
FIXME : get set methods pointing on shortcut_ have no effects as shortcut_ is unused in this class and derived!
Member Fl_Text_Display::wrapped_column (int row, int column) const

What does this do and how is it useful? Column numbers mean little in this context. Which functions depend on this one? Function TextDXYToUnconstrainedPosition does not exist (nedit port?)

Unicode?

Member Fl_Text_Display::wrapped_row (int row) const
What does this do and how is it useful? Column numbers mean little in this context. Which functions depend on this one? Function TextDXYToUnconstrainedPosition does not exist (nedit port?)
Member Fl_Tiled_Image::Fl_Tiled_Image (Fl_Image *i, int W=0, int H=0)
Fix Fl_Tiled_Image as background image for widgets and windows and fix the implementation of Fl::scheme(const char *).
Member Fl_Tree::handle (int e) FL_OVERRIDE
add Fl_Widget_Tracker (see Fl_Browser_.cxx::handle())
Member Fl_Tree::is_scrollbar (Fl_Widget *w)
should be const
Member Fl_Tree::show_self ()
should be const
Member Fl_Window::show () FL_OVERRIDE
Check if we can remove resetting the current group in a later FLTK version (after 1.3.x). This may break "already broken" programs though if they rely on this "feature".
Page FLTK Basics
This section needs a major rework. Add a chapter "Building FLTK with CMake".
Page Handling Events
Add details on how to detect repeating keys, since on some X servers a repeating key will generate both FL_KEYUP and FL_KEYDOWN, such that to tell if a key is held, you need Fl::event_key(int) to detect if the key is being held down during FL_KEYUP or not.
Page Unicode and UTF-8 Support

Verify 16/24 bit Unicode limit for different character sets? OksiD's code appears limited to 16-bit whereas the FLTK2 code appears to handle a wider set. What about illegal characters? See comments in fl_utf8fromwc() and fl_utf8toUtf16().

Work through the code and this documentation to harmonize the [OksiD] and [fltk2] functions.

FLTK 1.3 and later supports the full Unicode range (21 bits), but there are a few exceptions, for instance binary shortcut values in menus (Fl_Shortcut) can only be used with characters from the BMP (16 bits). This may be extended in a future FLTK version.