## To Do

### Roadmap for the Next Versions

#### Version 4.0

- CMake support
- LuaRocks and Vcpkg support
- C++ API
- Complete the Tutorial

#### Next Versions (?)

- Interactive change of column position in IupMatrix

#### Future Versions (??)

- Complete the MacOS X native driver
- Cassowary Constraint Layout Controls
- Dialog construction from Sketches
- Dialog Templates

### General

- Important: RPM, Debian and LuaRocks distribution packages.
- Important: IupGLCanvas in MACOS X using native OpenGL support.
- Important: a MacOS X native driver using Cocoa.
- The actual model for control data structure in the internal SDK is restricted for derived classes.
- Loading and saving RTF files in IupText. Add support for images inside the text.
- Possibility to change the system menu in Windows.
- Support for cascading IupPopup for menus.

### Windows

- Known Issue: when using a IupScrollBox on top of a IupGLCanvas in Windows 7, during the scroll some regions of the canvas are overlaped by an internal system drawing of the scrolled controls.
- Known Issue: sometimes when there is child dialog displayed in a secondary monitor, the IupList dropdown in the main dialog is displayed in an incorrect position.
- Known Issue: when in Windows 8 the IupFontDlg dialog does not supports the TITLE attribute nor can be positioned.
- Known Issue: when an IupVal is inside an IupTabs, the tabs disappear when the mouse moves over it after being used in the valuator. A workaround is to put the valuator inside an IupFrame and then inside the IupTabs, so the problem does not occur.
- Known Issue: when the dialog background is dynamically changed the IupVal background is only updated after the user click on the control or when the control is redisplayed.
- Known Issue: in Windows Vista the COMPOSITE=YES attribute of the IupDialog is not working as expected. There is still flicker when the dialog is resized. IupTabs in Windows Vista when COMPOSITE=YES works only if MULTILINE=YES. (since 3.0)
- Known Issue: in Windows when CANFOCUS=NO only the Tab key navigation is not done, when clicked the control will still get the focus. The only exceptions are button and canvas.
- Known Issue (Compiler): the IupImgLib takes an very long time to compile under Visual C++ up to version VC9 (starting in VC10 the problem does no occur). (since 3.0)
- Known Issue (Compiler): when building with Open Watcom the additional controls crash. When you add debug information to the main IUP library the problem solves. We tried to track down this error but it does not occurs with debug information and our attempts without debug does not gives any results. So the IUP main library for Watcom is now distributed with debug information. (since 3.0)

### GTK

- Known Issue: can not set focus to a child inside TABCHANGE_CB or TABCHANGEPOS_CB in IupTabs, because internally GTK will always set the focus to the first child.
- Known Issue: in Ubuntu 11.10 the canvas scrollbar is not notifying IUP that the user dragged the control. To solve the problem remove the overlay-scrollbar, this is the package that makes the scrollbar invisible until the mouse is near it.
- Known Issue: OPEN_CB, MENUCLOSE_CB and HIGHLIGHT_CB callbacks not working in GTK > 3.14.

### Motif

- Known Issue: when the IupList has DROPDOWN=Yes in Motif, and the list has items with the same string, the ACTION callback will return the index of the item with the first instance of the string only. This seems to be a bug or limitation in Motif.
- Known Issue: an element when inside an IupScrollBox is not being displayed until the box is scrolled if its size alone is greater than the scrollbox visible size.
- Known Issue: IupMatrix crash the application during its creation on OpenMotif 2.3.3. inside the creation of the internal IupList.

### Lua Binding

- Important: create a base library for exported functions. All other libraries will be pure Lua modules only.
- Important: remove the standard "lib" prefix from pure modules dynamic libraries names in UNIX.
- Important: remove the Lua version number suffix from all libraries.

### IupMatrixEx

- Important: drag&drop of columns, i.e. interactive change of column position.

### IupTree

- Known Issue: the rubber band gets lost depending on what you do inside the SELECTION_CB callback in GTK. To avoid that set RUBBERBAND=NO.
- Known Issue: the SELECTION_CB callback may be called more than once for the same node with the same status.
- Known Issue: in Windows XP, when using a font for an node with TITLEFONTid in IupTree that is larger than the element FONT the item text will be cropped at right and bottom because the system uses the element font to calculate the item size. The only exception is when you just change the font to add a Bold style.
- RENAMEEDIT_CB callback and RENAMEMASKid attribute.
- Add new nomenclature option for id, for example ":2:1:4"
- Define minimum size based on tree nodes.
- drag&drop of multiple selected nodes.

### IupMglPlot

- Important: text render quality is lower than in IupPlot.
- Important: add UTF-8 mode using MathGL Unicode support.
- Compile MathGL using OpenMP support.
- Logarithm scale is not working properly.
- Automatic ticks computation needs to be improved.

### Possible New Controls

- Table - similar to IupMatrix but using native controls (Windows,GTK,Motif)
- Scrollbar - just the scrollbar as a control. (Windows,GTK,Motif)
- PropertyGrid - a 2 column matrix with expandable/closeable items
- IP Address (Windows)