Table of Contents

Date Released

Version Release Date
Beta 1 August 18, 2019
Alpha 6 July 28, 2019
Alpha 5 July 17, 2019
Alpha 4 July 9, 2019
Alpha 3 June 28, 2019
Alpha 2 June 22, 2019
Alpha 1 June 13, 2019

Desktop

Type Change
NEW Version information can be found in each class's GraffitiSuiteVersion Constant
NEW GraffitiAccordion 2.0
NEW GraffitiAnimator
NEW GraffitiCard
NEW GraffitiDrillMenu (Name subject to change)
NEW GraffitiFieldLabelContainer for hosting ContainerControls.
NEW GraffitiOptionBox
NEW GraffitiPagination
NEW GraffitiWall
ADD GraffitiActionBar now has a ButtonPosition property for drawing buttons on the left or right.
ADD GraffitiActionBar now has an Alignments enumeration for ButtonPosition.
ADD GraffitiDesktopControl components (Calendar, HTMLEditor, SyntaxEditor) now have a UseXHR property which defaults to false for using XmlHttpRequests to pass large data back to Xojo from JavaScript at vastly improved speeds. Falls back to viewer events on failure, and includes a lot of exception handling and content validation. This opens a port on the loopback interface to listen for the requests. USE AT YOUR OWN RISK. Must be set in the inspector.
ADD GraffitiDesktopControl components (Calendar, HTMLEditor, SyntaxEditor) now alert if they're using the Native renderer on Windows.
ADD GraffitiHTMLEditor now makes as many styles inline as possible by default.
ADD GraffitiHTMLEditor now defers data transfer for a short period on TextChange and SelChange to reduce input lag.
ADD GraffitiHTMLEditor now immediately updates data when the editor loses focus.
ADD GraffitiHTMLEditor now parses tables pasted from Excel or OpenOffice Calc.
ADD GraffitiHTMLEditor now has an ExportCSS() as String method to get all CSS applied to the content area.
ADD GraffitiHTMLEditor now has a toPage(pageTitle as String, includeStyleBlock as Boolean = False) as String method for returning an HTML document containing the content.
ADD GraffitiHTMLEditor now has a toPageInline(pageTitle as String, Minimize as Boolean = True) as String method for returning an HTML document containing the content with all styles that can be made inline applied directly to the effected tags for better appearance of quotes, code blocks, and other block-level elements.
ADD GraffitiHTMLEditor now exposes a jsTwitter_Preview constant for adding before the </body> tag to generate full HTML documents with embedded tweets.
ADD GraffitiHTMLEditor's EditorDefaults event now has an AllowNesting parameter. Setting this to False will disallow nesting of lists in the editor to be compliant with some email clients.
ADD GraffitiHTMLExporter now has a new toInlineStyles method for converting HTML+CSS to HTML with inline style Attributes. Uses the Premailer API Beta 0.1.
ADD GraffitiFieldLabel now has a TextChanged event.
ADD GraffitiFieldLabel now supports all controls types as the Field Property is now defined as Field As RectControl.
ADD GraffitiFieldLabel now has a ResizeFieldWidth as Boolean = True property.
ADD GraffitiFieldLabel now has a ResizeFieldHeight as Boolean = True property.
FIX GraffitiAccordion no longer renders changes based on mouse movement when Enabled = False
FIX GraffitiCard no longer strips empty lines from Content.
FIX GraffitiGrid now properly positions controls and containers when scrolled.
FIX GraffitiGrid now displays a single row when that's all that has been added instead of requiring multiple rows.
FIX GraffitiGrid now properly positions embedded controls regardless of their column's ControlSizing property.
FIX GraffitiHTMLEditor once again fires the LostFocus and GotFocus events.
FIX GraffitiHTMLEditor once again properly wraps paragraph blocks on Windows.
FIX GraffitiHTMLEditor now uses a margin style for indented blocks rather than a class.
FIX GraffitiHTMLEditor should now properly return correct SelStart, SelLength and SelText.
FIX GraffitiHTMLEditor now relies entirely on QuillJS to do the heavy lifting in SelStart, SelLength, and SelText. This should fix a number of rarely reported issues where these properties would be offset by the number of block elements appearing in the text above the selection.
FIX GraffitiHTMLEditor now relies on Quill to pass back the plain text, rather than stripping this itself. Should be the best forward-compatible option.
FIX GraffitiHTMLEditor now does a lexical comparison on changes to HTML when receiving the text changed notification rather than a simple equals comparison.
FIX GraffitiHTMLEditor now handles raw HTML not generated by QuillJS a bit better.
FIX GraffitiHTMLEditor now has a bit more exception handling on the table functionality.
FIX GraffitiHTMLEditor's bottom border is no longer cut off.
FIX GraffitiHTMLEditor once again loads properly on macOS 10.10 (issue introduced in R29 Final).
FIX GraffitiHTMLEditor no longer sets the clipboard's text value after defining the HTML type on the clipboard. Was potentially overwriting.
FIX GraffitiHTMLEditor once again fires the format update event when the current selection has no formatting applied.
FIX GraffitiHTMLEditor now updates selection more quickly.
FIX GraffitiHTMLEditor no longer loses its HTML content when setting Spellcheck = True in the Open event.
FIX GraffitiHTMLEditor once again supports wrapping images in links.
FIX GraffitiHTMLEditor now properly detects the altimage type in hasMedia.
FIX GraffitiHTMLExporter now does a case sensitive compare when enco ding and decoding HTML entities.
FIX GraffitiHTMLExporter now only replaces repeating spaces when when encoding.
FIX GraffitiHTMLExporter's HTMLEntity* methods should be much faster now.
FIX GraffitiHTMLExporter.toEmail should no longer strip spaces around some tags and add spaces around others.
FIX GraffitiHTMLExporter.toEmail now uses the current system's EndOfLine setting.
FIX GraffitiHTMLExporter.toEmail once again properly numbers ordered lists.
FIX GraffitiPropertyList should no longer encounter OutOfBoundsExceptions when editing a password cell after performing actions outside the cell.
FIX GraffitiStepBar now uses a color-based hit detection method to get more accurate results on mouse events.
FIX GraffitiSyntaxEditor now longer forces soft tabs on HTML and PHP modes even when UseSoftTabs = False.
FIX GraffitiSyntaxEditor now allows pasting in to Find and Replace fields of the built-in search pane.
FIX GraffitiSyntaxEditor now performs SelectAll on Find and Replace fields of the built-in search pane when triggered.
FIX GraffitiSyntaxEditor now allows copying from Find and Replace fields of the built-in search pane.
FIX GraffitiSyntaxEditor now allows cutting from Find and Replace fields of the built-in search pane.
FIX GraffitiSyntaxEditor now allows Undo and Redo on Find and Replace fields of the built-in search pane.
FIX GraffitiSyntaxEditor Tab and Shift+Tab keys now indent and outdent properly once again on macOS.
FIX GraffitiFieldLabel now fires ClearClicked regardless of content.
FIX More analysis warnings.
NOTE GraffitiGrid rendering speed improvements. Note that large data sets will cause slowdowns the further in to the set you scroll. This is a result of tracking of variable row height support, and is unavoidable. Paging is recommended.
NOTE GraffitiGrid requires embedded ContainerControls to have a Transparent property value of False. It will set the backdrop accordingly.
NOTE GraffitiHTMLEditor updated to QuillJS 1.3.6
NOTE This version represents a pretty major shift for GraffitiHTMLEditor as we finally move to inline styling for greater outside compatibility. Test liberally.
NOTE Folder names have changed to avoid a naming collision when using IDE Scripts to automate changes.
NOTE GraffitiTextField is now rebranded as GraffitiFieldLabel
NOTE Calls to IsDarkMode are now Xojo version dependent. #if XojoVersion > 2018.03 then
NOTE All calls to CType replaced with casting.

Web

Type Change
NEW Version information can be found in each class's GraffitiSuiteVersion Constant
ADD GraffitiHTMLExporter now has a new toInlineStyles method for converting HTML+CSS to HTML with inline style Attributes. Uses the Premailer API Beta 0.1.
ADD GraffitiWebAlert now has a MessageShown(message as GraffitiWebAlertMessage) event that fires after the message is visible in the browser.
ADD GraffitiWebAlerts that contain a Button with Default = True will now trigger that button's action when pressing Enter/Return.
ADD GraffitiWebAlertButton now has a Default as Boolean = False property.
ADD GraffitiWebButton now has an AutoDisable property to prevent subsequent unnecessary clicks while performing operations.
ADD GraffitiWebGrid now has a CellMouseEnter(row as GraffitiWebGridRow, column as GraffitiWebGridColumn) event.
ADD GraffitiWebGrid now has a CellMouseExit(row as GraffitiWebGridRow, column as GraffitiWebGridColumn) event.
ADD GraffitiWebHTMLEditor now has a DarkMode as Boolean property.
ADD GraffitiWebPopupMenu now exposes GotFocus and LostFocus events.
FIX Loading FontAwesome no longer causes a load slowdown and errors in the console.
FIX GraffitiHTMLExporter now does a case sensitive compare when encoding and decoding HTML entities.
FIX GraffitiWebAccordion no longer applies an unnecessary text color to labels contained within.
FIX GraffitiWebButton no longer loads all event code, even when handlers aren't used.
FIX GraffitiWebAccordion no longer hides separators.
FIX GraffitiWebAlert will no longer throw JavaScript exceptions on unsafe GraffitiWebAlertButton names. These are now altered to be safe and may be different than the name you assign. Please update your code.
FIX GraffitiWebCalendar now properly applies StyleDayToday and StyleDayFuture after switching views.
FIX GraffitiWebGrid once again allows mouse selection in cell editor.
FIX GraffitiWebGrid's Currency EditType no longer causes a JavaScript error in Safari.
FIX GraffitiWebGrid scrolling should be much faster in all scenarios.
FIX GraffitiWebGrid's DeselectAll method now works when SelectionMode = Single.
FIX GraffitiWebGrid no longer throws a JavaScript exception when loading data that contains doubles or currency before adding columns.
FIX GraffitiWebHTMLEditor no longer inappropriately exposes the Length property in the inspector.
FIX GraffitiWebHTMLEditor no longer inappropriately exposes the PlainText property in the inspector. You can assign PlainText to the HTML property.
FIX GraffitiWebHTMLEditor no longer throws a JavaScript exception when attempting to load Tweets.
FIX GraffitiWebHTMLEditor now relies entirely on QuillJS to do the heavy lifting in SelStart, SelLength, and SelText. This should fix a number of rarely reported issues where these properties would be offset by the number of block elements appearing in the text above the selection.
FIX GraffitiWebHTMLEditor now relies on Quill to pass back the plain text, rather than stripping this itself. Should be the best forward-compatible option.
FIX GraffitiWebHTMLEditor now does a lexical comparison on changes to HTML when receiving the text changed notification rather than a simple equals comparison.
FIX GraffitiWebHTMLEditor now handles raw HTML not generated by QuillJS a bit better.
FIX GraffitiWebHTMLEditor no longer throws a JavaScript exception on getFormat.
FIX GraffitiWebHTMLEditor now properly returns format properties on selection change.
FIX GraffitiWebHTMLEditor now uses the new table style as seen in the desktop version.
FIX GraffitiWebHTMLEditor no longer removes spaces while typing in Firefox.
FIX GraffitiWebHTMLEditor once again honors the WordWrap property.
FIX GraffitiWebPDF once again honors table LineHeight properties.
FIX GraffitiWebPDF no longer forces a download when using FromHTML. You should use the Download() method instead.
FIX GraffitiWebPopupMenu now properly sizes on GraffitiWebSidebar.
FIX GraffitiWebPopupMenu now honors lock properties on containers in GraffitiWebSidebar.
FIX GraffitiWebPopupMenu now sets the SelectedItem property for single select instances when the item is set as selected when added.
FIX GraffitiWebTextField no longer appears to be disabled when ReadOnly = True.
FIX GraffitiWebToolbar now properly updates GraffitiWebToolbarButton width in the browser when changed directly via buttonInstance.Width = <n>
FIX GraffitiWebTree's CheckAll and UncheckAll methods once again function correctly.
FIX GraffitiWebTree's GetIndexOf method now uses the framework's IndexOf method.
NOTE Folder names have changed to avoid a naming collision when using IDE Scripts to automate changes.
NOTE GraffitiWebHTMLEditor updated to QuillJS 1.3.6
NOTE FontAwesome support updated to Version 5.10.1