Release Information #

Platform Version Release Date
All R42 September 2, 2021
Target New Added Fixed Changed Removed
Desktop 2 13 5 0 0
Web 6 16 24 2 1

Desktop #

Type Change
NEW GraffitiChart
NEW GraffitiOrgChart
ADDED GraffitiGrid has a new AddRows(rows() as GraffitiGridRow) method.
ADDED GraffitiTreeView now supports column resizing by dragging from the right edge of a column. (15810)
ADDED GraffitiTreeView has a new AllowColumnResize as Boolean = False property.
ADDED GraffitiTreeView has a new ColumnResized(index as Integer) Event that is raised when a column resize operation has been completed. (15810)
ADDED GraffitiTreeView has a new ColumnWidthMaximum as Integer = 20 property for enforcing a maximum size on drag resizing of columns. (15810)
ADDED GraffitiTreeView has a new ColumnWidthMinimum as Integer = 20 property for enforcing a minimum size on drag resizing of columns. (15810)
ADDED GraffitiTreeView has a new ColumnWidth(index as Integer) as Integer method. (15810)
ADDED GraffitiTreeView has a new ColumnWidth(index as Integer, assigns width as Integer) method for setting a column’s width.
ADDED GraffitiTreeView has a new GetColumnFromX(x as Integer) as Integer method for returning the index of a column from the supplied relative X position. (15810)
ADDED GraffitiTreeView now supports horizontal scrolling by holding Shift while using the mouse wheel. (15810)
ADDED GraffitiTreeView has a new Node(index as Integer) as GraffitiTreeViewNode method.
ADDED GraffitiTreeView has a new LastNodeIndex() as Integer method.
FIXED GraffitiHTMLEditor now properly retains or resets SelStart and SelLength when focus is received either by tabbing or click. (15948)
FIXED GraffitiRibbon no longer prevents clicking the same button twice without mouse movement. (15935)
FIXED GraffitiTagField no longer re-shows the popup in a different place when a selection has been made.
FIXED GraffitiTagField no longer requires shifting focus out and back in to the search field the first time for normal operation.
FIXED GraffitiTagField now updates the hovered tag to the item under the mouse when removing a tag.

Web #

Type Change
NEW GraffitiGridHyperlink
NEW GraffitiGridPercentScale
NEW GraffitiPreloader
NEW GraffitiSpinner
NEW GraffitiStepBar
NEW GraffitiTour
ADDED GraffitiGrid has a new FooterClick(Column as GraffitiGridColumn) event.
ADDED GraffitiGrid has a new FooterContextClick(Column as GraffitiGridColumn) event.
ADDED GraffitiGrid has a new FooterRow as GraffitiGridRow property.
ADDED GraffitiGrid has a new FooterRowFunction as String property that accepts a JavaScript function with the following parameters: row, column, allRows.
ADDED GraffitiGrid has a new FooterRowHeight as Integer = 26 property.
ADDED GraffitiGrid has a new FooterRowVisible as Boolean = False property.
ADDED GraffitiGrid has a new FormatTypes.JavaScript for supplying a JavaScript function to format cell values for display.
ADDED GraffitiGrid has a new FormatTypes.StarRating for displaying star-type ratings in a column. Values should be Double. Point values below 0.5 will display an empty star while point values >= 0.5 and ⇐ 0.99 will display a half-star. (15796)
ADDED GraffitiGrid has a new RowFromDatabase( row as GraffitiGridRow ) event that is raised for each row added to the Grid from a RowSet to allow for advanced customization of row data on load. (15784)
ADDED GraffitiGrid has a new RowToDatabase( column as GraffitiGridColumn, row as GraffitiGridRow ) event that is raised when a row that is loaded via AddRowSet has a changed column value. Return True to cancel the default update attempt. (15784)
ADDED GraffitiGrid has a new StyleRowFooter as GraffitiStyle property.
ADDED GraffitiGridColumn has a new FormatterJavaScript property for supplying a JavaScript function to format cell values for display.
ADDED GraffitiGridColumn has a new PercentScale as GraffitiGridPercentScale property for defining color breaks on FormatTypes.Percent column values. (15846)
ADDED GraffitiGridColumn has a new ZeroValueOverride as String property. Used on columns whose Formatter is Currency or Double, when the value is exactly 0, this string will be displayed. (15806)
ADDED GraffitiGridRow cell values can now be JSONItems. This is intended to be used with FormatTypes.JavaScript and may have unexpected results otherwise.
ADDED GraffitiRectangle has a new PressedRight event for right-click events. (15933)
FIXED GraffitiAccordionMenu’s SelectedItem property is no longer read-only and will modify the selection in the browser.
FIXED GraffitiCalendar now uses a DateInterval when converting events to strings for transfer to the browser rather than adding a day via the DateTime constructor. (15853)
FIXED GraffitiAccordion now accounts for recent changes to the way Xojo implements WebContainer styling, which was disregarding properties set by the class. (15884)
FIXED GraffitiDatePickerSingle now displays more appropriately at varying heights. (15867)
FIXED GraffitiDatePickerMultiple now displays more appropriately at varying heights. (15867)
FIXED GraffitiGrid now properly applies selection of rows whose Selected property is set to True when added.
FIXED GraffitiGrid should no longer enter an erroneous state when embedded deeply where columns do not resize properly. (15896)
FIXED GraffitiGrid’s EditTypes.Double editor is now properly Bootstrap styled.
FIXED GraffitiGrid should no longer encounter NilObjectExceptions when using AddRows.
FIXED GraffitiGrid now properly expands parent rows when added using AddRows or AddRowSet when LockUpdate = True.
FIXED GraffitiGrid will no longer overwrite SelectedRows under certain conditions on cell clicks. (15855)
FIXED GraffitiGrid charts are no longer rendered with all values negative.
FIXED GraffitiGrid.AddRows method should load data to the client more quickly. (15791)
FIXED GraffitiGrid.AddRowSet method should load data to the client more quickly. (15791)
FIXED GraffitiGrid.ResetGrid method now also resets SelectedRows property.
FIXED GraffitiGridRow.DatabaseRowSetIDValue is now a Variant to account for other unique primary key data types. (15808)
FIXED GraffitiOrgChart now properly changes the Root node’s title instead of content when setting the RootNodeTitle property. (15938)
FIXED GraffitiPopupMenu once again clears the SelectedItem property when calling DeselectAll. (15830)
FIXED GraffitiPopupMenu will now clear the SelectedItem property when calling SetItemSelect with an ItemState parameter of False if the specified item is the current value of SelectedItem. (15830)
FIXED GraffitiPopupMenu will now clear the SelectedItem property when an item has been deselected by the user if it is the current value of SelectedItem. (15830)
FIXED GraffitiRectangle.Pressed now properly fires on click or touch rather than mouse enter. (15906)
FIXED GraffitiStyle.AddTo no longer leaves an in-browser timer running that can cause subsequent RemoveFrom calls to fail. (15871)
FIXED GraffitiTextField now sends updates more frequently when text is changed. (15893)
FIXED GraffitiTimePicker should no longer encounter random Bad Format exceptions in GraffitiTimePicker.DateToTime. (15828)
CHANGED GraffitiGrid will now attempt to Define or Convert the encoding of strings when sending data to the client if the Encoding of the value isn’t UTF8. This should address issues of blank grids when the developer doesn’t explicitly manage the encoding.
CHANGED GraffitiGrid now sends Double and Currency values to the browser as Number rather than String.
REMOVED Removed en-US locale specific formatting for integer and double types throughout.
NOTE When using GraffitiGrid.FooterRowFunction and GraffitiGridColumn.FormatterJavaScript with Double and Currency value types, you must use the JavaScript parseFloat(https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/parseFloat) function on values inside your JavaScript function. It may also be necessary to use JavaScript’s toFixed(https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/toFixed) function on these values to get the desired result.