Known bugs and plans
--------------------
Note that this is our internal list, its not an official bug or wishlist.

Known issues with 0.8
-------------
- Click detection in the CL_FileDialog listbox can become a bit 'off' after using its scroll bar

Roadmap: (much of the text below here is outdated or no longer applicable!)
--------
0.7.10:
- TreeView leaks its children when clearing() / closing
- Move style-surfaces from Theme to ClanGUI components
- Finish adding SharedPtr to all ClanLib classes
- Added PixelBuffer resource support
- Broken borland compilation
- Add TTF support
- Add Packer to surfaces - Bug #4419
- CL_InputEvent is missing a 'float pos' or something like that for joystick events - Bug #5118
- Make color params consistent - some classes uses floats, while others use CL_Color
- CL_Mouse::get_key_name(int id) - perhaps replace it with an enum or similar
- TreeView sig_item_clicked
- Rename CL_Vector to CL_Vector3d, CL_Vector2 to CL_Vector2d, and make their API consistent with eachother.
- Make pitch parameter in CL_PixelBuffer optional
- unification of CL_Point(f) and CL_Vector
- ClanGL: Support for xinput and /dev/input/event* devices (graphic tablets, etc)

0.8: 
- Optimize fonts
- Improve pixelbuffer load times
- Make it possible to create an empty CL_Canvas before gfxmode is initialized.
- Fix tcol - Bug #4974
- Make TreeView collapsable by clicking on +/-, not on TreeItem
- Add connect_virtual to other signals than _v0
- Make new, simple GameTheme
- CL_Display/CL_GraphicContext::push_scale/rotate_offset() missing - Bug #5193
- Implement CL_Canvas_OpenGL::get_pixeldata, CL_Surface_SDL::get_pixeldata()
- Sprite::draw optimization - maybe pass a struct instead of millions of params
- SpritePacker infinite loop - Bug #4851
- Linux fullscreen problem - Bug #4883
- Linux resize problem - Bug #6980
- Fonts have a 'shadow' - Bug #4946
- glXGetProcAddressARB problem - Bug #5015
- Resizing a displaywindow to a very big size causes weird gui moving - Bug #5083
- Mouse behaviour incorrect when mouse is out of window - Bug #5019
- Remove asserts and replace with exceptions
- Add on_window_close to all examples
- Add Input/OutputSource example
- Split examples into groups: Core, Display, GUI, GL, Network, Sound, etc
- CL_Sprite construction crash - Bug #5586

0.9: GUI finalizing
- Add column resizing to TreeView
- Add sorting to TreeView

1.0:
- Party!


Ideas: 
------
(misc, random notes about anything)

- Display:
  - Add set_wrapping to CL_Texture/Surface
  - Add screenshot functionality
  - CL_DisplayWindow::get_height/width() under win32 is very expensive - cache size!
  - Sprite cutter:
    - Add pos and size to the "none"-cutter
    - Add a "serie" cutter - image1 = image0001.tga; image1_method = serie; image1_end = 100;
    - Add CL_Point and CL_Size to CL_SpriteDescription cutter functions ?
  - Sprite packer:
    - Rename to TexturePacker
    - Let users decide if they want to keep existing surface as texture
  - TextureBank:
    - Add a TextureBank, which stores all textures and available free space in them.
      This will be used by TexturePacker to fit more into textures, and just not
      one sprites per texture as done now.
  - Sprites:
    - play_default_speed -> play_fps ?
  - Input:
    - Expand joystick API and implementation
    - InputEvent: repeat count, right alt/shift/control aren't correctly filled in
    - sig_key_dblclk is not implemented
    - InputButton is not implemented
  - Fonts:
    - Add ellipsify to CL_Font. Used i.e when text doesn't fit in gui listbox.

- Sound:
  - Improve FadeFilter with a get_volume()

- Core:
  - Redesign CL_Timer into something alot more useful
  - Add CL_System::get_last_time() if you know you've called get_time() already in this frame,
    and just want the last time reported.
  - Timer bug on some hardware:
    The CL_System time function works like it should all is sweet and dandy, but
    often about 20-40 minutes into a game, it will suddenly jump from 0xE23F or
    something small to 0xFFEE1234. It appears as if the bits are getting
    inverted but never quit exactly just that. I was able to reduce my game loop
    down to just this and STILL get the clock bug:
      while (!CL_Keyboard::get_keycode(CL_KEY_ESCAPE)) {
        theTime = CL_System::get_time();
        if((theTime - oldTime) > 1000) throw CL_Error("Clock Bug!\n");
        CL_System::keep_alive();
      }

- GUI:
  - Write GUI editor
  - Write GUI wizard (cpp/h parser that inserts auto generated code)
  - A more common way for "capture". What for example, if in the future will be
    added yet another capture for Joystick or another Input device (for clicking buttons) ?
  - Keyboard navigation (make it possible to for users to create their own navigation classes?)
  - Clean up the components
	1) make subcomponents behave as parent component (use event_passing)
           CL_ListBox
           CL_ScrollBar
           CL_Window ?
        2) Add .scr and .gui options
           CL_Button: Done and documented
           CL_CheckBox: Done and documented
           CL_Frame: Missing "surface" and "mode" in .scr file
           CL_Image:
           CL_InputBox:
           CL_Label:
           CL_ListBox:
           CL_ProgressBar:
           CL_RadioButton:
           CL_ScrollBar:
           CL_Window:
  - CL_CheckBox: Add sig_checked/unchecked
  - CL_RadioButton: Add sig_checked/unchecked 
  - CL_RadioButton - when checked, make sure CL_RadioGroup is updated as well
  - CL_Window: Closing: Must check if running modal or not - to see if it was runned(), then quit(), else close() ?
  - CL_Button: If user press spacebar button is pressed, but not yet signaled (if user intercept
    sig_clicked signal), then user press TAB and focus changed to another component, but button
    remain pressed
  - Most components: Add set_font();
  - CL_MessageBox:
	[15:04] <zz|sergant> Imagine a button in gui_manager
	[15:05] <zz|sergant> when button clicked, a CL_MessageBox created
	[15:06] <zz|sergant> then user do mouse click on "OK" button for example
	[15:06] <zz|sergant> dialog is disappeared
	[15:06] <zz|sergant> until this all ok
	[15:07] <zz|sergant> then if you press button in gui_manager again (by keyboard)
	[15:07] <zz|sergant> and don't touch mouse (to keep cursor position)
	[15:07] <zz|sergant> MessageBox appeared at the same position
	[15:08] <zz|sergant> but mouseclicks on "OK" not worked
	[15:08] <zz|sergant> until user change cursor position
  - CL_InputBox: Need a signal to allow user to intercept entered characters to give him control
  - CL_Component: Replace sig_get_preferred_size with get_style()->set_preferred_size();
  - component call sig_preferred() when user not setup width and height in .gui, but it's too early,
    because other options ("text" for button) is not yet setuped, and in button_style::on_preferred_size
    button->get_text() return ""
    this call should be moved from component_generic to component_manager_generic, in
    CL_ComponentManager_Generic::create_components()
  - CL_RadioButton: Remove the concept of CL_RadioGroup, and make all CL_RadioButtons within a
    component work as a group. So, to group RadioButtons, you just put all of them within a
    component, be it CL_Component, CL_Frame or whatever.
    Problems: Where should signals be? Must the user hook into each CL_RadioButtons signals?
  - When creating new GUIManagers, it has to create a state of the previous, so when it gives control
    to the previous manager, it gets for instance mouse_up signalled correctly.
  - Scrollbars: Move mouse outside area, and then within, repeat a couple of times - the position which the bar moves
    is changed. Probably some broken delta values.
  - CL_ComboBox: Add this!
  - Add set_color to CL_Label etc
  - Add a flag to button_silver resource loading to tell if the images should be loaded from resource or file.

- Documentation:
  - Update tutorials!
  - Where appropriate, maybe links back to the api overview (eg. There
    should be a reference back to the overview display discusion in CL_Display)
  - Make links from Overviews, back to Home and to Reference.
    (Like Reference has now)
  - Clean up the font overview (it contains old text and images)
