Date Released #

Final: February 11, 2019
Alpha 4: December 28, 2018
Alpha 3: December 11, 2018
Alpha 2: November 27, 2018
Alpha 1: November 15, 2018 [Private]

Desktop #

Type Change
ADD GraffitiFontPicker
ADD GraffitiRibbon 2.0
ADD GraffitiTaskList
ADD GraffitiButton now uses Ampersand to signify that a character should be drawn with an underline as an accelerator key. No action is taken when the key combination is pressed, and this should be implemented by the user.
ADD GraffitiGrid now supports Shift+Click for multiple selection.
ADD GraffitiHTMLEditor now supports ALT attributes on img elements.
ADD GraffitiHTMLEditor now has an InsertHTML method.
ADD GraffitiHTMLEditor now floats images when changing the alignment to achieve a text-wrapping effect.
ADD GraffitiHTMLEditor now supports WIDTH and HEIGHT attributes on img elements.
ADD GraffitiHTMLEditor now has a DarkMode as Boolean property.
ADD GraffitiProgress now has a Dark style.
ADD GraffitiSearchCanvas icons updated to shift for dark mode.
ADD GraffitiSearchCanvas now has a ShowMagnifyingGlass as Boolean property.
ADD GraffitiSearchCanvas now has a ShowClearButton as Boolean property.
ADD GraffitiSearchCanvas now has a ClearClicked event definition that fires only if the Field property is not a TextField or TextArea, otherwise the field text is automatically cleared when clicking the clear icon.
ADD GraffitiStatusBar now has a DarkMode style.
ADD GraffitiTreeView now has a SearchNodes(searchText as String, PartialMatch as Boolean = True) as GraffitiTreeViewNode method.
ADD GraffitiTreeView now has a ScrollTo( node as GraffitiTreeViewNode ) method.
ADD GraffitiTreeView now has a NodeMultiselectionChange(theNodes() as GraffitiTreeViewNode) event.
ADD GraffitiTreeView now supports Shift+Ctrl+Click for appending selection ranges.
ADD GraffitiTreeView now has a Dark style.
ADD GraffitiTreeViewNode now has methods for managing columns.
ADD GraffitiTreeView now has a CanDrag property to enable dragging rows from the component. Demo updated to show functionality.
FIX GraffitiDateTimePicker now properly paints months following those with 31 days.
FIX GraffitiDateTimePicker now properly paints months that span 6 weeks.
FIX GraffitiDateTimePicker no longer skips months when the current day of the month is greater than the target month’s last day.
FIX GraffitiHTMLEditor now honors non-specific HTML with valid UTIs for Paste operations.
FIX GraffitiHTMLEditor no longer strips some supported tags when applying to HTML directly (HR, Tables, Audio).
FIX GraffitiHTMLEditor now converts plain-text line-endings to <br> tags when pasting plain-text.
FIX GraffitiHTMLEditor Horizontal Rule code updated. Now works properly with the new version of QuillJS.
FIX GraffitiHTMLEditor no longer loses EOLs when copying/pasting from/to the control.
FIX GraffitiHTMLEditor now converts <DIV> tags to <SPAN> tags on paste.
FIX GraffitiHTMLEditor now retains Width and Height of images after editing.
FIX GraffitiHTMLEditor now retains styling when aligned.
FIX GraffitiHTMLEditor spell checking once again works as expected on macOS without toggling the value post-load.
FIX GraffitiPropertyList no longer intermittently returns the wrong items from the Find methods.
FIX GraffitiPropertyList find methods optimized a bit more.
FIX GraffitiSlider now has additional nil checking for tooltips.
FIX GraffitiStatusBar now honors default colors for styles when UseCustomColors = False.
FIX GraffitiStatusBar now properly draws on versions of Windows >= 8 when UseDefaultSystemStyle = True
FIX GraffitiTabBar’s SelectTab methods are no longer scoped Private.
FIX GraffitiTreeView should no longer intermittently ignore the Shift or Control keys on multiple selection.
FIX GraffitiTreeView redrawing optimized slightly.
FIX GraffitiTreeView no longer draws text over node icons when using live loading methods.
FIX GraffitiTreeView should no longer leave an empty space smaller than RowHeight at the top of the display under certain conditions.
FIX GraffitiTreeView no longer has an errant reference to the Graphics property of the class.
NOTE GraffitiTreeViewNode’s Columns property is now private. Make use of the new methods added to GraffitiTreeViewNode.

Web #

Type Change
ADD Additional Comments to possible script/stylesheet loading exception points with instructions.
ADD GraffitiWebBarcodeReader
ADD GraffitiWebPagePanel
ADD GraffitiWebAccordion has a new SingleSelect property. When True, only a single panel at a time can be expanded, and the panels size to fit the component’s display.
ADD GraffitiWebAlert now supports titlebars using the Title and TitleStyle properties of GraffitiWebAlertMessage.
ADD GraffitiWebAlert now has a ButtonAreaStyle as WebStyle property for altering the appearance of the button area at the bottom of alerts.
ADD GraffitiWebAlert now supports Width and Height properties on GraffitiWebAlertMessage.
ADD GraffitiWebAnimatorObject now has a Position( X as Integer, Y as Integer, Duration as Integer ) method.
ADD GraffitiWebButton now has IconObject as Picture and IconObjectSize as Integer = 16 properties which are HiDPI aware, use <icon> to signify location.
ADD GraffitiWebCheckbox now has a StyleTrue as WebStyle property.
ADD GraffitiWebContextMenu’s AddMenu methods now have an optional AutoHide parameter, which will hide the menu when the mouse leaves it.
ADD GraffitiWebContextMenu’s AddMenu methods now have an optional Position as REALbasic.Point parameter. -1 on X or Y will use the default value for that coordinate. Values are relative to the upperleft of the viewport.
ADD GraffitiWebContextMenu now supports long-press on mobile devices when using TriggerRight.
ADD GraffitiWebDatePickerRange now has three new properties: StyleFieldStart, StyleFieldEnd, and StyleToLabel.
ADD GraffitiWebGrid now supports multiline column headers using the <br> tag.
ADD GraffitiWebGrid now provides an override for invalid date objects, rather than displaying “Invalid Date”, in the form of GraffitiWebGridColumn.NilDateOverride.
ADD GraffitiWebGridColumn has a new DecimalPlacesMin property.
ADD GraffitiWebLabel now has a “Click” event.
ADD GraffitiWebLabel now has a “ContextClick” event.
ADD GraffitiWebLabel now has a “SelectedHTML” property.
ADD GraffitiWebRadioButton now has a StyleTrue property.
ADD GraffitiWebTextField has a new LabelWidth property. When set to -1 the label will automatically size to the content.
ADD GraffitiWebTextField has a new LabelAlignment property, meant for use with the LabelWidth property.
ADD GraffitiWebToolbarButton now has a Width as Integer = -1 property. Setting to -1 will cause the button to autosize to its contents.
ADD GraffitiWebToolbarButton now has an OverrideStyle as WebStyle property for using Xojo’s WebStyles instead of Bootstrap styles.
ADD GraffitiWebToolbarButton now has IconObject as Picture and IconObjectSize as Integer = 16 properties which are HiDPI aware.
ADD GraffitiWebTooltip now supports binding basic tooltips to GraffitiWebToolbarButtons.
ADD GraffitiWebTooltip now has a Reposition method that can be called when elements move on the page to automatically reposition the relative tooltip to its parent’s new location.
ADD GraffitiWebWall has a new ScrollBottom event which can be used to implement infinite scrolling (see the bottom GraffitiWebWall instance on pgeWall).
ADD GraffitiWebWall will now receive focus.
ADD GraffitiWebWall now has a KeyPress event.
FIX GraffitiWebAccordion no longer has unnecessary blank space below headers.
FIX GraffitiWebAccordion no longer shifts captions with FontAwesome icons to the right by about 50 pixels.
FIX GraffitiWebAccordionNav should no longer throw a JavaScript exception when using certain characters in child item text.
FIX GraffitiWebAlert now properly updates Z-Index on Show.
FIX GraffitiWebAlert now properly removes elements from the DOM when a message is closed.
FIX GraffitiWebAlert once again has properties for managing button alignment (GraffitiWebAlertMessage.ButtonAlignment).
FIX GraffitiWebAlert once again assigns an appealing default style to buttons with no Style specified.
FIX GraffitiWebAlert now applies a default style to the button area of alerts.
FIX GraffitiWebAlert now properly returns containers to their original page for reuse on future alerts.
FIX GraffitiWebButton now waits until the control is visible before instantiating. This should fix some random unreproducible exceptions that people were reporting.
FIX GraffitiWebCamera’s Stop method now properly ends the stream from the device. The browser should no longer continue to report that the WebCam is active after calling Stop.
FIX GraffitiWebCard now properly retains visibility when setting the Visible property before changing other crucial properties.
FIX GraffitiWebContextMenu no longer throws Javascript exceptions on HideMenu.
FIX GraffitiWebContextMenu’s MenuHidden and MenuShown events once again fire.
FIX GraffitiWebContextMenu now properly unbinds from WebButton.
FIX GraffitiWebContextMenu now positions the menu at bottom-left of the target WebControl when binding using TriggerNone.
FIX GraffitiWebContextMenu’s TriggerRight once again functions without the need to use Xojo control events.
FIX GraffitiWebContextMenu’s menus now automatically size to their contents’ width.
FIX GraffitiWebCurrencyField now exposes the Value property in the Property Inspector.
FIX GraffitiWebCurrencyField no longer throws Javascript exceptions when setting properties in the Open event.
FIX GraffitiWebDatePicker(All) no longer throws a Javascript exception in IE11 when changed the date value.
FIX GraffitiWebDatePickerRange’s “to” label should now properly center vertically in Firefox.
FIX GraffitiWebGrid no longer throws a Javascript exception in IE11 when using Date columns.
FIX GraffitiWebGrid no longer throws a Javascript exception on EditCancel and EditCommit.
FIX GraffitiWebGrid now honors HeaderRowHeight, and appropriately centers header text vertically.
FIX GraffitiWebGrid should no longer throw a Javascript exception when no data is loaded, and the class attempts to destroy.
FIX GraffitiWebGrid now honors EndOfLine in values for LongText formatted columns both when viewing and editing.
FIX GraffitiWebGrid once again updates edit values in the Xojo code when an edit operation has completed in the browser.
FIX GraffitiWebGrid’s HeaderRowVisible property once again works as expected.
FIX GraffitiWebGrid’s DeselectAllRows method now also clears cell selection.
FIX GraffitiWebLabel’s event should now work on subsequent page shows.
FIX GraffitiWebNotifier once again fires events when instantiated as a property of the Session object.
FIX GraffitiWebPagination styling fixes.
FIX GraffitiWebSidebar no longer loses content when switching between pages.
FIX GraffitiWebSidebar now properly updates Z-Index on Show and Toggle.
FIX GraffitiWebSidebar no longer applies default styles to UI components within the sidebar when a custom WebStyle has been applied to the Style property.
FIX GraffitiWebSignature once again fills the entire control area.
FIX GraffitiWebStorage no longer throws a Javascript exception when cookies are disabled.
FIX GraffitiWebTextField now updates 500ms after last keypress, rather than only updating on focus out.
FIX GraffitiWebTextField now explicitly applies the UTF-8 character encoding to the value string.
FIX GraffitiWebToggle no longer fires the change event twice on clicks.
FIX GraffitiWebToolbar now honors the Style property for applying WebStyles.
FIX GraffitiWebTooltip’s Unbind method should now be a bit faster.
FIX GraffitiWebTree no longer has some misplaced conditions for Expand and Collapse that can cause NilObjectExceptions.
FIX Bootstrap no longer overrides default styles of controls.
REM GraffitiWebQRReader
NOTE Cleaned up the browser console.
NOTE Moved remaining script loads to use AddJSFile.
NOTE GraffitiSuiteInstances As Dictionary is no longer required in the Session object.
NOTE All Datepicker language files merged and minified.
NOTE All classes that require Z-Index calculations now properly account for sheet dialogs as well.
NOTE jQueryUI switched back to minified version. Oversight in R27 releases.
NOTE Moment switched back to minified version. Oversight in R27 releases.
NOTE GraffitiWebGridColumn’s DecimalPlaces property has been renamed to DecimalPlacesMax.
NOTE GraffitiWebHTMLEditor bumped to version 2.0 using QuillJS version 1.3.6
NOTE GraffitiWebPagination’s Active WebStyle must appear in the project inspector below the style used for StyleButtonText for proper display.
NOTE GraffitiWebSignature upgraded to version 3.0.0-beta3 of signature_pad library.