# Version History

#### 6.0:

- Cocoa compile is now officially supported. (REALbasic 2011 versions)
- Added a ShadeSelection boolean property that uses Quartz when on Cocoa, GDI plus when on Windows and Cairo when on Linux to shade the selection in a nice way when in a full row mode. (Carbon compile does not do shading). Windows has two shading modes that it automatically switches a more list oriented shading if there are no horizontal grid lines and a more grid oriented shading if there are horizontal grid lines.
- Added a HotTrack property that lets cells be hot tracked when on Windows when hovering over them with the mouse. (full row selection needs to be on as well as ShadeSelection for this to take effect).
- Fixed a number of Cocoa bugs and did lots of improvements from the beta of the Cocoa port.

- #### 5.9.4:

- Added a HasBackColor property to the DataGridColumn class.
- Added a BackColor property to the DataGridColumn class.
- Third alpha of Cocoa Grid engine build support is included, this is the first version that is in the DataGrid. (Note this is in no way complete alpha).

  #### 5.9.2:

- Fixed longstanding issues with Horizontal scrolling. (note horizontal scrolling behavior is now also slightly changed to ensure it always works reliably and the new way speeds the overall rendering engine a bit)
- Fixed some issues with the FreezeCols proper.

  #### 5.9:

- Added a FreezeCols property.
- The Grid now supports horizontal mouse wheels.
- Faster and more compact runtime is now used on Windows systems.

  #### 5.8.4:

- Fixed a Linux Linker error.

  #### 5.8:

- Changed some constructors to new style REALbasic constructors to make the plugin work on the latest REALbasic version.
- Did some internal optimizations and replaced use of depreciated SDK functions.
- Plugin is now linked against and dependent on libstdc++6 instead of libstdc++5 on Linux systems.

  #### 5.7:

- Improved look and feel on Linux systems.
- Added a new constant - ScrollbarWidth to be used with the GetMeasure function.
- The Universal Binary is now compiled as Bundle instead of dylib to support the new mechanism in REALbasic to load Mach-O plugins directly into memory.
- Improved drag handling when multiple items are selected.
- Improved the mouse wheel handler on all platforms.

  #### 5.6:

- Added a PopUpMenu cell factory type.
- Added a PopUpMenuCellFullSensitivity property to the StyleGrid class.
- Added 3 new parameters to the CellAction event.
- Improved Right click handling in when in multi selection non full row mode.
- Did some internal restructuring.
- Added more graphics port safety around the RequestRowData event.
- Fixed cell border issue on Linux systems.
- Fixed a memory leak problem in the control.

  #### 5.5.2:

- * Fixed a draw glitch on non composite Windows on MacOS X.
- * Improved Right click handling in when in multi selection mode.
- * Did some internal restructuring.
- * Fine tuned Composite handling for Intel Macs.
- * Setting the Cols property to illegal value such as zero or less will now reset it to one instead of crashing.

- #### 5.5:

- Added support for MacOS X Universal Build.
- Fixed a problem with having both spanned cells and horizontal scrolling.
- Changed the parameters in the OnEditCell event to support a new and improved Cell edit class.
- Fixed a problem with inaccurate drawing of cell borders on Windows systems.
- Added a marker property to the DataGridCell class.
- Added a DataGridMarker class.
- Moved the BackColor property of a DataGridCell to the DataGridStyle class.
- Added a HasBackColor property to the DataGridStyle class (this previously existed but was hidden, it was automatically set when the backcolor was set but there was no way to unset it)
- Added a example project for Valentina v2.x.

  #### 5.3:

- Added REAL SQL Database Example project and a open source REALSQLDataGrid helper class.
- Pictures in the DataGrid now support masks. (REALbasic 2005 or later for Mac, REALbasic 5.x or later for other platforms)
- Added a isRightButton parameter to the MouseDown event.
- Headers no longer get clicked when the mouse click is right click.
- The right click is no longer marked as handled by the DataGrid which should let REALbasic properly fire the new REALbasic ContextMenu events.
- Right clicks are no longer counted in DoubleClick evaluations.
- Fixed a problem on Windows systems where the DataGrid was leaking one REALbasic Graphics object per cycle.
- Changed the compile architecture used for the plugin on the Windows target.
- Fixed a problem on Windows Vista systems which caused the control to be displayed in non themed mode.
- Added support for defining the font on Windows systems as System which will now make it pick correct depending on if the System is Windows 2000, Windows XP or Windows Vista.
- Did various of internal optimizations.

  #### 5.1:

- Some tweaks were done to add support for REALbasic 2006.
- Fixed a problem which the StyleGrid has suffered from since version 5.0 where using the readable Cell function to access hidden cells past the last Column would crash.
- The control no longer responds to MouseDown and KeyDown when it is disabled. (Not sure why REALbasic does not handle this part).
- Fixed a problem when running the control on Windows 2003 Server.
- Fixed a problem on non Themed Windows systems where the first checkbox on the screen was incorrectly drawn.

  #### 5.0:

- Columns now have their own Default cells which for example enables the user of the control to define that all cells in a certain column should be constructed with a certain style or back color.
- Added a DefaultCell property to the Column class.
- Added a CopyDefaultCell property to the Column class.
- Added a ItemData property to the Column class.
- Added a RowIsSelected function to the DataGridSelection class.
- Added another variation of the CellFromPoint function to let the DataGrid support pre-detecting cell actions.
- The plugin is now more optimized.
- Removed two bogus parameters from the SelectionChanged event.

- #### 4.7:

- Added support for non continuous selection when in full row selection mode.
- Changed the SelectionChanged event.
- Added a DataGridSelection class which has all the needed properties and functions to control the selection.
- Removed the SelectedRow property.
- Removed the SelectedCol property.
- Removed the SelectedRowEnd property.
- Removed the SelectedColEnd property.
- Removed the SelectCell method.
- Removed the SelectRange method.

  #### 4.5.4:

- Fixed a critical error in the dynamic cache handler.

  #### 4.5.2:

- Fixed a problem where the SelectedRowEnd and SelectedColEnd properties did not always give correct values.
- Fixed a crash problem when the Grid control was scaled down to zero height and or zero width, which prevented it from working with the WindowSplitter docking features.
- Fixed a problem on non Windows XP systems when compiling using REALbasic older than 5.5.

  #### 4.5:

- Fixed a problem where a non Themed mode Windows XP setting was not correctly detected when drawing the theme border on Windows Systems.
- Added support for REALbasic 2005 (Including the Linux IDE). Please note that the design mode of the control in next generation of REALbasic is not as sophisticated as it was since the control now needs to be emulated while in design mode. Only bare minimum of it is drawn in design mode.
- Fixed a problem where some measure constants were swapped.
- Improved the documentation.

  #### 4.4:

- Added support for MacOS X 10.4 (Tiger).
- Added a GetMeasure function.
- Added a EvenBackColor property.
- Added a OddBackColor property.
- Removed the old BackColor property.
- Fixed a problem where sometimes the Horizontal scrollbar would not enable it self when the Grid was made bigger and then smaller again.
- Fixed a problem where the bottom line of the Grid was not theme savvy.
- Fixed a problem where the Scroll Wheel was not properly disabled when the vertical scrollbar is disabled.

  #### 4.3:

- Headers can now have icons in them, including masked icons.
- The ItemData property on rows now takes a Variant instead of a Integer.
- Added a HasHeader property.
- Dropped the legacy HeaderHeight property.
- Dropped the legacy HeaderBackColor property.
- Made rendering faster.
- Replaced the header controller with a better one from the TreeView control.
- Changed the CornerButton custom rendering so it can now be done with a Graphics object so it now works on all platforms.
- The frame around the control is now theme compliant on new Windows systems.
- Fixed potential memory problem with Progressbar cells.
- Targeted a problem where headers where sometimes late at updating them self's if their width was set from the ControlCreated event.
- Fixed a bug where a click in the Resize Glyph area could sometimes trigger unwanted scrolling.
- The Left property on the DataGridPicture now supports larger value than 255. (Request ID 159).
- Fixed a issue where the Horizontal scrollbar on Windows systems was not respecting the LiveScroll property. (Issue ID 160).

  #### 4.0.3:

- Fixed a bug where the clearStaticCache parameter of the ReQuery method was not respected when set to false.

  #### 4.0.2:

- Fixed a crash on MacOS X when clicking between the corner button and the scrollbar in some cases.
- Compiled with the unpublished StyleGrid 7.2.5 core.

- #### 4.0:

- Added full Linux compile support.
- Added a RowsOnScreen() as Integer function.
- Added protection to the VScrollValue property so that it cannot be set out of bounds.
- Added protection to the HScrollValue property so that it cannot be set out of bounds.
- Added UTF-8 support on Windows.
- Added a AfterMouseDown event (To help with use of contextual menus)
- Progress cells now highlight properly on all platforms.
- Improved the Scroll wheel support on MacOS X.
- The Mach-O targets were re-linked without flat namespace to enable multiple Mach-O plugins to run in the same project.
- The plugin now has high quality HTML documentation instead of RB Plugin Plunger documentation.
- Fixed a problem in Carbon classic mode when LiveScroll was enabled.

  #### 3.8:

- Added Mach-O compile support. (Feature for REALbasic 5.5.2 and later)
- Added UTF-16 Unicode support for the Windows rendering engine. (Only REALbasic 5.1 or later benefits from this)
- Cells that contain pictures are now rendered much aster than before on Windows systems. (Only REALbasic 5.5 or later benefits from this)
- Fixed a crash problem and incorrect functionality problem with the InsertCol method. (More details can be found in the issue tracking system, issue ID 90).

  #### 3.6.2:

- Fixed a problem with the SelectionTextColor property. (Track ID 39)
- Fixed a draw glitch in the Corner button when running on MacOS Classic.
- Fixed a problem where alignment constant 10 was not respected when used on a Column level. (Track ID 31 and TrackID 50)

  #### 3.6:

- Added a HasSelectedTextColor property.
- Added a HasInactiveSelectionColor property.
- Added a InactiveSelectionColor property.
- Added a HasSelectedTextColor property.
- Fixed a problem which made the StyleGrid icon show up in the Windows IDE toolbar instead of the DataGrid icon.

- #### 3.5:

- Rewrote the entire header manager to use advanced buffer technology like cells in the Grid use.
- Header cells are now drawn on OS X with Quartz.
- Added a ControlResized event.
- Made the ControlCreated Event port safe to ensure correct drawing even if the code in the event will change port without restoring it.
- The Vertical Scrollbar can now truly be hidden.
- Fixed resize problem when the Grid lives on a TabPanel that is not the front most.
- Fixed the drawing pattern of the Resize glyph when the Grid lives on a TabPanel and is not in composite mode.
- Fixed a problem where drawing images in cells left the graphics port in incorrect state causing some failures in cell factories that inherit from Extended cells.
- The rendering engine has been made all context sensitive to prepare it for new features.
- Did some extra optimizations in the rendering engine.
- The SmallCheckbox cell factory will now fall back to normal checkbox cells on MacOS Classic since MacOS classic has no concept of small checkboxes.
- Fixed a problem where the new SmallCheckBox type che ControlTopIndent and ControlLeftIndent properties.
- Fixed a problem where the new SmallCheckBox Cell type was not using the ControlTopIndent and ControlLeftIndent properties.
- Fixed a problem which caused some non transparent images to be painted in color blend mode.
- Added a unsupported and undocumented CellFactory 5 (disclosure), this is intended for at least 2 groups who are proving that the StyleGrid can be made to display hierarchal data. (On Windows this will currently fall to the CheckBox cell factory except the Value property is free for custom use which is normally is not on a Checkbox cell factory).
- Doing a column resize will no longer cause text in cells to be clipped in certain font sizes when rendering with Quartz. (Track ID 6)
- Fixed a memory leak where the initial number value of a header was not cleaned properly. (Track ID 8)
- The header counter can now count to high numbers. (Track ID 8)

- #### 3.1:

- Added a InvalidateRow method.
- Added a new cell type for small checkboxes. (This is a Mac feature only, on Windows this type will use the large checkbox type instead).
- A 3rd state can now be set on cell checkboxes, both for small and large checkbox types.
- The value property on DataGridCells is now also used on checkbox cell types.
- Added support for REALbasic 5.5 event changes.
- Fixed class offset for REALbasic 5.5.
- Fixed a problem which caused some non transparent images to be painted in color blend mode.

  #### 3.0.2:

- Made some composite drawing improvements.
- Fixed a crash problem when a Carbon Application using the DataGrid was run on a classic MacOS.

  #### 3.0:

- Added a secondary cache for better load balancing.
- Added support for making some rows static. (Preserved in a static cache even if they get scrolled out of scope).
- Added a MakeRowStatic method.
- Added a MakeRowDynamic method.
- Added a RowIsStatic function.
- Added a GetStaticRows function.
- Added a ReQuery method.
- Improved re-synch when using the Rows setter property.
- Added support for automatic encoding handling on MacOS X, so that it will automatically detect encoding of strings, and accept multiple encodings within the same grid.
- Added for double arrow scrollbars on MacOS X. (Can be enabled with Tinker tool).
- Added a DataGridIndex class.
- Added support for CellFactories.
- Added all cell factory types from StyleGrid, Normal, Extended, Checkbox and Progress bars.
- Added support for styling, fonts, borders, alignment and more.
- Added support for Pictures in Cells.
- Added hundreds of other minor and major features from StyleGrid.
- Added access to inner objects for Styles to be able to do a handshake with StyleGridStyle objects.
- Added access to inner objects for Pictures to be able to do a handshake with StyleGridPicture objects.

- #### 2.0.2:

- Fixed a problem where sometimes a incorrect row was displayed when selecting a cell.
- Added a example for the Valentina Database. (Demonstrating 100.000 rows)

  #### 2.0:

- Added full dynamic release of rows once they scroll out of scope and and no more needed in the smart cache.
- This means that the number of rows is no longer limited to how much memory the machine has. This means that if you have a good data source to pull data from then its no problem to display millions of rows without it taking up the machines memory.
- Added "Smart Cache" which takes care of caching to make sure the same recently used data is not requested more often than needed.
- Did a number of small fixes in the rendering engine.
- Added a new example project called "300 million rows.rb"

  #### 1.5:

- Put a new rendering engine in the DataGrid to be able to support Composite Windows.
- Added a LiveScroll property.
- Added a ControlCreated Event.
- Added a MoveSelectionLeft method which will take into account hidden columns.
- Added a MoveSelectionRight method which will take into account hidden columns.
- Added a MoveSelectionUp method.
- Added a MoveSelectionUp method.
- The HScrollValue and VScrollValue properties will now do nothing if called before the ControlCreated event is fired.
- Did changes in the Win32 rendering engine to prevent a DC graphics context overflow when compiled with REALbasic 5.x and used with non NT based Windows systems.
- Fine tuned the KeyDown event.
- Fixed a problem that was born with the RB 5 fix in version 1.2 , where all Win32 Apps compiled with RB 4.x would fail and all Win32 Apps compiled with RB 5 would fail on Win 98.
- Made byte offset tweaks for REALbasic 5.1.
- Improved layout support for REALbasic 5.x (TabPanel support, resize support, and other layout support).
- Fine tuned some Quartz text draw procs.
- Added a HasHeaderBackColor property.
- Added a HasSelectionColor property.
- Added a HasBackColor property.
- Added a HasGridLineColor property.
- Added a HasCellColor property.
- Streamlined the appearance model so that appearance color selection on other platforms than the programmers platform is now better.
- The plugin now ships with a plugin for the REALbasic Windows IDE.
- Added a DataGridColumn class with the following properties: Width, MinWidth, Header, Alignment, HeaderAlignment
- Removed the ColumnWidth property since it now is implemented on the DataGridColumn class.
- Removed the ColumnMinWidth property since it now is implemented on the DataGridColumn class.
- Removed the Header property since it now is implemented on the DataGridColumn class.
- Removed the ColumnAlignment property since it now is implemented on the DataGridColumn class.
- Removed the ColumnHeaderAlignment property since it now is implemented on the DataGridColumn class.

- #### 1.2:

- Cell text is now drawn with Quartz on Mac OS X, making it antialiased.
- The DataGrid now supports REALbasic 5.x.
- The CellGotSelected event was renamed to SelectionChanged, and it now fires when selection is changed rather than if a Cell was selected, which means that it will fire event with row number 0 if nothing gets selected.
- The SelectCell method will now respect the LockDrawing property properly.
- The SelectCell method will now take correct actions if the Grid lives on a TabPanel or other such container.
- The SelectRange method will now respect the LockDrawing property properly.
- The SelectRange method will now take correct actions if the Grid lives on a TabPanel or other such container.
- The SelectionChanged event (former CellGotSelected) will now finish all drawing and release draw buffers before the event is actually fired.
- The KeyDown event is now connected to the CancelEventAction property, which increases the flexibility of the KeyDown event and corrects Win32 HIG issues as well as incorrect Win32 focus issues.
- The KeyDown event now does countermeasures to avoid a REALbasic Plugin SDK crash bug that affects all REALbasic versions prior to version 5.1.
- The Scroll Wheel is now disabled for non NT based Windows systems because of potential crash issues. (The scroll wheel is fully functional on Mac systems and NT based systems (NT, 2000 and XP)).

  #### 1.1:

- Added a constant to ColumnAlignment (10) which specifies left aligned truncated text.
- Added a constant to ColumnHeaderAlignment (10) which specifies left aligned truncated text.
- The DataGrid will no longer write a false memory warning to the OS X console when REALbasic launches.

  #### 1.0:

- The first version.

  ####