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 behaviour in FL_Widget.H!

Clarify Fl_Widget::test_shortcut() explanations. Fl_Widget.h says Internal Use only, but subclassing chapter gives details!

Module Box Types
Description of box types is incomplete. See below for the defined enum Fl_Boxtype.
Member Fl_Browser_::scrollbar_width (int width)
This method should eventually be removed in 1.4+
Member Fl_Browser_::scrollbar_width () const
This method should eventually be removed in 1.4+
Member Fl_Browser_::sort (int flags=0)
Add a flag to ignore case
Class Fl_Button

Refactor the doxygen comments for Fl_Button when() documentation.

Refactor the doxygen comments for Fl_Button type() documentation.

Member fl_casenumericsort (struct dirent **A, struct dirent **B)
Make comparison UTF-8 aware.
Class Fl_Chart
Refactor Fl_Chart::type() information.
Class Fl_Choice
Refactor the doxygen comments for Fl_Choice changed() documentation.
Class Fl_Counter
Refactor the doxygen comments for Fl_Counter type() documentation.
Member Fl_Cursor
enum Fl_Cursor needs maybe an image.
Member Fl_File_Input::errorcolor () const
Remove Fl_File_Input::errorcolor() in FLTK 1.5.0 or higher.
Member Fl_File_Input::errorcolor (Fl_Color c)
Remove Fl_File_Input::errorcolor(Fl_Color) 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
Member Fl_Group::delete_child (int n)
Reimplementation of Fl_Group::delete_widget(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
Member fl_numericsort (struct dirent **A, struct dirent **B)
Make comparison UTF-8 aware.
Member Fl_Preferences::Fl_Preferences (Root root, const char *vendor, const char *application)

(Matt) Lastly, I think I have to put short sample code in the Doxygen docs. The test app ist just not enough.

(Matt) Also, I need to explain runtime preferences.

(Matt) I want a way to access the type of the root preferences (SYSTEM, USER, MEMORY), and the state of the file access (OK, FILE_SYSTEM_FAIL, PERMISSION_FAIL, etc.), and probably the dirty() flag as well.

(Matt) Before the release of 1.4.0, I want to make a further attempt to write a preferences file smarter. I plan to use a subgroup of the "runtime" preferences to store data and stay accessible until the application exits. Data would be stored under ./$(vendor)/$(application).prefs in RAM, but not on disk.

Member Fl_Preferences::get (const char *entry, void *value, const void *defaultValue, int defaultSize, int maxSize)
maxSize should receive the number of bytes that were read.
Member fl_reset_spot (void)
provide user documentation for fl_reset_spot function
Member Fl_Scroll::bbox (int &, int &, int &, int &)
The visibility of the scrollbars ought to be checked/calculated outside of the draw() method (STR #1895).
Member fl_set_spot (int font, int size, int X, int Y, int W, int H, Fl_Window *win=0)
provide user documentation for fl_set_spot function
Member fl_set_status (int X, int Y, int W, int H)
provide user documentation for fl_set_status function
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_Text_Display::display_insert ()
Member Fl_Text_Display::extend_range_for_styles (int *start, int *end)
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::highlight_data (Fl_Text_Buffer *styleBuffer, const Style_Table_Entry *styleTable, int nStyles, char unfinishedStyle, Unfinished_Style_Cb unfinishedHighlightCB, void *cbArg)
"extendRangeForStyleMods" does not exist (might be a hangover from the port from nedit). Find the correct function.
Member Fl_Text_Display::maintain_absolute_top_line_number (int state)
TextDPosToLineAndCol does not exist (nedit port?)
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 () const
This method should eventually be removed.
Member Fl_Text_Display::scrollbar_width (int width)
This method should eventually be removed
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::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::wrap_uses_character (int lineEndPos) const
TextDEndOfLine and BufEndOfLine functions don't exist (nedit port?)
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?)


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)
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_When
doxygen comments for values are incomplete and maybe wrong or unclear
Member Fl_Widget::argument () const
[Internal] The user_data value must be implemented using fl_intptr_t or similar to avoid 64-bit platform incompatibilities.
Member Fl_Widget::type () const
Explain "simulate RTTI" (currently only used to decide if a widget is a window, i.e. type()>=FL_WINDOW ?). Is type() really used in a way that ensures "Forms compatibility" ?
Member Fl_Window::show (int argc, char **argv)
explain which system parameters are set up.
Member Fl_Window::show ()
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
Add a chapter "Building FLTK with CMake" or similar.
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.
Module Mouse and Keyboard Events
FL_Button and FL_key... constants could be structured better (use an enum or some doxygen grouping ?)
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.