Loading document parsing libraries...
# Changelogs
Module
## Release 43.1
Release Date: Nov 19, 2021
| Type | Ticket | Description |
| --- | --- | --- |
| Note | None | First version for Xojo Desktop API 2.0 |
| Fixed | 16632 | GraffitiColorPicker no longer throws an UnsupportedOperationException when inside a ContainerControl in 2021R3. |
| Fixed | None | GraffitiKanban now properly displays columns at load time. |
| Fixed | None | GraffitiKanban once again properly detects and updates for Dark Mode on macOS. |
| Fixed | None | GraffitiOrgChart will now automatically switch between dark and light modes. |
| Removed | None | GraffitiDropZone.Immersive property |
| Removed | None | GraffitiKanban.DarkMode property |
| Removed | None | GraffitiOrgChart.DarkMode property |
## Release 43.2
Release Date: Nov 20, 2021
| Type | Ticket | Description |
| --- | --- | --- |
| Fixed | None | GraffitiSignature's Timed method once again functions. |
| Fixed | None | More than 10,000 deprecation and analysis warnings. |
## Release 43.3
Release Date: Nov 22, 2021
| Type | Ticket | Description |
| --- | --- | --- |
| Fixed | None | More fixed for references to old controls in various products. |
| Fixed | None | Another 1500 or so deprecation and analysis warnings. |
## Release 43.4
Release Date: Nov 22, 2021
| Type | Ticket | Description |
| --- | --- | --- |
| Fixed | None | Fixed 60+ errors on Windows due to a failed merge. |
| Fixed | None | All HTMLViewer-base controls once again function properly on Windows. |
## Release 43.5
Release Date: Nov 22, 2021
| Type | Ticket | Description |
| --- | --- | --- |
| Fixed | None | More Desktop control variant fixes. |
| Removed | None | GraffitiRibbon.Style property. |
| Removed | None | GraffitiRibbon.Styles enumeration. |
## Release 44
Release Date: Apr 1, 2022
| Type | Ticket | Description |
| --- | --- | --- |
| New | None | GraffitiPDFDocument |
| New | None | GraffitiPDFFont |
| New | None | GraffitiPDFMetadata |
| New | None | GraffitiPDFTemplate |
| New | None | GraffitiPDFProtection |
| Added | None | GraffitiDrillMenuItem has a new BackItemText as String property. When set, this will override the global BackItemText property of the control when this item is currently displayed. |
| Added | 16406 | GraffitiEditor has a new Ready event that is raised when the component has fully loaded. |
| Added | None | GraffitiEditor has a new SpellCheck as Boolean = True property. |
| Added | None | GraffitiEditor has a new SpellCheckLanguage as String = "en-US" property. |
| Added | 16569 | GraffitiEditor.InsertLink has a new optional relationship as String = "" parameter. |
| Added | 16205 | GraffitiEditorFonts has a new DefaultLineHeight as Double property. |
| Added | 16205 | GraffitiEditorFormat has a new LineHeight as Double property. |
| Added | 16405 | GraffitiEditorToolbar has a new SectionPadding as Integer = 0 property for adding horizontal space between section boundaries and their contained items. |
| Added | 16661 | GraffitiGrid has a new WrapCellText as Boolean = True property to control cell wrapping within the component's display for value of type String. |
| Added | 16661 | GraffitiGrid has a new MouseWheel( x as Integer, y as Integer, deltaX as Integer, deltaY as Integer) as Boolean event. Return True to cancel default scroll operations. |
| Added | None | GraffitiHTMLtoPDF now exports PDF files with selectable contents. |
| Added | 16518 | GraffitiListBox has a new CellBorderColor as Color property. |
| Added | None | GraffitiListBox now has a HeaderAlignmentAt method pair for setting header alignment independent of column cell alignment. |
| Added | None | GraffitiPropertyListChild has a new ReadOnly as Boolean = False property. When True, Clicks and DoubleClicks will not trigger the editor for that row. |
| Added | 16477 | GraffitiRibbon now modifies display of buttons with Active = True in the UI when not used in overflow menus to convey a toggle state. |
| Added | 16596 | GraffitiSyntaxEditor has a new AddMode( modeName as String, modeSource as String ) method for adding custom highlighting modes to the component. |
| Added | 16596 | GraffitiSyntaxEditor.Modes has a new Custom entry. |
| Added | None | GraffitiSyntaxEditor has a new ModeName as String property. |
| Added | 16605 | GraffitiSyntaxEditor has a new AddTheme( themeName as String, themeSource as String ) method for adding custom themes to the component. |
| Added | 16605 | GraffitiSyntaxEditor.Themes has a new Custom entry. |
| Added | 16605 | GraffitiSyntaxEditor has a new ThemeName as String property. |
| Added | None | GraffitiTabBarItem has a new TabColorHover property. |
| Added | None | GraffitiTabBarItem has a new TextColorHover property. |
| Fixed | 16619 | GraffitiColors syntax errors on Linux. |
| Fixed | 16619 | GraffitiDateTimePickerPopup errors on Linux related to Desktop API 2.0. |
| Fixed | None | GraffitiEditor no longer exposes the old GotFocus and LostFocus events. Use FocusReceived and FocusLost respectively. |
| Fixed | None | GraffitiEditor no longer fires SelectionChanged when receiving focus if the selection is unchanged. |
| Fixed | 16379 | GraffitiEditor now properly displays FontAwesome icons in GraffitiEditorToolbarMenus. |
| Fixed | None | GraffitiEditor now properly returns the current view. |
| Fixed | 16423 | GraffitiEditor now properly updates the selected text font size to the default when multiple sized paragraphs are selected. |
| Fixed | None | GraffitiEditor will now show active buttons with a lighter background color in Dark Mode. |
| Fixed | 16431 | GraffitiEditor now retains padding value upon resize. |
| Fixed | 16623 | GraffitiEditor now retains selection upon resize. |
| Fixed | 16623 | GraffitiEditor now retains scroll position upon resize. |
| Fixed | None | GraffitiEditor should no longer enter an error state when changing some image properties. |
| Fixed | 16419 | GraffitiEditor object editing submenus, such as Alignment for images, will now shift in an attempt to remain in the viewport if they are to fall partly outside the viewable area. |
| Fixed | 16623 | GraffitiEditor's code view should once again function properly after resize. |
| Fixed | None | GraffitiGrid once again sets Font properties before calling the DrawCellText event. |
| Fixed | None | GraffitiGrid now resizes columns more correctly with the cursor position on scaled displays. |
| Fixed | 16661 | GraffitiGrid now raises the DrawCellText event after the default font and color properties have been applied to the Graphics context. |
| Fixed | 16619 | GraffitiListBox errors on Linux related to Desktop API 2.0. |
| Fixed | 16388 | GraffitiImageWell no longer cuts off Caption text by two characters. |
| Fixed | None | GraffitiImageWell updated for HiDPI displays. |
| Fixed | 16427 | GraffitiListBox will now explicitly set Tooltip in mouse events to workaround an apparent bug in Tooltip property inheritance on Windows. |
| Fixed | None | GraffitiListBox will now correctly generate header text values that have not been explicitly set. |
| Fixed | None | GraffitiListBox will now correctly generate header sort abilities for columns that have not been explicitly set. |
| Fixed | 16518 | GraffitiListBox again has CellBorder* method pairs. |
| Fixed | None | GraffitiListBox errors on Linux related to Desktop API 2.0. |
| Fixed | None | GraffitiListBox should no longer fire the Change event multiple times when dragging a row. |
| Fixed | None | GraffitiPopupMenu errors on Linux related to Desktop API 2.0. |
| Fixed | None | GraffitiRibbon once again properly hides and resizes DesktopContainers and DesktopUIControls on Windows when reloading the component’s data. |
| Fixed | 16374 | GraffitiRibbon once again properly hides and resizes DesktopContainers and DesktopUIControls on Windows when setting the SelectedTab property. |
| Fixed | 16619 | GraffitiSegButton errors on Linux related to Desktop API 2.0. |
| Fixed | None | GraffitiSlideshow now more appropriately animates on HiDPI displays. |
| Fixed | 16596 | GraffitiSyntaxEditor should no longer hang on CurrentColumn.Get when mashing keys like a madman. |
| Fixed | 16596 | GraffitiSyntaxEditor should no longer hang on CurrentLine.Get when mashing keys like a madman. |
| Fixed | 16594 | GraffitiTabBar now applies the proper padding to the right side of the close icon when displayed horizontally. |
| Fixed | 16608 | GraffitiTabBar once again applies the HoverTabColor property when CustomColors = True. |
| Fixed | 16608 | GraffitiTabBar once again displays selection when the control is disabled. |
| Fixed | 16619 | GraffitiTagField error on Linux related to Desktop API 2.0. |
| Note | None | Cleared out some old Desktop 1.0 code. |
| Note | None | GraffitiHTMLtoPDF now outputs vector PDFs rather than rasterized pages. |
## Release 44.1
Release Date: Apr 4, 2022
| Type | Ticket | Description |
| --- | --- | --- |
| Fixed | 16713 | GraffitiEditor now properly hides the toolbar from the Opening event when setting editor.toolbar.visible = false. |
| Fixed | 16713 | GraffitiEditor will no longer leave a blank void below the editor area when the toolbar is invisibile. |
## Release 45
Release Date: May 29, 2022
| Type | Ticket | Description |
| --- | --- | --- |
| New | None | GraffitiMapViewer |
| New | None | GraffitiPDFViewer |
| Added | None | GraffitiCalendarRestriction |
| Added | None | GraffitiCalendar has a new DisableDay( day as DateTime ) method. |
| Added | None | GraffitiCalendar has a new EnableDay( day as DateTime ) method. |
| Added | 16780 | GraffitiCalendar has a new HideDaysOfWeek( days() as Integer ) method. |
| Added | 16780 | GraffitiCalendar has a new HideDaysOfWeek( ParamArray days as Integer ) method. |
| Added | 16780 | GraffitiCalendar has a new RestrictEventDisplay as Boolean = False property. |
| Added | None | GraffitiCalendar has a new Restriction as GraffitiCalendarRestriction property. |
| Added | 16780 | GraffitiCalendar has a new RestrictSelection as Boolean = False property. |
| Added | 16780 | GraffitiCalendar has a new RestrictView as Boolean = False property. |
| Added | None | GraffitiCalendar has a new ViewEnd as DateTime property. This property is read-only. |
| Added | None | GraffitiCalendar has a new ViewStart as DateTime property. This property is read-only. |
| Added | None | GraffitiCalendar now uses Bootstrap light and dark themes by default. Custom themes are still jQuery UI. |
| Added | None | GraffitiCalendar now changes its appearance when the system is switched to Dark or Light color schemes. |
| Added | None | GraffitiGrid now supports new lines in cell editing by holding Control while pressing Enter. |
| Added | 16789 | GraffitiHTMLtoPDF has a new BuildFailed event definition for when the FailureTimeout condition is met and the document has not been returned. |
| Added | 16789 | GraffitiHTMLtoPDF has a new ImageFailed( byref url as String ) as Boolean event definition for when an image is unable to be loaded. Modify URL with a BASE64 string representation of an image and return False to continue or Return True to cancel the build. |
| Added | 16789 | GraffitiHTMLtoPDF has a new FailureTimeout property that will raise the BuildFailed event when the time (in milliseconds) has passed. |
| Added | 16789 | GraffitiHTMLtoPDF has a new Scale as Double property that determines the output scale of the page images. Valid values are between 0 and 1. |
| Added | None | GraffitiListbox has a new HeaderBackgroundColorAt( index as Integer, assigns value as Color ) method. |
| Added | None | GraffitiListbox has a new HeaderBackgroundColorAt( index as Integer ) as Color function. |
| Added | None | GraffitiListbox has a new HeaderBackgroundColorSetAt( index as Integer ) as Boolean method. |
| Added | None | GraffitiListbox has a new HeaderBackgroundColorHoverAt( index as Integer, assigns value as Color ) method. |
| Added | None | GraffitiListbox has a new HeaderBackgroundColorHoverAt( index as Integer ) as Color function. |
| Added | None | GraffitiListbox has a new HeaderBackgroundColorHoverSetAt( index as Integer ) as Boolean function. |
| Added | None | GraffitiListbox has a new HeaderBoldAt( index as Integer, assigns value as Boolean ) method. |
| Added | None | GraffitiListbox has a new HeaderBoldAt( index as Integer ) as Boolean function. |
| Added | None | GraffitiListbox has a new HeaderItalicAt( index as Integer, assigns value as Boolean ) method. |
| Added | None | GraffitiListbox has a new HeaderItalicAt( index as Integer ) as Boolean method. |
| Added | None | GraffitiListbox has a new HeaderTextColorAt( index as Integer, assigns value as Color ) method. |
| Added | None | GraffitiListbox has a new HeaderTextColorAt( index as Integer ) as Color function. |
| Added | None | GraffitiListbox has a new HeaderTextColorSetAt( index as Integer ) as Boolean function. |
| Added | None | GraffitiListbox has a new HeaderTextColorHoverAt( index as Integer, assigns value as Color ) method. |
| Added | None | GraffitiListbox has a new HeaderTextColorHoverAt( index as Integer ) as Color function. |
| Added | None | GraffitiListbox has a new HeaderTextColorHoverSetAt( index as Integer ) as Boolean function. |
| Added | None | GraffitiListbox has a new HeaderUnderlineAt( index as Integer, assigns value as Boolean ) method. |
| Added | None | GraffitiListbox has a new HeaderUnderlineAt( index as Integer ) as Boolean method. |
| Fixed | 16780 | GraffitiCalendar once again properly applies jQuery UI themes. Requires a fully-qualified URL -- such as "https://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.11.4/themes/cupertino/jquery-ui.min.css" -- be passed to LoadTheme. |
| Fixed | 16780 | GraffitiCalendar.DayClick event now passes the proper month in the parameter, previousl was monthNumber - 1. |
| Fixed | None | GraffitiDateTimePicker should no longer throw an exception while painting days when the control is very small. |
| Fixed | 16776 | GraffitiEditor no longer uses an excessive amount of CPU while idle when creating very large lists of toolbar options. |
| Fixed | 16830 | GraffitiGrid's EditField is once again properly positioned when scrolled. |
| Fixed | 16830 | GraffitiGrid's EditField will now properly size itself when the selected cell is partially outside the bottom of the viewport. |
| Fixed | None | GraffitiGrid should no longer encounter an OutOfBoundsException when sorting while a row contains nil value for the sort column. |
| Fixed | None | GraffitiGrid column resizing once again functions properly when scrolled horizontally. |
| Fixed | None | GraffitiGrid cells with embedded controls or containers no longer draw outside those embedded elements outside the Grid area. |
| Fixed | None | GraffitiGrid will now preemptively disable BreakOnExceptions in the Sort method to avoid breaks on sorting of objects, which are handled internally. |
| Fixed | None | GraffitiGrid should no longer leave empty space where rows should be drawn under some conditions due to scroll offsets. |
| Fixed | None | GraffitiGrid should once again scroll vertically to display all rows. |
| Fixed | 16970 | GraffitiGrid once again properly selects rows when holding Shift and the first selected row has a higher index than the subsequently selected row. |
| Fixed | 16970 | GraffitiGrid now preserves selection on right-click. |
| Fixed | None | GraffitiGrid's ScrollIntoView method should now ensure that the entire row is visible. |
| Fixed | 16789 | GraffitiHTMLtoPDF will now attempt to load local and remote files by URL and stream them directly to BASE64 for rendering. |
| Fixed | 16789 | GraffitiHTMLtoPDF should no longer simply fail to output anything when image errors are encountered. Instead, these nodes may be removed from the resulting document. |
| Fixed | 16825 | GraffitiListbox once again properly changes border drawing when setting the Border property. |
| Fixed | None | GraffitiSyntaxEditor no longer raises far more SelChange events than necessary. |
| Changed | None | GraffitiCalendar's CalendarView property has been renamed to "View". |
| Changed | None | GraffitiGrid no longer requires supplying scrollbars to the ScrollbarHorizontal and ScrollbarVertical properties programmatically at runtime. |
| Changed | None | GraffitiGrid no longer requires supplying a DesktopTextField to the EditField property. This is now added programmatically at runtime. |
| Changed | None | GraffitiGrid.EditField is now a DesktopTextArea. |
| Changed | None | GraffitiGrid now uses Shift+MouseWheel for horizontal scroll. |
| Changed | None | GraffitiPDFDocument.OutputQuality has moved to the GraffitiHTMLtoPDF class. |
| Changed | None | GraffitiSyntaxEditor.CanUndo now synchronously reads data rather than relying solely on timed caching. |
| Changed | None | GraffitiSyntaxEditor.CanRedo now synchronously reads data rather than relying solely on timed caching. |
| Changed | None | GraffitiSyntaxEditor.IsDirty now synchronously reads data rather than relying solely on timed caching. |
| Changed | None | GraffitiSyntaxEditor.SelStart now synchronously reads data rather than relying solely on timed caching. |
| Changed | None | GraffitiSyntaxEditor.SelLength now synchronously reads data rather than relying solely on timed caching. |
| Changed | None | GraffitiSyntaxEditor.SelText now synchronously reads data rather than relying solely on timed caching. |
| Changed | None | GraffitiSyntaxEditor.Text now synchronously reads data rather than relying solely on timed caching. |
| Removed | None | GraffitiGrid.ScrollbarHorizontal property. |
| Removed | None | GraffitiGrid.ScrollbarVertical property. |
| Note | None | GraffitiCalendar version updated to 3.10.0. |
| Note | None | GraffitiCalendar has been updated to use DateTime. Users are encouraged, but not required due to Xojo's built-in conversion, to follow suit. |
| Note | None | GraffitiCalendar event parameters have changed significantly. Some no longer have parameters they once did, and corresponding properties should be used. User code updates will be necessary. |
| Note | None | GraffitiDesktopControl has been cleaned up quite a bit to remove code and members that are not used since the addition of built-in JavaScript communication. |
## Release 46
Release Date: Jul 13, 2022
| Type | Ticket | Description |
| --- | --- | --- |
| New | None | GraffitiAvatar |
| New | None | GraffitiAvatarGroup |
| New | None | GraffitiWindowNotifier |
| Added | None | GraffitiAnimatorControl.AnimationComplete delegate now has an animControl as GraffitiAnimatorControl parameter. |
| Added | None | GraffitiCalendar has a new TimeFormat as String property. Leaving empty will apply the current user's locale. Accepts Moment.js format strings. |
| Added | None | GraffitiTagField now supports pressing Backspace to remove items. |
| Fixed | 17009 | GraffitiCalendar.DeselectAll once again functions properly. |
| Fixed | 17009 | GraffitiCalendar.SelectDates once again functions properly. |
| Fixed | 17009 | GraffitiCalendar should no longer enter an error state causing Month view to fail to render after calling DeselectAll. |
| Fixed | 17009 | GraffitiCalendar's header text is no longer excessively large. |
| Fixed | 16979 | GraffitiGrid now properly displays and scrolls short lists of data. |
| Fixed | 16979 | GraffitiGrid now applies PanelIndex to generated scrollbars. |
| Fixed | None | GraffitiGrid once again chooses an appropriate color for cell text when SystemColors = False and CustomColors = False. |
| Fixed | 16979 | GraffitiGrid now properly positions scrollbars and edit field in DesktopContainers of any depth. |
| Fixed | 17037 | GraffitiKanban once again displays columns horizontally on load when the control width is sufficiently wide. |
| Fixed | None | GraffitiKanban once again applies the user's Dark or Light mode preference at load. |
| Fixed | 17037 | GraffitiKanban no longer displays columns twice. |
| Fixed | 17037 | GraffitiKanban no longer carries out some edit operations when list items are not currently being edited. |
| Fixed | 17037 | GraffitiKanban once again raises the ListItemPressed event. |
| Fixed | None | GraffitiKanban once again properly handles pressing Enter or Escape during edit operations. |
| Fixed | None | GraffitiSplitter no longer neglects to reset the mouse cursor on MouseExit. |
| Fixed | None | GraffitiTagField now properly uses system colors on macOS. |
| Removed | None | GraffitiTagField.AdaptiveHeight property. |
| Removed | None | GraffitiTagField.HeightChanged event. |
| Removed | None | GraffitiTagField.MinimumHeight property. |
| Removed | None | GraffitiTagField.SearchField property. |
| Removed | None | GraffitiTagField.SetSearchField method. |
| Changed | None | GraffitiSplitter now imposes a minimum value for MinimumLeftTop and MinimumRightBottom of 2x the size of the splitter based on the split direction in order to ensure that panes cannot become invisible and disconnected from the Splitter. |
| Note | None | Fixed ~800 Deprecation Warnings. |
| Note | None | GraffitiCalendar updated to FullCalendar version 3.10.2. |
| Note | None | GraffitiCalendar and supporting classes now fully updated to API 2.0 with all deprecation warnings resolved. |
| Note | None | GraffitiKanban editing has been updated for compatibility with the CEF version that ships with Xojo 2022r1.1. |
| Note | None | GraffitiTagField has been modified to function better in Desktop API 2.0. |
| Note | None | GraffitiTagField now generates its own TextField for search. |
| Note | None | GraffitiTagField no longer supports adaptive height due to changes in Desktop API 2.0. This may be re-added at a later date by request. |
## Release 47
Release Date: Jul 26, 2022
| Type | Ticket | Description |
| --- | --- | --- |
| Added | None | GraffitiFontPicker now creates its own search field. |
| Added | None | GraffitiFontPicker has a new AlwaysShowScrollbars as Boolean = True property for determining if scrollbars should be logically hidden or shown based on cursor position. |
| Added | None | GraffitiFontPicker now creates a scrollbar for the Favorites section. |
| Added | None | GraffitiFontPicker now creates a scrollbar for the All Fonts section. |
| Added | None | GraffitiTagField now has a LastItemIndex method. |
| Added | None | GraffitiTagField now has a RemoveAllItems method. |
| Added | None | GraffitiTagField has a new TagMouseEnter(tag as GraffitiTagFieldItem) event. |
| Added | None | GraffitiTagField has a new TagMouseExit(tag as GraffitiTagFieldItem) event. |
| Fixed | None | GraffitiColorPicker no longer draws the color wheel twice on Windows. |
| Fixed | None | GraffitiColorPicker now draws a crosshair for the current color position on the color wheel when not dragging. |
| Fixed | None | GraffitiColorPicker's color wheel should now redraw more quickly. |
| Fixed | None | GraffitiFontPicker now applies transparent to the Search field's background to address changes to Xojo. |
| Fixed | 17093 | GraffitiFontPicker now properly scrolls using the mouse wheel on macOS, working around a known bug in Xojo relating to mouse coordinates in the MouseWheel event. |
| Fixed | None | GraffitiFontPicker now properly truncates long font names. |
| Fixed | None | GraffitiFontPicker once again removes all recents on the first pass when clicking the reset button. |
| Fixed | 17080 | GraffitiWindowNotifier now keeps notes visible when passing 0 to Add. |
| Removed | None | GraffitiTagField.TagHover event |
| Changed | None | GraffitiTagField now draws item close icons to the right, matching the current expected UI conventions. It was drawn on the left previously as this type of control was relatively unseen when the control was first developed and there was no user expectation of position. |
| Note | None | GraffitiTagField's mouse handling has been significantly modified to simplify the code. |
## Release 48
Release Date: Sep 5, 2022
| Type | Ticket | Description |
| --- | --- | --- |
| New | None | GraffitiBadge |
| New | None | GraffitiTooltip |
| Added | 17105 | GraffitiCommandBar has a new BackgroundColor as Color property. |
| Added | 17105 | GraffitiCommandBar has a new BorderColor as Color property. |
| Added | 17105 | GraffitiCommandBar has a new MenuButtonForegroundColor as Color property. |
| Added | 17105 | GraffitiCommandBar has a new MenuButtonForegroundHoverColor as Color property. |
| Added | 17105 | GraffitiCommandBar has a new MenuButtonIndicatorColor as Color property. |
| Added | 17105 | GraffitiCommandBar has a new MenuButtonTickColor as Color property. |
| Added | 17105 | GraffitiCommandBar has a new OverflowBackgroundColor as Color property. |
| Added | 17105 | GraffitiCommandBar has a new OverflowBackgroundHoverColor as Color property. |
| Added | 17105 | GraffitiCommandBar has a new OverflowForegroundColor as Color property. |
| Added | 17105 | GraffitiCommandBar has a new OverflowForegroundHoverColor as Color property. |
| Added | 17105 | GraffitiCommandBar has a new UseCustomColors as Boolean = False property. |
| Added | 17105 | GraffitiCommandBarButton has a new ForegroundColor as Color property. |
| Added | 17105 | GraffitiCommandBarButton has a new ForegroundActiveColor as Color property. |
| Added | 17105 | GraffitiCommandBarButton has a new ForegroundHoverColor as Color property. |
| Added | 17105 | GraffitiCommandBarButton has a new IndicatorActiveColor as Color property. |
| Added | 17105 | GraffitiCommandBarButton has a new IndicatorColor as Color property. |
| Added | 17105 | GraffitiCommandBarButton has a new TickColor as Color property. |
| Added | 17105 | GraffitiCommandBarButton has a new UseCustomColors as Boolean = False property. |
| Added | None | GraffitiStatusBar now has an ItemDoublePressed( item as GraffitiStatusBarItem ) event. |
| Added | None | GraffitiStatusBar now has an ItemMouseEnter( item as GraffitiStatusBarItem ) event. |
| Added | None | GraffitiStatusBar now has an ItemMouseExit( item as GraffitiStatusBarItem ) event. |
| Added | None | GraffitiStatusBar now has a LastIndex as Integer function. |
| Added | None | GraffitiCommandBar will no longer attempt to display empty tooltips. |
| Fixed | None | GraffitiGrid now moves columns appropriately using the current mouse position when dragging. |
| Fixed | None | GraffitiPagination should no longer encounter an OutOfBoundsException when drawing very few pages. |
| Fixed | None | GraffitiPagination should no longer move the next button toward the right when there aren't enough pages to fill the bar to match VisiblePages. |
| Fixed | 17279 | GraffitiRibbon now supports adding GraffitiRibbonContainers to GraffitiRibbonColumns. |
| Fixed | None | GraffitiRibbon has been updated to use Xojo.Rect instead of REALbasic.Rect. |
| Fixed | None | GraffitiSlider now positions the tooltip centered relative to the control based on orientation when ShowValueInTooltip = True. |
| Fixed | None | GraffitiStatusBar now exposes the MouseEnter event. |
| Fixed | None | GraffitiStatusBar now exposes the MouseExit event. |
| Fixed | None | GraffitiStatusBar now properly redraws upon display scaling factor changes. |
| Fixed | 17211 | GraffitiStatusBar once again properly tracks mouse position on items. |
| Changed | None | GraffitiStatusBar's ItemClick event has been renamed to ItemPressed for consistency. |
| Changed | None | GraffitiStatusBar no longer exposes some events that were inconsistent with its usage. |
## Release 49
Release Date: Feb 26, 2023
| Type | Ticket | Description |
| --- | --- | --- |
| New | None | GraffitiAnimatorContainer |
| Added | 17388 | GraffitiDateTimePicker now has a ShowViewButton as Boolean property for controlling the visibility of the Time/Date button on the bottom of the control. |
| Added | None | GraffitiEditor has a new AllowedTags() as String() method for returning any custom HTML tags that have been added to be supported in the editor. |
| Added | None | GraffitiEditor has a new AllowedTags( ParamArray tags() as String ) method to add HTML tags to the list of those allowed in the editor. |
| Added | None | GraffitiEditor has a new DisallowedTags() as String() method for returning any HTML tags that the editor should not support. |
| Added | None | GraffitiEditor has a new DisallowedTags( ParamArray tags() as String ) method for removing support for specific HTML tags from the editor. |
| Added | None | GraffitiEditor has a new FormattedHTML() as String method for returning the prettified source code of the HTML content. This only functions once the control has fully initialized. |
| Added | 17782 | GraffitiEditor.InsertImage methods now have a dataAttribute as Pair = Nil optional property for adding a custom value to the image element in the returned HTML. Both Left and Right of the Pair should be string values. Left is the key, right is the value. |
| Added | 17635 | GraffitiHTMLLabel has a new VerticalAlignments enumeration. |
| Added | 17635 | GraffitiHTMLLabel has a new TextAlignVertical as VerticalAlignments property. |
| Added | 17361 | GraffitiListbox has a new HeaderMouseEnter( column as Integer ) event. |
| Added | 17361 | GraffitiListbox has a new HeaderMouseExit( column as Integer ) event. |
| Added | 17488 | GraffitiPopupMenu has a new ListIndexHover as Integer property for determining which row in the popup is currently being hovered by the mouse. |
| Added | 17488 | GraffitiPopupMenu has a new SeparatorPaint( g as Graphics, row as Integer, column as Integer ) as Boolean event for drawing separator cell contents. |
| Added | 17488 | GraffitiPopupMenu has a new SeparatorText as String = "-" constant. |
| Added | 17464 | GraffitiSyntaxEditor has a new FontFamily as String = "monospace" property. |
| Added | None | GraffitiSyntaxEditor.Modes.Custom |
| Added | None | GraffitiSyntaxEditor.Themes.Custom |
| Added | None | GraffitiSyntaxEditor has a new AddMode( modeName as String, modeSource as String ) method for adding custom syntax highlighting modes. |
| Added | None | GraffitiSyntaxEditor has a new AddTheme( themeName as String, themeSource as String ) method for adding custom themes. |
| Added | None | GraffitiSyntaxEditor has a new ModeName as String property. When Mode = Custom, this should be the name assigned to a mode added with AddMode. |
| Added | None | GraffitiSyntaxEditor has a new ThemeName as String property. When Theme = Custom, this should be the name assigned to a theme added with AddTheme. |
| Added | None | GraffitiTooltip now exposes the BindTo( item as GraffitiTooltipItem, control as DesktopUIControl ) method for automatically handling mouse interaction. |
| Added | None | GraffitiTooltip now exposes the UnbindFrom( item as GraffitiTooltipItem, control as DesktopUIControl ) method for unbinding from a previously Bound control. |
| Added | 17081 | GraffitiTooltipItem has a new IsShown as Boolean property that returns the current visible state of the tooltip. |
| Fixed | 17615 | GraffitiAnimatorControl should no longer encounter NilObjectExceptions within its Destructor in some scenarios on Windows. |
| Fixed | 17625 | GraffitiCard now properly resizes when AutoHeight = True on macOS with varying scaling factors. |
| Fixed | None | GraffitiDateTimePicker mouse tracking in header is improved. |
| Fixed | None | GraffitiDateTimePicker no longer draws too large of a border on the right side. |
| Fixed | 17656 | GraffitiHTMLExporter.FromEntity now properly handles hex encoded entities. |
| Fixed | 17741 | GraffitiHTMLLabel now renders empty lines for double BR tags. |
| Fixed | 17473 | GraffitiMapViewer.FitBounds once again functions. |
| Fixed | 17645 | GraffitiMapViewer now properly disposes of Shapes when removed. |
| Fixed | 17648 | GraffitiMapViewer now reports the Latitude and Longitude of the mouse position in the Pressed and DoublePressed events rather than the center point of the view. |
| Fixed | None | GraffitiMenuWindow once again calculated proper position when using ShowInPlace in recent versions of Xojo. |
| Fixed | 17378 | GraffitiPopupMenu now draws a bevel when system is in Light Mode on macOS 12.x. |
| Fixed | 17673 | GraffitiSplitter should no longer leave drawing artifacts on Windows. |
| Fixed | 17819 | GraffitiSyntaxEditor should no longer enter a state where it doesn't receive focus. |
| Fixed | 17609 | GraffitiWindowNotifier now updates Note font size properties to account for Xojo not setting default values per inspector when using AddControl. |
| Fixed | 17786 | GraffitiWindowNotifier now updates the dock badge count immediately when calling RemoveAll. |
| Changed | None | GraffitiCard will now center images horizontally when their scaled size doesn't fill the entire area. |
| Changed | None | GraffitiHTML.TextAlign property type is now TextAlignments. |
| Changed | None | GraffitiHTML TextAlign constants. |
## Release 50
Release Date: Jun 22, 2023
| Type | Ticket | Description |
| --- | --- | --- |
| New | None | GraffitiModal |
| New | None | GraffitiW3W |
| Added | 35 | GraffitiCalendarEvent now has a RepeatFrequencies enumeration: 0 = None, 1 = Yearly, 2 = Monthly, 3 = Weekly, 4 = Daily |
| Added | 37 | GraffitiFieldLabel has a new ClearIcon as Picture property for overriding the default. |
| Added | 37 | GraffitiFieldLabel has a new LabelTextAlignmentVertical as VerticalAlignments property. |
| Added | 37 | GraffitiFieldLabel has a new PositionControl( byRef position as Xojo.Rect ) event for altering the final position of the child control within the component. |
| Added | None | GraffitiFieldLabel has a new Text property that functions only when the contained Field is a DesktopTextArea or DesktopTextField. |
| Added | 37 | GraffitiFieldLabel has a new VerticalAlignments enumeration: 0 = Middle, 1 = Top, 2 = Bottom. |
| Added | 37 | GraffitiFieldLabelContainer has a new ClearIcon as Picture property for overriding the default. |
| Added | 37 | GraffitiFieldLabelContainer has a new LabelTextAlignmentVertical as VerticalAlignments property. |
| Added | 37 | GraffitiFieldLabelContainer has a new PositionControl( byRef position as Xojo.Rect ) event for altering the final position of the child control within the component. |
| Added | 37 | GraffitiFieldLabelContainer has a new VerticalAlignments enumeration: 0 = Middle, 1 = Top, 2 = Bottom. |
| Added | None | GraffitiMapViewer.HasThreeWordsOverlay as Boolean = False |
| Added | 8 | GraffitiMapViewer.HeatmapAt( index as Integer ) as GraffitiMap.Overlays.Heatmap |
| Added | None | GraffitiMapViewer.PerformThreeWordsLookups as Boolean = False |
| Added | None | GraffitiMapViewer.Position now updates the display when assigning a new GraffitiMap.Point class instance. |
| Added | None | GraffitiMapViewer.PositionW3W as GraffitiW3W.MapPoint |
| Added | 8 | GraffitiMapViewer.RemoveAllHeatmaps |
| Added | 8 | GraffitiMapViewer.RemoveHeatmap( heatmap as GraffitiMap.Overlays.Heatmap ) |
| Fixed | 17858 | GraffitiAccordion redrawing no longer enters strange states on Windows. |
| Fixed | 35 | GraffitiCalendar once again properly displays repeating events when RepeatFrequency is not Daily. |
| Fixed | 35 | GraffitiCalendar now properly updates edited repeating events. |
| Fixed | 37 | GraffitiFieldLabel now does a better job of positioning child controls in more scenarios. |
| Fixed | 37 | GraffitiFieldLabel no longer carries over an inappropriately large or small padding from the clear button depending upon what type of control is embedded. |
| Fixed | 37 | GraffitiFieldLabelContainer now does a better job of positioning child controls in more scenarios. |
| Fixed | None | GraffitiHTMLtoPDF: GraffitiPDFTemplate's Margin* properties are now doubles. |
| Fixed | None | GraffitiMapViewer.Marker.Visible alterations are now reflected on the display. |
| Fixed | 17874 | GraffitiRating once again raises the ValueChange event. |
| Fixed | 17897 | GraffitiSyntaxEditor.PrintDocument no longer gets cut off after the first page. |
| Removed | 35 | GraffitiCalendarEvent no longer has RepeatFrequency constants. |
| Note | None | GraffitiAnimator demo no longer crashes when clicking the Bounce button. |
| Note | None | GraffitiThumbList demo window resizing once again properly positions checkboxes. |
| Note | None | GraffitiTreeView demo window resizing once again properly positions drag controls. |
| Changed | None | GraffitiAnimator now only fires the next animation iteration when the current is complete. |
| Changed | 35 | GraffitiCalendarEvent.RepeatFrequency is now of type GraffitiCalendarEvent.RepeatFrequencies. |
| Changed | 35 | GraffitiFieldLabel will now catch exceptions when binding events to the Field, with an in-code explanation of what's being done incorrectly, when users have bound an event handler to the contained field's TextChanged or KeyDown events. |
| Changed | None | GraffitiTooltip now draws Content value directly rather than embedding a DesktopLabel. There may differences in display. |
## Release 50.1
Release Date: Jun 23, 2023
| Type | Ticket | Description |
| --- | --- | --- |
| Fixed | 46 | GraffitiPopupMenu.RowHeight is once again correctly applied. |
## Release 51
Release Date: Aug 9, 2023
| Type | Ticket | Description |
| --- | --- | --- |
| Added | 49 | GraffitiCalendar now has a ShowWeekNumbers as Boolean = False property. |
| Added | None | GraffitiCalendar now has a WeekNumberLocation as WeekNumberLocations property. |
| Added | None | GraffitiCalendar now has a WeekNumberLocations enumeration. 0 = SeparateColumn, 1 = InFirstDay |
| Added | None | GraffitiCalendar now has a WeekNumberType as WeekNumberTypes property. |
| Added | None | GraffitiCalendar now has a WeekNumberTypes enumeration. 0 = Local, 1 = ISO |
| Added | 58 | GraffitiModalInstance has a new OverlayColor as ColorGroup property. |
| Added | 56 | GraffitiNote has a new ButtonFontBold as Boolean property. |
| Added | 56 | GraffitiNote has a new ButtonFontItalic property. |
| Added | 56 | GraffitiNote has a new ButtonFontName as String = "System" property. |
| Added | 56 | GraffitiNote has a new ButtonFontSize as String = 0 property. |
| Added | 56 | GraffitiNote has a new ButtonFontUnderline as Boolean property. |
| Added | 56 | GraffitiNote has a new ButtonText as String property. |
| Added | 77 | GraffitiProgress has a new BorderColor as Color property to replace the two old BorderColor properties. |
| Added | 77 | GraffitiProgress has a new BorderRadius as Double property. |
| Added | None | GraffitiTimeline now supports Dark Mode. |
| Added | 55 | GraffitiWindowNotifier now tracks notification badge count for macOS globally using the NotificationCount shared property. This allows users to call this method to update the value manually if they wish to do so. |
| Added | None | GraffitiWindowNotifier has a new NoteButtonPressed( note as GraffitiNote ) event. |
| Fixed | None | GraffitiAccordion no longer improperly hides panels before animating the panel collapse. |
| Fixed | 47 | GraffitiCalendar now properly sanitizes repeating event properties. |
| Fixed | 55 | GraffitiNote will now remove its note count from the Dock badge when destroyed on macOS. |
| Fixed | None | GraffitiSegButton once again properly draws the focus ring for individual segments on macOS. |
| Fixed | 48 | GraffitiSyntaxEditor can no longer enter a state where the background color is not changed upon switching themes on macOS 13 ARM. |
| Fixed | 51 | GraffitiModal has improved key handling. |
| Fixed | None | GraffitiModal can no longer enter an invalid drawing state if Hide or Show are called successively. |
| Fixed | 59 | GraffitiTooltip should no longer exhibit refresh issues on Windows. |
| Fixed | 53 | GraffitiWall once again properly calculates height when determining whether to show the scrollbar. |
| Updated | 75 | GraffitiStepBar largely reworked with additional features and to support framework changes. |
| Removed | 77 | GraffitiProgress.BorderColorLight |
| Removed | 77 | GraffitiProgress.BorderColorDark |
| Note | None | GraffitiColors now has an iOS module that is mapped to the SystemAware module for iOS support. |
| Note | None | GraffitiNote updated to use ColorGroups for properties. |
## Release 52
Release Date: Nov 4, 2023
| Type | Ticket | Description |
| --- | --- | --- |
| Added | 146 | GraffitiDateTimePickerButton has a new ValueChanged event. |
| Added | 146 | GraffitiDateTimePickerButton has a new SelectedValues as DateTime() function. |
| Added | 146 | GraffitiDateTimePickerPopup has a new ValueChanged event. |
| Added | 146 | GraffitiDateTimePickerPopup has a new SelectedValues as DateTime() function. |
| Added | 104 | GraffitiDrillMenu has a new ReverseDragScrollDirection as Boolean = False property. |
| Added | 104 | GraffitiDrillMenu will now scroll in the direction signified by the mouse movement when dragging the virtual scrollbar. |
| Added | 122 | GraffitiEditor has a new AcceptTabs as Boolean = True property. When False, Tab and Shift+Tab will change the focused control within the application window. |
| Added | 122 | GraffitiEditor has a new AllowMediaUploads as Boolean = True property. When False, pasting media will be disabled. |
| Added | None | GraffitiEditor now overrides the Focus method to ensure focus is properly set to the editable area when calling the Focus method. |
| Added | 110 | GraffitiGrid has a new SelectionModes enumeration: 0 = Single, 1 = Multiple. |
| Added | None | GraffitiGrid has a new BeforeEdit(column as GraffitiGridColumn, row as GraffitiGridRow, bounds as Xojo.Rect) as Boolean event. |
| Added | 118 | GraffitiGrid 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. |
| Added | None | GraffitiGrid has a new EditBegun(column as GraffitiGridColumn, row as GraffitiGridRow) event. |
| Added | None | GraffitiGrid has a new EditCommitted(column as GraffitiGridColumn, row as GraffitiGridRow) event. |
| Added | None | GraffitiGrid has a new EditCanceled(column as GraffitiGridColumn, row as GraffitiGridRow) event. |
| Added | 110 | GraffitiGridColumn has a new SortDirections enumeration: 0 = Unsorted, 1 = Ascending, 2 = Descending. |
| Fixed | None | GraffitiDateTimePicker no longer draws an empty row of days when the first day of the week is also the first day of the month. |
| Fixed | 104 | GraffitiDrillMenu can no longer enter a state where selection is impossible after drag scrolling event. |
| Fixed | None | GraffitiEditor no longer draws some elements of the image resizer improperly in dark mode. |
| Fixed | 80 | GraffitiEditor should no longer lose its bottom border in some scenarios. |
| Fixed | 122 | GraffitiEditor should now enforce Allowed and Disallowed tags when pasting. |
| Fixed | 168 | GraffitiEditorSelection.Copy now copies data in a format that works with Microsoft Office applications. |
| Fixed | 112 | GraffitiGrid can no longer enter a state where row containers are not drawn due to their initial width being larger than the control's width. |
| Fixed | 118 | GraffitiGrid should no longer sort columns after clicking to dispel a DesktopMenuItem. |
| Fixed | 92 | GraffitiGrid once again draws text properly vertically centered when it is too long for the cell's width. |
| Fixed | 114 | GraffitiGrid once again properly positions rows after a call to MoveRow. |
| Fixed | 114 | GraffitiGrid instances where rows incorporate Containers and Controls should now render more quickly on Windows and more reliably on macOS. |
| Fixed | 114 | GraffitiGrid.MoveRow once again properly moves rows. |
| Fixed | 116 | GraffitiGridRow.IsVisible should once again report a correct value for all rows. |
| Fixed | 106 | GraffitiWall now properly closes DesktopContainers added to the wall when calling Remove. |
| Fixed | 150 | GraffitiWall will now remove the added handler to DesktopContainer.Resized when removing. |
| Changed | None | Various GraffitiAnimator optimizations. |
| Changed | None | GraffitiDateTimePicker.DeselectDate method renamed to Deselect. |
| Changed | None | GraffitiDateTimePicker.GetSelectedDates() function renamed to Values(). |
| Changed | None | GraffitiDateTimePicker.SelectDate method renamed to SelectValue. |
| Changed | None | GraffitiEditor now has more error handling in JavaScript functions. |
| Changed | 168 | GraffitiEditorSelection.Copy uses a new method to perform Copy operations on macOS and Windows that should be less error prone. |
| Changed | 110 | GraffitiGrid now raises the SelectionChanged event when selection is changed programmatically. |
| Changed | 110 | GraffitiGrid.SelectionMode property is now of type GraffitiGrid.Selections enumeration rather than an integer using constant values. |
| Changed | 110 | GraffitiGrid.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. |
| Removed | None | GraffitiGrid.CellEdit event |
| Removed | 118 | GraffitiGrid.ColumnContextClick |
| Removed | 118 | GraffitiGrid.RowContextClick |
| Removed | None | GraffitiGrid.Sort constants |
| Removed | 110 | GraffitiGrid.SelectionMode constants |
| Note | None | GraffitiDateTimePicker updated to API 2.0. Date replaced with DateTime and many deprecation warnings resolved. |
## Release 53
Release Date: Dec 11, 2023
| Type | Ticket | Description |
| --- | --- | --- |
| Added | 173 | GraffitiCalendar has a new BeginExternalDrag( newEvent as GraffitiCalendarEvent ) method. |
| Added | 173 | GraffitiCalendar has a new EventDropped( newEvent as GraffitiCalendarEvent ) event. |
| Fixed | 182 | GraffitiEditor once again properly scrolls the entire content. |
| Fixed | 196 | GraffitiMapViewer.PanTo no longer encounters a JavaScript exception. |
| Changed | 181 | GraffitiEditor now uses an entirely pixel-based system for font sizes. EM/REM support can be done with the CustomCSS property and hiding the font size popupmenu. |
| Removed | 182 | GraffitiEditor's Zoom methods have been removed due to issues with rendering constraints and the CSS Zoom property's removal from the standards path. |
| Note | 173 | GraffitiCalendar now supports drag and drop adding of events. Note that, in order for this to function, the RestrictView property must be False. |
## Release 54
Release Date: Feb 20, 2024
| Type | Ticket | Description |
| --- | --- | --- |
| New | None | GraffitiPagePanel |
| Added | None | GraffitiEditor.InsertHTML has a new selectContent as Boolean = False parameter for selecting inserted content. |
| Added | None | GraffitiModalInstance.Placements enumeration. LeftTop, LeftMiddle, LeftBottom, CenterTop, CenterMiddle, CenterBottom, RightTop, RightMiddle, RightBottom |
| Added | None | GraffitiModalInstance.Placement = GraffitiModalInstance.Placements.CenterMiddle property. |
| Added | None | GraffitiModalInstance.PlacementBoundaryMargin as Integer = 10 property. Determines distance from the window's edge when using an outside placement. |
| Added | 244 | GraffitiScrollableArea has a new read only MaximumX as Integer property. |
| Added | 244 | GraffitiScrollableArea has a new read only MaximumY as Integer property. |
| Added | 244 | GraffitiScrollableArea has a new PositionX as Integer property. |
| Added | 244 | GraffitiScrollableArea has a new PositionY as Integer property. |
| Added | None | GraffitiSyntaxEditor.ShowGutter as Boolean = True property. |
| Added | None | GraffitiTagField.IndexOf( item as GraffitiTagFieldItem ) as Integer function. |
| Added | 254 | GraffitiTagField.SelectedItems() as GraffitiTagFieldItem() function. |
| Added | None | GraffitiTagField.Remove( item as GraffitiTagFieldItem ) method. |
| Fixed | 257 | GraffitiCalendar will now honor the Language property when set from the Opening event. Due to a timing issue on iOS with MobileHTMLViewer, there may be a brief delay where English language is visible. |
| Fixed | 266 | GraffitiEditor now supports changing fonts and defaults after initialization. |
| Fixed | 288 | GraffitiEditor should now preserve empty lines when passing HTML content to InsertHTML. |
| Fixed | 259 | GraffitiKanban now applies a minimum height to column drop areas to allow dragging items to empty columns. |
| Fixed | None | GraffitiModal no longer applies the OverlayColor of GraffitiModalInstance's twice since a Xojo bug was fixed. |
| Fixed | 254 | GraffitiTagField now resets scroll position to zero if calculated value is greater than maximum. |
| Changed | None | GraffitiTagField now sets the background color of the embedded field to the same color as the component's backdrop on Windows. |
| Changed | None | GraffitiTagField.AddItem is renamed to Add. |
| Changed | None | GraffitiTagField.Item is renamed to ItemAt. |
| Changed | None | GraffitiTagField.RemoveItem is renamed to RemoveAt. |
| Changed | None | GraffitiSplitView is now based on DesktopContainer rather than GraffitiControlCanvas to alleviate positioning issues. |
## Release 55
Release Date: Apr 16, 2024
| Type | Ticket | Description |
| --- | --- | --- |
| New | None | GraffitiLayout |
| Added | 338 | GraffitiEditorSelection.Find(toFind as String, caseSensitive as Boolean = False, wholeWord as Boolean = False) as Boolean |
| Added | 388 | GraffitiEditorSelection.FindActive() as Boolean |
| Added | 338 | GraffitiEditorSelection.FindNext() as Boolean |
| Added | 338 | GraffitiEditorSelection.FindPrevious() as Boolean |
| Added | 338 | GraffitiEditorSelection.FindReset() as Boolean |
| Added | 338 | GraffitiEditorSelection.Replace(withText as String) as Boolean |
| Added | 340 | GraffitiModal.Resize method to update the currently visible modal's background and positioning. |
| Added | 340 | GraffitiModalInstance.Resize method to update the modal's background and positioning. |
| Added | 330 | GraffitiPopupMenu will now change selection based on MouseWheel. |
| Added | 330 | GraffitiPopupMenu now allows selection change based on MouseWheel in dropdown and automatically scrolls selected row in to view. |
| Added | None | GraffitiScrollableArea.Scrolled event. |
| Added | None | GraffitiSplitView has a new DrawSplitter( bounds as Rect ) as Boolean event definition. |
| Fixed | None | GraffitiEditor no longer attempts to retrieve the current view dynamically when setting the View property. |
| Fixed | 343 | GraffitiColors should once again return the correct value for BackgroundWindow on Windows 10 and 11. |
| Fixed | 319 | GraffitiEditor now defaults to allowing all tags in paste operations. |
| Fixed | 320 | GraffitiEditor's Font menus once again work as expected when custom values have been defined. |
| Fixed | None | GraffitiListBox no longer erroneously returns last added index for last index. |
| Fixed | 327 | GraffitiSplitViewArea no longer accepts containers that have already been embedded in a view (DesktopWindow or DesktopContainer). |
| Fixed | 368 | GraffitiSyntaxEditor now does a better job of mitigating potential JavaScript errors at runtime. |
| Removed | None | GraffitiVBScript |
| Note | None | GraffitiModal now supports resizing of both the GraffitiModalContainer instance and the containing window. There will be some associated flickering, but that can't be helped. |
## Release 56
Release Date: Jul 15, 2024
| Type | Ticket | Description |
| --- | --- | --- |
| New | None | GraffitiFontAwesome |
| New | None | GraffitiSVG |
| Added | 391 | GraffitiCalendar has a new ShowAllDaySlot as Boolean = True property. |
| Added | 392 | GraffitiCalendar has a new ScrollTo( eventObject as GraffitiCalendarEvent ) method. |
| Added | 392 | GraffitiCalendar has a new ScrollTo( time as DateTime ) method. |
| Added | None | GraffitiCalendar has a new EventAt( index as Integer ) as GraffitiCalendarEvent method. |
| Added | None | GraffitiCalendar has a new LastIndex() as Integer function. |
| Added | None | GraffitiCalendar has a new RemoveEventAt( index as Integer ) method. |
| Added | 393 | GraffitiCalendar will now show tooltips containing the description of the event on hover. |
| Added | None | GraffitiDropzone now supports multiple distinct embedded text links. |
| Added | 419' | GraffitiEditor has a new HideHelpers method to hide toolbar menus and element controllers (such as the image editor). |
| Added | 405 | GraffitiEditorFormat has a new ListTypes enumeration: 0 = None, 1 = Ordered, 2 = Unordered. |
| Added | 405 | GraffitiEditorFormat has a new ListType as ListTypes computed property. |
| Added | None | GraffitiGradientSelector has a new FromBrush( brush as GraphicsBrush ) method for parsing a Linear/RadialGraphicsBrush. |
| Added | None | GraffitiGradientSelector has a new ToBrush( includeScaleValues as Boolean = True ) as GraphicsBrush function for returning a Linear/RadialGraphicsBrush representing the current values. |
| Added | None | GraffitiGradientSelector has a new Styles enumeration: 0 = Linear, 1 = Radial. |
| Added | None | GraffitiOptionBox has a new AllowKeyboardNavigation property that, when True, will allow navigation within the group by use of the arrow keys when a member has focus. |
| Added | 441 | GraffitiRadalProgress has a new ValueCaption as String property. |
| Added | None | GraffitiRadialProgress has a new Styles enumeration: Graphite, Simple, EarthTonesGround, EarthTonesSky, Chrome, HighTech, Ring, SegmentedRing, DarkGlow |
| Added | None | GraffitiTimeline has new Format properties for Major and Minor labels. |
| Added | None | GraffitiTimeline.TimeScales enumeration has a new value: Milliseconds. |
| Fixed | 377 | GraffitiCalendar no longer applies incorrect start and end dates to events when dragging them within the calendar. |
| Fixed | 395 | GraffitiCalendarEvent no longer exposes the ID property. |
| Fixed | 389 | GraffitiCalendar.Enabled now properly enables or disables mouse interaction. |
| Fixed | None | GraffitiCalendar once again respects the RestrictEventDisplay property. |
| Fixed | None | GraffitiColors.SystemAware.IsDarkMode has a new systemValue as Boolean = False parameter. When False, the value returned will match the application-level setting. |
| Fixed | None | GraffitiColors.macOS.IsDarkMode has a new systemValue as Boolean = False parameter. When False, the value returned will match the application-level setting. |
| Fixed | None | GraffitiColors.Windows.IsDarkMode has a new systemValue as Boolean = False parameter. When False, the value returned will match the application-level setting. |
| Fixed | None | GraffitiCalendar.FindEvent methods are no longer exposed. |
| Fixed | 382 | GraffitiDropzone once again properly draws links. |
| Fixed | None | GraffitiEditor toolbar can no longer appear behind resize/selection rectangles. |
| Fixed | 418 | GraffitiEditor no longer loses Padding value when set in Opening and on resize. |
| Fixed | None | GraffitiEditor.Insert now properly handles content to insert when the first element is a table or other complex node type. |
| Fixed | 420 | GraffitiEditor once again properly positions audio, image, table, and video popup editors. |
| Fixed | 419 | GraffitiEditor will now hide toolbar menus and element controllers when focus is lost, content changes, or selection changes. |
| Fixed | 421 | GraffitiEditorSelection.Get is now more reliable and should no longer return negative lengths under some circumstances. |
| Fixed | None | GraffitiOptionBox should no longer lose transparency on Windows. |
| Fixed | None | GraffitiOptionBox value grouping should be more reliable. |
| Fixed | 447 | GraffitiRating now horizontally centers icons within their respective areas. |
| Fixed | 412 | GraffitiSlider once again properly positions the tooltip relative to the control under all circumstances. |
| Fixed | 412 | GraffitiSlider tooltip reworked to address some visibility and placement issues. |
| Fixed | 445 | GraffitiSyntaxEditor has improved focus handling. |
| Changed | None | GraffitiGradientSelector now uses the new Styles enumeration for determining whether the value is drawn is Linear or Radial. |
| Changed | None | GraffitiGradientSelector.Styles is now of type GraffitiGradientSelector.Styles. |
| Changed | None | GraffitiTimeline updated to use DateTime. |
| Changed | None | GraffitiTimeline now uses Unix epoch time internally in an attempt to provide greater resolution. |
| Removed | 389 | GraffitiCalendar.Editable: Use individual event CanMove and CanResize properties. |
| Removed | None | GraffitiRadialProgress.TextAsPercentage property. |
| Removed | None | GraffitiRadialProgress Style constants. |
| Note | None | GraffitiEditor updated to SunEditor v2.46.3. |
## Release 57
Release Date: Jul 26, 2024
| Type | Ticket | Description |
| --- | --- | --- |
| New | None | GraffitiColors.Bootstrap.Default5 |
| New | None | GraffitiTOTPField |
| New | None | GraffitiTOTPProvider |
| New | None | GraffitiTour |
| Added | None | GraffitiBadge has a new TextFontSize as Integer = -1 property. When greater than -1 the font size will not be automatically calculated. |
| Added | 465 | GraffitiNote has a new BorderRadius as Integer = 10 property. |
| Added | 465 | GraffitiNote has a new CloseSize as Integer = 14 property for controlling the size of the close button. |
| Added | 465 | GraffitiNote has a new ContentContainer as DesktopContainer property. ContentContainer overrides Title, Content, and Icon properties. |
| Added | 465 | GraffitiNote has a new Constructor( container as DesktopContainer ) method |
| Added | 465 | GraffitiNote has a new Constructor( title as String, content as String ) method. |
| Added | 465 | GraffitiNote has a new Icon as Picture property. |
| Added | None | GraffitiNote.NoteTypes enumeration has a new System value. |
| Added | 467 | GraffitiProgress has a new Gradient style. |
| Added | None | GraffitiSVG.Initialize has a new callback as InitializedCallback = nil parameter. |
| Added | None | GraffitiSVG has a new InitializedCallback() delegate. |
| Added | None | GraffitiWindowNotifier has a new Create( type as GraffitiNote.NoteTypes, title as String, text as String ) as GraffitiNote for quickly creating compatible GraffitiNotes. |
| Fixed | None | GraffitiFontAwesome no longer returns incorrectly rendered icons on Windows when applying an overlay color. |
| Fixed | None | GraffitiFontAwesome now better handles cases where invalid values are supplied for Render parameters. |
| Fixed | 465 | GraffitiNote close icon is now positioned vertically centered. |
| Fixed | None | GraffitiSVG is now more resiliant and reliable. |
| Fixed | None | GraffitiWall will no longer include containers whose Visible property is equal to False when repositioning items. |
| Fixed | 465 | GraffitiWindowNotifier now more reliably positions notes when AutoHeight = True. |
| Changed | None | Cleaned up some read-only properties in multiple products to no longer raise exceptions, but be disallowed entirely by the IDE. |
| Changed | 465 | GraffitiNote button drawing has been updated for a more modern feel. |
| Changed | 465 | GraffitiNote colors updated. For macOS, system-specific colors are used. For other targets, Bootstrap5 colors are used. |
| Changed | 465 | GraffitiWindowNotifier now removes older notifications if they will be repositioned outside the window area. |
| Changed | 465 | GraffitiWindowNotifier will now display notes whose Width property equals 0 at full window width. |
| Note | None | Features an all-new main demo window. |
## Release 57.1
Release Date: Jul 27, 2024
| Type | Ticket | Description |
| --- | --- | --- |
| Fixed | 478 | GraffitiTour no longer exhibits strange behaviors in Windows x86. |
## Release 58
Release Date: Aug 6, 2024
| Type | Ticket | Description |
| --- | --- | --- |
| New | None | GraffitiFontAwesomeButton |
| New | None | GraffitiLineicons |
| New | None | GraffitiMaterialIcons |
| New | None | GraffitiResponsive |
| Added | 482 | GraffitiCalendar has a new ShowEventTooltips as Boolean = True property. |
| Added | None | GraffitiColors has a new CartesianDistance (color1 as Color, color2 as Color ) as Double function. |
| Added | 477 | GraffitiGrid has a new EditKeyDown( key as String ) as Boolean event. |
| Added | 477 | GraffitiGrid has a new read-only EditingRow as GraffitiGridRow property. |
| Added | 477 | GraffitiGrid has a new read-only EditingColumn as GraffitiGridColumn property. |
| Added | None | GrafitiNote now supports embedding links when Compact = False using <link></link> tags. |
| Added | None | GraffitiNote has a new IconSize as Integer = 16 property. |
| Added | None | GraffitiNote has a new LinkColor as ColorGroup property. |
| Added | None | GraffitiNote has a new LinkColorHover as ColorGroup property. |
| Added | None | GraffitiNote has a new LinkPressed( index as Integer, content as String ) event. |
| Added | 485 | GraffitiPDFViewer has a new FileDropped( name as String, content as String ) as Boolean event. Return False to attempt default loading. |
| Added | 485 | GraffitiPDFViewer has a new FileDropAllowed as Boolean = True property. |
| Added | 485 | GraffitiPDFViewer has a new FileDropCaption as String = "Drop file to open." property. |
| Added | 485 | GraffitiPDFViewer has a new FileDropCaptionWorking as String = "Loading File..." property. |
| Added | None | GraffitiScrollableArea now exposes a Paint event, but on Windows it may be overdrawn by inside containers. |
| Added | None | GraffitiTour can now be placed directly on a DesktopWindow. The Window property of the GraffitiTour instance must be set before use. |
| Added | None | GraffitiTour has a new ItemPressed( item as GraffitiTourItem ) event. |
| Added | 479 | GraffitiTour has a new LinkPressed( item as GraffitiTourItem, index as Integer, content as String ) event definition. |
| Added | None | GraffitiTour has a new Stop method. |
| Added | None | GraffitiTour now supports arbitrary size and position for steps. |
| Added | 479 | GraffitiTourCard has a new LinkPressed( index as Integer, content as String ) event. |
| Added | 479 | GraffitiTourCard now supports links in the MessageText property with the format: "A <link>Link</link> is fun!" |
| Added | None | GraffitiTourItem has a new AnimationStyle as AnimationStyles property. |
| Added | None | GraffitiTourItem has a new AnimationStyles enumeration: Default, Fade, SlideUp, SlideDown, SlideLeft, SlideRight, Grow, Revel, RollHorizontal, RollVertical, WindowShade, Doors, None |
| Added | None | GraffitiTourItem has a new Constructor( target as Rect, title as String, message as String ) method. |
| Added | None | GraffitiTourItem has a new TargetRect as Rect property. |
| Added | None | GraffitiWindowNotifier has a new NoteLinkPressed( note as GraffitiNote, index as Integer, content as String ) event. |
| Fixed | None | GraffitiColors.Windows.Immersive no longer requires an explicit "Allow" for Supported to return True. |
| Fixed | None | GraffitiModal should no longer draw exit animations incorrectly on Windows due to a bug in Xojo. |
| Fixed | 55 | GraffitiNote now recalculates states on press. |
| Fixed | None | GraffitiNote now vertically centers the Icon. |
| Fixed | None | GraffitiScrollableArea now sizes scrollbars to max depending upon container size. |
| Fixed | None | GraffitiTour now properly draws cards with transparency on Windows. |
| Fixed | 479 | GraffitiTour now raises an exception when a non-DesktopWindow values is set to the Window property. |
| Fixed | 479 | GraffitiTour once again raises the Started event. |
| Fixed | 479 | GraffitiTour once again raises the Ended event. |
| Fixed | 479 | GraffitiTour once again raises the Cancelled event. |
| Fixed | 479 | GraffitiTour now attempts to make sure that its components are the frontmost on the window in Windows. |
| Fixed | None | GraffitiTour now sets focus to cards as they are displayed to allow keyboard navigation. |
| Fixed | None | GraffitiTour will no longer have invisible items if the window contains a Toolbar. |
| Fixed | None | GraffitiWall optimization improvements. |
| Fixed | 55 | GraffitiWindowNotifier will now automatically remove dock icon notifications when calling Remove/RemoveAll/RemoveAt. |
| Fixed | None | All classes now define a default event where appropriate. |
| Deprecated | None | GraffitiNote.Click event. Use Pressed event. |
| Deprecated | None | GraffitiNote.CloseClick event. Use ClosePressed event. |
| Removed | None | ColorPicker class from ~2003. Replaced with GraffitiColorPicker. |
| Note | None | Cleaned up many analysis warnings. |
## Release 58.1
Release Date: Aug 8, 2024
| Type | Ticket | Description |
| --- | --- | --- |
| Fixed | 55 | GraffitiControlCanvas no longer displays a delay for Pressed events. This results in a change of event firing for Pressed and DoublePressed. |
| Fixed | 493 | GraffitiEditor now implements the superclass Print( showPrintDialog as Boolean = True ) method. |
| Fixed | 492 | GraffitiLineicons now draw correctly on Windows 10 x86 builds. |
| Fixed | 492 | GraffitiMaterialIcons now draw correctly on Windows 10 x86 builds. |
| Fixed | 492 | GraffitiSVG is now more stable on Windows 10 x86. |
## Release 58.2
Release Date: Aug 8, 2024
| Type | Ticket | Description |
| --- | --- | --- |
| Fixed | None | GraffitiDrillMenu will now ignore excessive clicks during animation. |
| Fixed | None | GraffitiSVG and those classes that rely on it should be much more stable on the Windows x86 target. |
| Note | None | Added note about overlapping controls on Windows to GraffitiBadge window. |
## Release 58.3
Release Date: Aug 8, 2024
| Type | Ticket | Description |
| --- | --- | --- |
| Fixed | None | GraffitiColorPicker can no longer enter a state where a StackOverflowException may occur when changing the value. |
| Fixed | None | GraffitiPropertyList once again displays values as expected. |
| Fixed | None | GraffitiRating icons are once again properly padded on the right side. |
| Fixed | None | GraffitiSignature no longer draws an extraneous line from (0,0) to the first position when using Timed drawing mode. |
| Fixed | None | GraffitiStepBar no longer drawn item masks 1px too narrow on Windows. |
## Release 58.4
Release Date: Aug 9, 2024
| Type | Ticket | Description |
| --- | --- | --- |
| Fixed | None | GraffitiSVG and those classes that rely on it should now function properly every time on Windows x86. |
## Release 59
Release Date: Aug 14, 2024
| Type | Ticket | Description |
| --- | --- | --- |
| New | None | GraffitiBootstrapIcons |
| New | None | GraffitiBootstrapButton |
| New | None | GraffitiLineiconsButton |
| New | None | GraffitiMaterialButton |
| Added | None | GraffitiBadge has a new BorderRadius as Integer = 8 property. Value is overridden when IsPill = True. |
| Added | None | GraffitiBadge has a new TextPadding as Integer = 0 property. |
| Added | None | GraffitiFontAwesomeButton has a new Default as Boolean = False property. |
| Added | None | GraffitiFontAwesomeButton has a new Cancel as Boolean = False property. |
| Fixed | None | GraffitiBadge should no longer encounter an exception when chaging display scaling factor. |
| Fixed | None | GraffitiPagePanel drawing should now be smoother. |
| Fixed | None | GraffitiNSImages methods scope are now Protected. |
| Fixed | None | GraffitiSVG now preserves the aspect ratio of rendered SVG documents. |
| Fixed | None | GraffitiTour can no longer encounter a NilObjectException when using target Rects and the window size is too small to display the card below the target. |
| Fixed | None | GraffitiWindowNotifier once again shows notification progress bars on Windows. |
## Release 60
Release Date: Sep 21, 2024
| Type | Ticket | Description |
| --- | --- | --- |
| New | None | GraffitiAnimatorWindow |
| New | 522 | GraffitiDiffViewer |
| New | None | GraffitiSearchField |
| New | None | GraffitiTabBar Modern Rewrite |
| Added | None | GraffitiAnimatorControl.Shake now has a easing as GraffitiAnimator.Easings = GraffitiAnimator.Easings.CubicOut property. |
| Added | None | GraffitiAnimatorContainer.Shake now has a easing as GraffitiAnimator.Easings = GraffitiAnimator.Easings.CubicOut property. |
| Added | 524 | GraffitiGrid now exposes the read-only ScrollbarHorizontal as DesktopScrollbar property. |
| Added | 524 | GraffitiGrid now exposes the read-only ScrollbarVertical as DesktopScrollbar property. |
| Added | 500 | GraffitiPDFViewer has a rewritten printing system that is improved on all platforms. |
| Added | 514 | GraffitiSyntaxEditor has a new ToHTML( includeCSS as Boolean = True ) method. |
| Fixed | 536 | GraffitiAvatar no longer displays only the initials when ShowInitialsOnHover = False. |
| Fixed | 531 | GraffitiSlider should no longer encounter an OutOfBoundsException when using range sliders and dragging the two values too closely together. |
| Fixed | None | GraffitiSlider now handles mouse interaction from maximum to minimum, rather than minimum to maximum. |
| Fixed | None | GraffitiSyntaxEditor.Modes.Custom once again works as expected. |
| Fixed | None | GraffitiSyntaxEditor.Themes.Custom once again works as expected. |
| Removed | None | GraffitiEditor no longer implements mouse events for 2024R3 compatibility. |
| Removed | None | GraffitiHTMLtoPDF no longer implements mouse events for 2024R3 compatibility. |
| Removed | None | GraffitiMapViewer no longer implements mouse events for 2024R3 compatibility. |
| Removed | None | GraffitiPDFViewer no longer implements mouse events for 2024R3 compatibility. |
| Removed | None | GraffitiSyntaxEditor no longer implements mouse events for 2024R3 compatibility. |
| Changed | 500 | GraffitiPDFViewer.Print method parameter changed to showPageSetupDialog as Boolean = False. |
| Changed | 500 | GraffitiPDFViewer.PageImage method now returns higher resolution images. |
| Deprecated | None | GraffitiSearchCanvas |
## Release 61
Release Date: Dec 27, 2024
| Type | Ticket | Description |
| --- | --- | --- |
| New | None | GraffitiPanelSelector |
| New | None | GraffitiTextField |
| Added | None | GraffitiPDFViewer has a new FileDroppedInvalid( filename as String, filetype as String ) event. |
| Added | None | GraffitiWindowNotifier has a new DockBounceTypes enumeration. 0 = None, 1 = Once, 2 = Continuous |
| Added | None | GraffitiWindowNotifier has a new BounceDockIcon shared method. |
| Added | None | GraffitiWindowNotifier has a new DockBounceType as DockBounceTypes property. BounceDockIcon will only be automatically called when new notification count is greater than 0 and the old notification count. |
| Fixed | 598 | GraffitiNote no longer requires setting color property values prior to setting Type to Custom. |
| Fixed | 547 | GraffitiNote once again properly wraps text when Icon is provided and Compact = False. |
| Fixed | 598 | GraffitiNote once again properly wraps text when Icon is provided and Compact = True. |
| Fixed | None | GraffitiNote once again properly wraps content when AutoHeight = True. |
| Fixed | None | GraffitiNote once again truncates title when it is too long for the drawable area. |
| Fixed | 542 | GraffitiPDFViewer once again properly loads PDF files via drag and drop. |
| Fixed | 597 | GraffitiProgress's DarkMode style now honors custom text colors. |
| Fixed | 597 | GraffitiProgress's RoundedGradient style now honors custom text colors. |
| Fixed | None | GraffitiSVG and all components that utilize this class should be more stable on Linux. |
| Fixed | None | GraffitiThumbList no longer displays a finger pointer cursor when disabled. |
| Fixed | None | GraffitiTour now functions more reliably on Linux. |
| Changed | None | GraffitiNote now handles custom colors as ColorGroups internally. |
| Changed | None | GraffitiSlideshow now uses preemptive thread type if available. |
| Note | None | Improved loading speed and stability of demo by caching product icons in the products database, and only generating them if they don’t exist. |
## Release 62
Release Date: Mar 27, 2025
| Type | Ticket | Description |
| --- | --- | --- |
| New | None | GraffitiSimpleEditor |
| Added | None | GraffitiAccordion now implements the iterable interfaces to support For...Each for child items. |
| Added | None | GraffitiAvatarGroup now implements the iterable interfaces to support For...Each for child items. |
| Added | None | GraffitiBootstrapIcons now implements the iterable interfaces to support For...Each for icon name strings. |
| Added | 636 | GraffitiCalendar has a new AddViewButton( view as Views ) method. |
| Added | 636 | GraffitiCalendar has a new LastViewButtonIndex as Integer function. |
| Added | 636 | GraffitiCalendar has a new RemoveAllViewButtons method. |
| Added | 636 | GraffitiCalendar has a new RemoveViewButton( index as Integer ) method. |
| Added | None | GraffitiCalendar has a new ShowNavButtonsAtToday as Boolean = False property. |
| Added | None | GraffitiCalendar has a new ShowTodayButton as Boolean = True property. |
| Added | None | GraffitiCalendar has a new ShowYearButtons as Boolean = True property. |
| Added | None | GraffitiCalendar has a new ViewButton( index as Integer ) as Views function. |
| Added | None | GraffitiCalendar now implements the iterable interfaces to support For...Each for child items. |
| Added | None | GraffitiChart now implements the iterable interfaces to support For...Each for child items. |
| Added | None | GraffitiCommandBar now implements the iterable interfaces to support For...Each for child items. |
| Added | None | GraffitiDrillMenu now implements the iterable interfaces to support For...Each for child items. |
| Added | None | GraffitiDrillMenuItem now implements the iterable interfaces to support For...Each for child items. |
| Added | None | GraffitiGradientSelector now implements the iterable interfaces to support For...Each for child items. |
| Added | None | GraffitiGrid now implements the iterable interfaces to support For...Each for child items. |
| Added | None | GraffitiKanban now implements the iterable interfaces to support For...Each for columns. |
| Added | 632 | GraffitiKanbanColumn has a new Width property for setting a static width in pixels. |
| Added | None | GraffitiKanbanColumn now implements the iterable interfaces to support For...Each for child items. |
| Added | None | GraffitiLayout has a new read only CurrentHeightRatio as Double = 1.0 property. |
| Added | None | GraffitiLayout has a new read only CurrentWidthRatio as Double = 1.0 property. |
| Added | None | GraffitiLayout now implements the iterable interfaces to support For...Each for controls. |
| Added | None | GraffitiLayout now supports view Backdrop scaling. |
| Added | None | GraffitiLayout.Resize method. Triggers a resize operation. |
| Added | None | GraffitiLayout.Update method. Re-scans view contents to including new controls added to the view. |
| Added | None | GraffitiLayoutCanvas has a new ScalePaintEvent as Boolean = True property. When True, the Paint event result will be stretched automatically. When False, user should use the parameters to scale their drawn elements. |
| Added | None | GraffitiOrgChart now implements the iterable interfaces to support For...Each for child items. |
| Added | None | GraffitiOrgChartItem now implements the iterable interfaces to support For...Each for child items. |
| Added | None | GraffitiPagePanel now implements the iterable interfaces to support For...Each for child items. |
| Added | None | GraffitiPanelSelector now implements the iterable interfaces to support For...Each for child items. |
| Added | None | GraffitiPopupMenu now implements the iterable interfaces to support For...Each for child items. |
| Added | 467 | GraffitiProgress has a new GradientReflected as Boolean = True propert that controls value drawing when Style = Gradient. |
| Added | None | GraffitiPropertyList now implements the iterable interfaces to support For...Each for headers. |
| Added | None | GraffitiPropertyListHeader now implements the iterable interfaces to support For...Each for child items. |
| Added | None | GraffitiResponsive now implements the iterable interfaces to support For...Each for child rows. |
| Added | None | GraffitiResponsiveRow now implements the iterable interfaces to support For...Each for child cells. |
| Added | None | GraffitiRibbon now implements the iterable interfaces to support For...Each for child tabs. |
| Added | None | GraffitiRibbonTab now implements the iterable interfaces to support For...Each for child groups. |
| Added | None | GraffitiRibbonGroup now implements the iterable interfaces to support For...Each for child GraffitiRibbonItems. |
| Added | None | GraffitiRibbonColumn now implements the iterable interfaces to support For...Each for child GraffitiRibbonItems. |
| Added | None | GraffitiScrollableArea has a new LiveScrolling as Boolean = True property. |
| Added | 623 | GraffitiScrollableArea has a new ScrollbarVisibilities enumeration: 0 = Auto, 1 = AlwaysVisible, 2 = AlwaysHidden. |
| Added | 623 | GraffitiScrollableArea has a new ScrollbarVisibility as ScrollbarVisibilities property. |
| Added | None | GraffitiScrollableArea now supports changing ContainerSize after initialization. |
| Added | None | GraffitiSegButton now implements the iterable interfaces to support For...Each for child items. |
| Added | None | GraffitiStatusBar now implements the iterable interfaces to support For...Each for child items. |
| Added | None | GraffitiStepBar now implements the iterable interfaces to support For...Each for child items. |
| Added | None | GraffitiTabBar now implements the iterable interfaces to support For...Each for child items. |
| Added | None | GraffitiTagField now implements the iterable interfaces to support For...Each for child items. |
| Added | None | GraffitiTaskList now implements the iterable interfaces to support For...Each for child items. |
| Added | 654 | GraffitiTextField has a new MaximumAllowedCharacters as Integer = 0 property. |
| Added | 655 | GraffitiTextField bordered style now attempts to detect background color used by traversing its parent hierarchy when UseCustomColors = False and BackgroundColor = Nil. |
| Added | None | GraffitiThumbList now implements the iterable interfaces to support For...Each for child items. |
| Added | 661 | GraffitiTour has a new Highlight( control as DesktopUIControl, timeout as Integer = 5000 ) method for highlighting a single control for a set period when the tour is inactive. Supplying a value of -1 to timeout will keep the highlight active until cancelled by calling Unhighlight or by user click when OverlayNextOnClick = True. |
| Added | 661 | GraffitiTour has a new Highlight( container as DesktopContainer, timeout as Integer = 5000 ) method for highlighting a single control for a set period when the tour is inactive. Supplying a value of -1 to timeout will keep the highlight active until cancelled by calling Unhighlight or by user click when OverlayNextOnClick = True. |
| Added | 661 | GraffitiTour has a new Highlight( bounds as Rect, timeout as Integer = 5000 ) method for highlighting a single control for a set period when the tour is inactive. Supplying a value of -1 to timeout will keep the highlight active until cancelled by calling Unhighlight or by user click when OverlayNextOnClick = True. |
| Added | 661 | GraffitiTour has a new Unhighlight() method for cancelling Highlights. |
| Added | None | GraffitiTour now implements the iterable interfaces to support For...Each for child items. |
| Added | None | GraffitiTreeView.SelectedNodes() as GraffitiTreeViewNode() function |
| Added | None | GraffitiTreeView.SelectionChanged event. |
| Added | None | GraffitiTreeView now implements the iterable interfaces to support For...Each for child items. |
| Added | None | GraffitiTreeViewNode now implements the iterable interfaces to support For...Each for child items. |
| Added | None | GraffitiWall now implements the iterable interfaces to support For...Each for child items. |
| Added | None | GraffitiWindowNotifier now implements the iterable interfaces to support For...Each for child items. |
| Fixed | 672 | GraffitiAvatar no longer erroneously circumvents contextual clicks. |
| Fixed | 674 | GraffitiCalendar once again properly shows week numbers when set before the control has been rendered. |
| Fixed | None | GraffitiCard now refreshes correctly in 2025R1 on macOS when using automatic height. |
| Fixed | 630 | GraffitiKanban no longer ignores column and item drag operations to the end of the display area for that type. |
| Fixed | None | GraffitiLayout no longer encounters an IllegalCastException in some layered scenarios. |
| Fixed | None | GraffitiLayout now has improved handling of nested controls when locking all sides. |
| Fixed | 638 | GraffitiLayout no longer has strange artifacts on Windows in some scenarios. |
| Fixed | 648 | GraffitiModal no longer always animates from the center of the window when using the Reveal animation style. |
| Fixed | 611 | GraffitiNote no longer reserves too much space to the left of the content when Title is empty and Compact = True. |
| Fixed | None | GraffitiScrollableArea now refreshes correctly in recent versions of Xojo targeting Windows. |
| Fixed | None | GraffitiScrollableArea no longer allows scrolling with the mousewheel on Windows when it shouldn't. |
| Fixed | 647 | GraffitiScrollableArea's repositioning should no longer cause crashes when used with some third-party plugins. |
| Fixed | None | GraffitiTextField better handles tabbing when Multiline = True in some scenarios. |
| Fixed | 655 | GraffitiTextField should no longer cut off the bottom border on small control sizes. |
| Fixed | None | GraffitiTextField no longer erroneously uses the border color to draw the background in the Solid style. |
| Fixed | 665 | GraffitiTour no longer indiscriminately sets all controls enabled property to True when a tour or highlight end. |
| Fixed | 662 | GraffitiTour's window image should no longer become stale between tours. |
| Fixed | None | GraffitiTourCard now refreshes correctly in 2025R1 on macOS when using automatic height. |
| Changed | 629 | GraffitiLayout.ConstrainToContent now defaults to False to avoid unintended size alterations on new instances. |
| Changed | 620 | GraffitiPagination now performs extended validation when changing properties to ensure that CurrentPage remains within the bounds rather than expecting users to perform this validation on their own. |
| Changed | None | GraffitiSVG has improved rendering performance on macOS by using native functionality. This change affects all GraffitiSVG-based classes such as BootstrapIcons, FontAwesome, Lineicons, and MaterialIcons. |
| Deprecated | None | GraffitiTreeView.NodeMultiselectionChanged event. Use SelectionChanged event instead. |
| Deprecated | None | GraffitiTreeView.NodeSelectionChanged event. Use SelectionChanged event instead. |
| Deprecated | None | GraffitiTreeView.GetSelectedNodes method. Use SelectedNodes function instead. |
| Removed | 636 | GraffitiCalendar.ShowDayViewButton. Use AddViewButton method. |
| Removed | 636 | GraffitiCalendar.ShowMonthViewButton. Use AddViewButton method. |
| Removed | 636 | GraffitiCalendar.ShowWeekViewButton. Use AddViewButton method. |
## Release 63
Release Date: Jul 1, 2025
| Type | Ticket | Description |
| --- | --- | --- |
| New | None | GraffitiPDF |
| New | None | GraffitiSlideshow Rewrite |
| Added | 722 | GraffitiEditorShortcut |
| Added | 749 | GraffitiEditor has a new AllowStyleChangesOnly as Boolean = False property that prevents users from making changes to the editor's content by either typing or drag/drop but allows changing the formatting of existing text. |
| Added | None | GraffitiEditor has a new ShowAudioModal() method for showing the audio insert modal. |
| Added | None | GraffitiEditor has a new ShowImageModal() method for showing the image insert modal. |
| Added | None | GraffitiEditor has a new ShowLinkModal() method for showing the link insert modal. |
| Added | None | GraffitiEditor has a new ShowVideoModal() method for showing the video insert modal. |
| Added | None | GraffitiEditor has a new RegisterShortcut( shortcut as GraffitiEditorShortcut ) method for registering shortcut key combinations. |
| Added | None | GraffitiKanban has a new ColumnPressed( column as GraffitiKanbanColumn ) event definition for when users press a column. |
| Added | 714 | GraffitiKanban has a new CustomTheme as String property for overriding the default Bootstrap4 theme. |
| Added | 750 | GraffitiKanban has a new DragBehavior as DragBehaviors property for controlling the source of drag operations. |
| Added | 750 | GraffitiKanban has a new DragBehaviors enumeration (0 = Anywhere, 1 = Handle). |
| Added | None | GraffitiKanban has a new ItemPressed( item as GraffitiKanbanItem ) event definition for when users press an item. |
| Added | 750 | GraffitiKanban has a new ShowDragHandles as Boolean = False property. |
| Added | 750 | GraffitiKanban now supports embedded FontAwesome icons in the various text elements, but this produce undesired results when edited by users. |
| Added | 716 | GraffitiKanbanColumn has a new AllowReorder as Boolean = True property that controls whether its items can be reordered by dragging. |
| Added | 754 | GraffitiKanbanColumn has a new BorderSize as Integer = -1 property that controls the size of the border. Set to -1 for theme default. |
| Added | None | GraffitiKanbanItem has a new CanLeaveColumn as Boolean = True property that controls whether the item can leave its parent column by dragging. |
| Added | 754 | GraffitiKanbanItem has a new BorderSize as Integer = -1 property that controls the size of the border. Set to -1 for theme default. |
| Added | 700 | GraffitiScrollableArea now has a ScrollbarSize as Integer = 15 parameter. |
| Added | None | GraffitiTour has a new HighlightCompleted( target as Object ) event definition. |
| Added | None | GraffitiTour has a new UnhighlightCompleted( target as Object ) event definition. |
| Added | 735 | GraffitiTreeView has a new DrawNodeBackground( node as GraffitiTreeViewNode, g as Graphics ) As Boolean event. Raised any time a cell background is being drawn. Return True to override default behavior. |
| Added | 735 | GraffitiTreeView has a new DrawNodeText( node as GraffitiTreeViewNode, column as Integer, g as Graphics, text as String, x as Integer, y as Integer, maxWidth as Integer ) As Boolean event. Raised any time a cell text is being drawn. Return True to override default behavior. |
| Added | 735 | GraffitiTreeView has a new FromJSON( data as JSONItem, requestCallback as FromJSONCallback = nil ) method for loading content from a JSON array. |
| Added | 735 | GraffitiTreeView has a new ToJSON( requestCallback as FromJSONCallback = nil ) As JSONItem function for converting content to a JSON array. |
| Added | 735 | GraffitiTreeView has a new FromJSONCallback( node as GraffitiTreeViewNode, propertyName as String, value as Variant ) As Variant delegate which is called per-property while loading from JSON for those properties whose values are not supported by JSON (IE: Icon and Tag). |
| Added | 735 | GraffitiTreeView has a new ToJSONCallback( node as GraffitiTreeViewNode, propertyName as String ) As String delegate which is called per-property while converting to JSON for those properties whose values are not supported by the JSON format (IE: Icon and Tag). |
| Added | 735 | GraffitiTreeViewNode has a new Constructor( json as JSONItem, dataCallback as GraffitiTreeView.FromJSONCallback = nil ) method for creating a node from a JSON object. |
| Added | 735 | GraffitiTreeViewNode has a new ToJSON( dataCallback as GraffitiTreeView.FromJSONCallback = nil ) As JSONItem for converting the node to a JSONItem. |
| Fixed | 674 | GraffitiCalendar now properly shows week numbers when set to show local week numbers in first day of the week. |
| Fixed | None | GraffitiBootstrapIconsButton no longer repeatedly attempts to render the icon on Windows and Linux. |
| Fixed | 757 | GraffitiEditor now repositions menus on audio, image, and video editors if they would appear outside the bottom of the viewport. |
| Fixed | 756 | GraffitiEditor now better handles display of mixed font names in selection in the toolbar. |
| Fixed | 756 | GraffitiEditor now better handles display of mixed font sizes in selection in the toolbar. |
| Fixed | None | GraffitiFontAwesomeIconsButton no longer repeatedly attempts to render the icon on Windows and Linux. |
| Fixed | None | GraffitiGrid once again properly vertically fills the display with rows when they are available. |
| Fixed | None | GraffitiGrid now properly resizes and redraws on macOS when scrollbar visibility changes. |
| Fixed | None | GraffitiLineIconsButton no longer repeatedly attempts to render the icon on Windows and Linux. |
| Fixed | None | GraffitiMaterialIconsButton no longer repeatedly attempts to render the icon on Windows and Linux. |
| Fixed | 723 | GraffitiEditor now properly aligns images when centered. |
| Fixed | 719 | GraffitiKanban now appropriately applies the column Indicator property to the column card body. |
| Fixed | 740 | GraffitiKanbanItem now properly applies the AvatarPicture. |
| Fixed | 746 | GraffitiKanbanItem now properly applies the ImagePicture. |
| Fixed | 736 | GraffitiKanbanItem now applies IndicatorBorder when set before being displayed in the control. |
| Fixed | 745 | GraffitiKanbanItem now hides the list items area when no list items are present. |
| Fixed | 706 | GraffitiEditor should no longer hide popups or menus when focusing contained input fields. |
| Fixed | None | GraffitiPDFViewer's thumbnail scrollable area is no longer massively larger than it should be. |
| Fixed | 674 | GraffitiProgress now honors the ShowProgressText property when using the Gradient style. |
| Fixed | 700 | GraffitiScrollableArea now reserves space for the scrollbars when ScrollbarVisibility = AlwaysVisible. |
| Fixed | 668 | GraffitiSimpleEditor now allows Mention and Hashtag selection using mouse clicks. |
| Fixed | None | GraffitiSimpleEditor mentions and hashtags are now visually improved in dark mode. |
| Fixed | 730 | GraffitiTooltop once again positions properly on Windows. Added a workaround for a breaking framework change. |
| Fixed | None | GraffitiTour should no longer set the AnimationLength property value to 0 under some circumstances. |
| Changed | None | GraffitiDesktopControl renamed to GraffitiWebControl. This should have no effect on user projects. |
| Changed | None | GraffitiControlCanvas renamed to GraffitiUIControl. This should have no effect on user projects. |
| Changed | 770 | GraffitiGrid editing events had their parameters in the incorrect order. This has been fixed for consistency. |
| Changed | 750 | GraffitiKanban now displays drag handles on columns and items that have a CanDrag property value of True to improve UX. |
| Changed | 767 | GraffitiSplitView's handle now draws in a way that more closely matches Web. |
| Changed | None | GraffitiSVG now falls back to JavaScript-based rendering on macOS when native rendering is unavailable. |
| Changed | None | Improved loading time of GraffitiWebUIControl-based classes. |
## Release 64
Release Date: Oct 17, 2025
| Type | Ticket | Description |
| --- | --- | --- |
| New | None | GraffitiHTMLtoPDF no longer creates rasterized PDFs. API has changed significantly. |
| New | None | GraffitiUpdater |
| Added | 836 | GraffitiEditor.Autocorrect as Boolean = True property. |
| Added | None | GraffitiEditorFormat has a new LinkTarget as String property. |
| Added | None | GraffitiEditorFormat has a new LinkTitle as String property. |
| Added | None | GraffitiEditorFormat has a new LinkURL as String property. |
| Added | 781 | GraffitiGrid now toggles row selection with Cmd+Click on macOS. |
| Added | 818 | GraffitiPDF.Internal.Template.WatermarkFontName as String = "Helvetica" |
| Added | 818 | GraffitiPDF.Internal.Template.WatermarkFontStyle as GraffitiPDF.Document.FontStyles |
| Added | 818 | GraffitiPDF.Internal.Template.WatermarkOpacity as Double = 0.5 |
| Added | 822 | GraffitiPDF.Tables.Instance.AddFooterStyle( column as Integer, style as GraffitiPDF.Tables.CellStyle ) method. |
| Added | 822 | GraffitiPDF.Tables.Instance.AddHeaderStyle( column as Integer, style as GraffitiPDF.Tables.CellStyle ) method. |
| Added | 819 | GraffitiPDF.Tables.Instance.Footer( index as Integer ) as String method. |
| Added | 819 | GraffitiPDF.Tables.Instance.Footer( index as Integer, assigns value as String ) method. |
| Added | 819 | GraffitiPDF.Tables.Instance.FooterStyle as GraffitiPDF.Tables.CellStyle property |
| Added | 778 | GraffitiTagField has a new Padding as Integer = 5 property for controlling the distance between the control's border and the items drawn within. |
| Fixed | 798 | GraffitiEditor no longer applies incorrect font sizes when pasting content from browsers. |
| Fixed | 809 | GraffitiEditor no longer fails to load on macOS Monterey and older supported system versions. |
| Fixed | 798 | GraffitiEditor now preserves spacing around HTML tags when pasting content from browsers. |
| Fixed | 778 | GraffitiTagField.BackColor is now properly applied on macOS when UseCustomColors = True. |
| Fixed | 825 | GraffitiPDF now properly positions footers on all pages. |
| Fixed | 823 | GraffitiPDF.Document.DrawLine no longer throws a JavaScript exception. |
| Fixed | 821 | GraffitiPDF.Tables.Instance.BodyStyleAlternate is now honored. |
| Fixed | 700 | GraffitiScrollableArea scrollbar behavior has been further refined for ScrollbarVisibilities.AlwaysVisible. |
## Release 65
Release Date: Jan 27, 2026
| Type | Ticket | Description |
| --- | --- | --- |
| New | None | GraffitiSelectGroup |
| Added | 882 | GraffitiGrid now supports wrapping long header text. |
| Added | 882 | GraffitiGridColumn has a new HeaderWrap as Boolean = False property. |
| Added | None | GraffitiSVG. DrawSVG( g as graphics, svg as String, x1 as Double = 0, y1 as Double = 0, w1 as Double = -1, h1 as Double = -1, x2 as Double = 0, y2 as Double = 0, w2 as Double = -1, h2 as Double = -1 ) shared method. |
| Fixed | None | GraffitiBootstrapIconsButton once again properly positions the icon within its face. |
| Fixed | None | GraffitiCalendar should no longer throw a NilObjectException when closing in some conditions. |
| Fixed | 859 | GraffitiEditor now preserves spaces around bold text when pasted. |
| Fixed | None | GraffitiEditor once again allows keyboard navigation in text. |
| Fixed | None | GraffitiEditor no longer shifts focus back to the editor when editing a link URL. |
| Fixed | None | GraffitiFontAwesomeIconsButton once again properly positions the icon within its face. |
| Fixed | 882 | GraffitiGrid now more accurately calculates text position in header columns. |
| Fixed | None | GraffitiGrid once again properly tracks mouse position after sorting. |
| Fixed | None | GraffitiGrid now more accurately sorts varying datatypes. |
| Fixed | None | GraffitiHTMLtoPDF now provides more useful error messages in more failure scenarios. |
| Fixed | None | GraffitiLayout no longer encounters a NilObjectException on some controls types when using Introspection to gather property info. |
| Fixed | None | GraffitiLineIconsButton once again properly positions the icon within its face. |
| Fixed | None | GraffitiMaterialIconsButton once again properly positions the icon within its face. |
| Changed | 886 | GraffitiPropertyList now uses GraffitiColorPicker for value selection to avoid modal issues on macOS. |
| Changed | None | GraffitiSVG now falls back on a modified version of xojo-svg by Zoclee under certain scenarios. |
| Updated | None | GraffitiEditor updated to SunEditor 2.47.8. |
## Release 65.1
Release Date: Jan 31, 2026
| Type | Ticket | Description |
| --- | --- | --- |
| Fixed | None | GraffitiSelectGroup members now have descriptions. |
| Changed | None | GraffitiPDF.Forms.TextField renamed to GraffitiPDF.Forms.TextFieldObj to workaround a Xojo bug. |
## Release 65.2
Release Date: Feb 5, 2026
| Type | Ticket | Description |
| --- | --- | --- |
| New | None | Added Library and Navigator Icons. |
| Fixed | 894 | GraffitiHTMLtoPDF now embeds the Roboto font by default as the base library now requires it. |
| Fixed | 899 | Workaround for bug in Xojo's Libraries implementation in regards to the registration system. |
## Release 66
Release Date: Apr 1, 2026
| Type | Ticket | Description |
| --- | --- | --- |
| New | None | GraffitiTreeView drawing is now virtualized. |
| Added | None | GraffitiPropertyList.FromJSON( data as String ) method for a more modern data saving mechanism. |
| Added | None | GraffitiPropertyList.ToJSON() as String method for a more modern data loading mechanism. |
| Added | 919 | GraffitiPropertyList.Reset method which resets the PropertyList to its default state without content. |
| Added | None | GraffitiTour has a new CurrentStepItem() as GraffitiTourItem method. |
| Fixed | 924 | GraffitiDrillMenu now applies an offset to item tooltips upon first show. |
| Fixed | 910 | GraffitiHTMLtoPDF now uses 50% width cells for page header and footer. |
| Fixed | 915 | GraffitiNotifier now ensures notes are added where expected in the view hierarchy when Xojo sometimes parents them oddly. |
| Fixed | None | GraffitiPropertyList can no longer enter a state where PropertyListChild properties are applied to the wrong list item. |
| Fixed | 923 | GraffitiPropertyList now does a better job of handling color values on import and export. |
| Fixed | None | GraffitiSVG (and all classes that rely on it) now renders better at variable resolutions. |
| Fixed | None | GraffitiSVG once again renders at correct sizes on Windows. |
| Fixed | None | GraffitiTooltip now reacts more appropriately on macOS. |
| Fixed | None | GraffitiTour should no longer encounter NilObjectExceptions or crashes in rare cases when moving to the next stage. |
| Fixed | None | GraffitiTour resume functionality improved. |
| Fixed | None | GraffitiTreeView has received some slight optimizations. |
| Changed | 923 | GraffitiPropertyList now uses the color conversion functions from GraffitiColors when handling children with color values. |
| Changed | None | GraffitiTreeView no longer requires scrollbars be provided in the designer. |
| Changed | None | GraffitiTreeView no longer requires an editor DesktopTextField be provided in the designer. |
| Changed | None | GraffitiTreeView row image caching has been significantly improved. |
| Note | None | Xojo 2026R1 Compatibility. |
## Release 67
Release Date: Apr 9, 2026
| Type | Ticket | Description |
| --- | --- | --- |
| Fixed | 929 | GraffitiKanban no longer adds GraffitiKanbanListItems to all GraffitiKanbanItems in a column when calling AddListItem. |
| Fixed | 931 | GraffitiHTMLtoPDF examples that contain HTML are now properly entity encoded for the documentation. |
## Release 68
Release Date: Apr 15, 2026
| Type | Ticket | Description |
| --- | --- | --- |
| Added | 933 | GraffitiSyntaxEditor now supports drag-and-drop text insertion. |
| Added | None | GraffitiSyntaxEditor.TextDropped(text as String) as Boolean event definition. Return false to cancel insertion. |
| Changed | None | GraffitiSuite now incorporates a method of determining the true Application object to workaround a linker error when users have renamed it from "App" to something else. |
## Release 69
Release Date: May 9, 2026
| Type | Ticket | Description |
| --- | --- | --- |
| Added | None | Current GraffitiSuite Library version is now available by accessing the GraffitiSuite.Version constant. |
| Added | None | GraffitiAnimator now allows reuse of GraffitiAnimatorOperations. Note that you may need to track your instances for previous completion. |
| Fixed | None | GraffitiSuite is now initialized in more scenarios where it was needed. |
| Fixed | None | GraffitiUIControl.BitmapForCaching now returns correct contexts in more scenarios, improving diversity of its use cases. |
| Fixed | 935 | GraffitiWebUIControl.Opening no longer executes twice. |
| Updated | None | Updated documentation to reflect the move to Libraries. |
## Release 70
Release Date: May 22, 2026
| Type | Ticket | Description |
| --- | --- | --- |
| New | None | GraffitiSpinner |
| Added | None | Added DrawControlInLayoutEditor mechanism for all applicable classes. |
| Fixed | None | GraffitiColorPicker superclass has been corrected. |
| Fixed | None | GraffitiListBox header superclass has been corrected. |
| Fixed | None | GraffitiListBox header now properly refreshes on MouseUp. |
| Fixed | 940 | GraffitiTooltip should no longer enter a "stuck" state when called from a DesktopHTMLViewer-base parent control on macOS due to a framework change. |
| Note | None | GraffitiTooltip Demo updated for "Static" example to show value passing. |
## Release 71
Release Date: Jun 22, 2026
| Type | Ticket | Description |
| --- | --- | --- |
| New | 950 | GraffitiCalendar no longer loads jQuery UI from CDNJS. |
| Added | None | Additional metadata. |
| Fixed | 948 | GraffitiGrid's selected row tracking once again performs as expected when removing rows that are selected. |
| Fixed | None | GraffitiUIControl-based controls with long press operations now respond appropriately when a drag operation may also occur. |
| Updated | None | Xojo 2026 Release 2 Compatibility. |
## Release 71.1
Release Date: Jun 22, 2026
| Type | Ticket | Description |
| --- | --- | --- |
| New | 950 | GraffitiCalendar styling error resolved in regards to jQuery UI changes. |
## Release 72
Release Date: Aug 11, 2026
| Type | Ticket | Description |
| --- | --- | --- |
| Added | None | GraffitiAvatar has a new HasStatus as Boolean = False property. |
| Added | None | GraffitiAvatar has a new StatusColor as Color property. |
| Added | None | GraffitiAvatarGroupItem has a new HasStatus as Boolean = False property. |
| Added | None | GraffitiAvatarGroupItem has a new StatusColor as Color property. |
| Fixed | None | GraffitiColorPicker should no longer crash on macOS when used in some specific circumstances. |
| Fixed | None | GraffitiGrid once again properly positions dropdown menu cell editors. |
| Fixed | 966 | GraffitiPagination no longer restricts page navigation by the VisiblePages property value. |
| Fixed | None | GraffitiPagination now redraws immediately after selection change by mouse to update the current hovered page button. |
| Fixed | None | GraffitiSimpleEditor parsing method fixed for off-by-one error. |
| Fixed | 964 | GraffitiSimpleEditor now supports inserting tables via InsertHTML method. |