Release 52

Release Information #

PlatformNewAddedFixedChangedRemovedRelease Date
Desktop0161595November 4, 2023
Mobile for iOS412800November 4, 2023
Web0222370November 4, 2023
45046165

Desktop Changes #

TypeTicket NumberDescriptionDate
ADDED146GraffitiDateTimePickerButton has a new ValueChanged event.2023-10-12
ADDED146GraffitiDateTimePickerButton has a new SelectedValues as DateTime() function.2023-10-12
ADDED146GraffitiDateTimePickerPopup has a new ValueChanged event.2023-11-02
ADDED146GraffitiDateTimePickerPopup has a new SelectedValues as DateTime() function.2023-10-12
ADDED104GraffitiDrillMenu has a new ReverseDragScrollDirection as Boolean = False property.2023-08-23
ADDED104GraffitiDrillMenu will now scroll in the direction signified by the mouse movement when dragging the virtual scrollbar.2023-08-23
ADDED122GraffitiEditor has a new AcceptTabs as Boolean = True property. When False, Tab and Shift+Tab will change the focused control within the application window.2023-09-20
ADDED122GraffitiEditor has a new AllowMediaUploads as Boolean = True property. When False, pasting media will be disabled.2023-09-20
ADDEDNoneGraffitiEditor now overrides the Focus method to ensure focus is properly set to the editable area when calling the Focus method.2023-09-20
ADDED110GraffitiGrid has a new SelectionModes enumeration: 0 = Single, 1 = Multiple.2023-09-08
ADDEDNoneGraffitiGrid has a new BeforeEdit(column as GraffitiGridColumn, row as GraffitiGridRow, bounds as Xojo.Rect) as Boolean event.2023-08-14
ADDED118GraffitiGrid has a new ContextClick(column as GraffitiGridColumn, row as GraffitiGridRow, x as Integer, y as Integer) event. Row will be nil is context clicking a header.2023-09-14
ADDEDNoneGraffitiGrid has a new EditBegun(column as GraffitiGridColumn, row as GraffitiGridRow) event.2023-08-14
ADDEDNoneGraffitiGrid has a new EditCommitted(column as GraffitiGridColumn, row as GraffitiGridRow) event.2023-08-14
ADDEDNoneGraffitiGrid has a new EditCanceled(column as GraffitiGridColumn, row as GraffitiGridRow) event.2023-08-14
ADDED110GraffitiGridColumn has a new SortDirections enumeration: 0 = Unsorted, 1 = Ascending, 2 = Descending.2023-09-08
FIXEDNoneGraffitiDateTimePicker no longer draws an empty row of days when the first day of the week is also the first day of the month.2023-10-12
FIXED104GraffitiDrillMenu can no longer enter a state where selection is impossible after drag scrolling event.2023-08-23
FIXEDNoneGraffitiEditor no longer draws some elements of the image resizer improperly in dark mode.2023-09-20
FIXED80GraffitiEditor should no longer lose its bottom border in some scenarios.2023-09-08
FIXED122GraffitiEditor should now enforce Allowed and Disallowed tags when pasting.2023-09-20
FIXED168GraffitiEditorSelection.Copy now copies data in a format that works with Microsoft Office applications.2023-10-30
FIXED112GraffitiGrid can no longer enter a state where row containers are not drawn due to their initial width being larger than the control’s width.2023-09-11
FIXED118GraffitiGrid should no longer sort columns after clicking to dispel a DesktopMenuItem.2023-09-14
FIXED92GraffitiGrid once again draws text properly vertically centered when it is too long for the cell’s width.2023-08-11
FIXED114GraffitiGrid once again properly positions rows after a call to MoveRow.2023-09-12
FIXED114GraffitiGrid instances where rows incorporate Containers and Controls should now render more quickly on Windows and more reliably on macOS.2023-09-12
FIXED114GraffitiGrid.MoveRow once again properly moves rows.2023-09-12
FIXED116GraffitiGridRow.IsVisible should once again report a correct value for all rows.2023-09-14
FIXED106GraffitiWall now properly closes DesktopContainers added to the wall when calling Remove.2023-08-24
FIXED150GraffitiWall will now remove the added handler to DesktopContainer.Resized when removing.2023-10-13
CHANGEDNoneVarious GraffitiAnimator optimizations.2023-10-13
CHANGEDNoneGraffitiDateTimePicker.DeselectDate method renamed to Deselect.2023-10-12
CHANGEDNoneGraffitiDateTimePicker.GetSelectedDates() function renamed to Values().2023-10-12
CHANGEDNoneGraffitiDateTimePicker.SelectDate method renamed to SelectValue.2023-10-12
CHANGEDNoneGraffitiEditor now has more error handling in JavaScript functions.2023-10-03
CHANGED168GraffitiEditorSelection.Copy uses a new method to perform Copy operations on macOS and Windows that should be less error prone.2023-10-30
CHANGED110GraffitiGrid now raises the SelectionChanged event when selection is changed programmatically.2023-09-08
CHANGED110GraffitiGrid.SelectionMode property is now of type GraffitiGrid.Selections enumeration rather than an integer using constant values.2023-09-08
CHANGED110GraffitiGrid.SelectedRows is now a function returning an array of GraffitiGridRows rather than a property that can be modified. Use Select and Deselect methods to alter selections within the Grid.2023-09-08
REMOVEDNoneGraffitiGrid.CellEdit event2023-08-14
REMOVED118GraffitiGrid.ColumnContextClick2023-09-14
REMOVED118GraffitiGrid.RowContextClick2023-09-14
REMOVEDNoneGraffitiGrid.Sort constants2023-09-08
REMOVED110GraffitiGrid.SelectionMode constants2023-09-08
NOTENoneGraffitiDateTimePicker updated to API 2.0. Date replaced with DateTime and many deprecation warnings resolved.2023-10-12

Mobile Changes #

TypeTicket NumberDescriptionDate
NEWNoneGraffitiAccordion2023-09-02
NEWNoneGraffitiPopupMenu (Rewritten)2023-09-04
NEWNoneGraffitiSplitView2023-09-17
NEWNoneGraffitiWall2023-09-03
ADDEDNoneGraffitiGrid.IsTreeView as Boolean property2023-10-03
ADDEDNoneGraffitiGrid.TreeColumn as GraffitiGridColumn property2023-10-03
ADDEDNoneGraffitiGrid.CellDrawTreeDisclosure( g as Graphics, column as GraffitiGridColumn, row as GraffitiGridRow, disclosure as Picture, bounds as Xojo.Rect ) as Boolean event definition2023-10-03
ADDEDNoneGraffitiGrid.CellDrawTreeStructure( g as graphics, column as GraffitiGridColumn, row as GraffitiGridRow ) as Boolean event definition2023-10-03
ADDEDNoneGraffitiGridRow.IsExpanded property2023-10-03
ADDEDNoneGraffitiGridRow.Add( row as GraffitiGridRow ) method2023-10-03
ADDEDNoneGraffitiGridRow.AddAt( index as Integer, row as GraffitiGridRow ) method2023-10-03
ADDEDNoneGraffitiGridRow.IndexOf method2023-10-03
ADDEDNoneGraffitiGridRow.LastIndex() as Integer method2023-10-03
ADDEDNoneGraffitiGridRow.Remove( row as GraffitiGridRow ) method2023-10-03
ADDEDNoneGraffitiGridRow.RemoveAll method2023-10-03
ADDEDNoneGraffitiGridRow.RemoveAt( index as Integer ) method2023-10-03
FIXEDNoneGraffitiGrid now draws column headers in the right position when dragging to reorder and scrolled beyond 0.2023-08-17
FIXEDNoneGraffitiGridCellEditor.Visible is now properly maintained before/during/after edit operations.2023-08-17
FIXED163GraffitiPopupMenu no longer redisplays a broken selection screen after being dismissed.2023-10-25
FIXEDNoneGraffitiProgressBar has a new GlowIntensity property that controls the opacity of the value area’s glow. Value 0-100 with 0 being invisible.2023-08-21
FIXEDNoneGraffitiProgressBar value change animation is now smoother.2023-09-16
FIXEDNoneGraffitiSliders that are vertical with type Single once again properly draw their value area.2023-08-23
FIXEDNoneGraffitiSliders with type Single are no longer incorrectly limited by the value of ValueHigh.2023-08-23
FIXEDNoneGraffitiStepBar colors are now more consistent and readable in light mode.2023-08-09

Web Changes #

TypeTicket NumberDescriptionDate
ADDED147GraffitiAlertMessage has a CloseOnInteraction as Boolean = True property that controls whether interactions with buttons or the modal backdrop will close the message.2023-10-12
ADDED138GraffitiCalendar has a new ShowDayNames as Boolean = True property.2023-10-03
ADDED107GraffitiCalendar has a new TitleFormat as String property. When empty, the locale-specific default string will be displayed. Accepts moment.js formats or arbitrary text inside brackets: [Hello World].2023-08-25
ADDED125GraffitiCursor has a new UnsetBodyCursor method for clearing the cursor applied to the tag.2023-09-22
ADDED125GraffitiCursor has a new UnsetCursor(boundTo as WebControl) method for clearing the cursor applied to a control.2023-09-22
ADDEDNoneGraffitiFieldLabel has a new LabelPressed event.2023-08-14
ADDED171GraffitiFieldLabel now has a FieldStyle as GraffitiStyle property.2023-11-01
ADDED108GraffitiGridColumn.NativeCheckboxDisabled property.2023-08-28
ADDED160GraffitiGridRow.Add( row as GraffitiGridRow ) method.2023-10-23
ADDED160GraffitiGridRow.AddAt( index as Integer, row as GraffitiGridRow ) method.2023-10-23
ADDED160GraffitiGridRow.ItemAt( index as Integer ) as GraffitiGridRow function.2023-10-23
ADDED160GraffitiGridRow.ItemIndex( row as GraffitiGridRow ) as Integer function.2023-10-23
ADDED160GraffitiGridRow.LastIndex() as Integer function.2023-10-23
ADDED160GraffitiGridRow.Remove( row as GraffitiGridRow ) method.2023-10-23
ADDED160GraffitiGridRow.RemoveAll() method.2023-10-23
ADDED160GraffitiGridRow.RemoveAt( index as Integer ) method.2023-10-23
ADDED166GraffitiImagePicker has a new PictureValue() as Picture method. Returns Nil if no value or the value is not a PNG or JPEG due to framework limitations.2023-10-27
ADDEDNoneGraffitiMap.Icon has a new Constructor( p as Picture ) method.2023-09-24
ADDEDNoneGraffitiMap.Icon has a new Constructor( wf as WebFile ) method.2023-09-24
ADDED101GraffitiTextField has a new SelectAll method.2023-08-22
ADDED101GraffitiTextField has a new SelectionLength as Integer property.2023-08-22
ADDED101GraffitiTextField has a new SelectionStart as Integer property.2023-08-22
FIXEDNoneGraffitiAlert once again applies the TitleStyle property of GraffitiAlertMessages.2023-08-17
FIXED143GraffitiButton’s Pressed event no longer fires twice on Android-based touch-enabled devices when pressing.2023-10-08
FIXED107GraffitiCalendar no longer requires at least one item in the toolbar in order to resize its height properly.2023-08-25
FIXED126GraffitiCalendar should no longer encounter an exception when selecting some dates in some timezones.2023-09-22
FIXED138GraffitiEditor no longer immediately hides the virtual keyboard on Android devices when tapping to begin editing.2023-10-03
FIXED137GraffitiFieldLabel once again positions and sizes the field section properly.2023-08-14
FIXED100GraffitiGrid now overrides selection CSS entirely when a StyleRowSelected value is provided.2023-08-18
FIXED136GraffitiGrid should no longer report an empty search column or doubled column listing in certain scenarios.2023-10-03
FIXED131GraffitiGrid’s DateTime editor no longer breaks built-in WebDatePickers after its first use.2023-09-27
FIXEDNoneGraffitiGrid’s DateTime editor has been further modified for Bootstrap 5.2023-09-27
FIXED132GraffitiGrid’s DateTime editor now properly returns focus to the input after the picker is hidden and a selection has been made.2023-09-28
FIXED99GraffitiPopupMenu’s dropdown can once again receive focus when the control is embedded in a WebDialog.2023-08-18
FIXED172GraffitiPopupMenu now fires SelectionCleared when MultipleSelect = False and AllowClear = True and the clear button was pressed.2023-11-02
FIXED121GraffitiSpeak once again returns a list of voices.2023-09-19
FIXED94GraffitiTextField once again positions and sizes field properly.2023-08-14
FIXED94GraffitiTextField once again fires the LabelPressed event.2023-08-14
FIXED148GraffitiTextField’s Field no longer has inherited CSS values imposed.2023-10-13
FIXED148GraffitiTextField’s Label no longer has inherited CSS values imposed.2023-10-13
FIXED148GraffitiTextField’s LabelStyle property is once again applied as expected.2023-10-13
FIXED101GraffitiTextField’s LabelVisible property is once again honored when set via the inspector.2023-09-14
FIXED98GraffitiToolbar flex spacers are once again visible.2023-08-17
FIXED167GraffitiTree further updated for Bootstrap 5 compatibility.2023-10-29
FIXED167GraffitiTree now applies ItemSelStyle to the text element of the selected node rather than the entire row to reduce confusion and match user expectations.2023-10-29
CHANGED153GraffitiDateTimePicker will now set the Value to Nil when an invalid date is entered manually by the user.2023-10-14
CHANGED108GraffitiGrid’s NativeCheckbox Formatter now supports immediate value propagation on change when the column does not have an Editor assigned and when Editable and AutoEdit are false. To disable this functionalty, set the GraffitiGridColumn.NativeCheckboxDisabled property to True.2023-08-28
CHANGED108GraffitiGrid’s NativeCheckbox column type now renders asynchronously to support extended functionality.2023-08-28
CHANGED149GraffitiGrid now triggers a SelectionChanged event with updated row ordering after a drag is complete.2023-10-13
CHANGED160GraffitiGridRow.Cells property is now Hidden. Users should access row data using the Cell methods.2023-10-23
CHANGED160GraffitiGridRow.Children property is now Hidden. Users should access child rows using the new methods.2023-10-23
CHANGEDNoneGraffitiTextField’s LabelClick event has been renamed to LabelPressed.2023-08-14
NOTENoneGraffitiControlWrapper has seen some optimizations to increase backend speed of all products.2023-10-28
NOTENoneGraffitiGrid has been optimized in various ways for speed on the backend.2023-10-28