Release 23

Table of Contents

Date Released #

April 2017

Desktop #

Type Change
[NOTE] Demo logo updated for HiDPI
[ADD] GraffitiGrid
[ADD] GraffitiDateTimePicker
[ADD] GraffitiSyntaxEditor
[ADD] GraffitiHTMLEditor, formerly Tim Parnell’s HTML Edit.
[ADD] GraffitiHTMLEditor now has a Paste() function.
[ADD] GraffitiHTMLEditor now has a Cut() function.
[ADD] GraffitiHTMLEditor now has a Copy() function.
[ADD] GraffitiHTMLEditor now has a Undo() function.
[ADD] GraffitiHTMLEditor now has a Redo() function.
[ADD] GraffitiHTMLEditor now has a Delete() function for clearing currently selected text.
[ADD] GraffitiHTMLEditor now has a SelectAll() function.
[ADD] GraffitiTreeView now has a LockUpdate mechanism for blocking redrawing during lengthy operations.
[ADD] GraffitiTreeView now has a GetCheckedNodes overload to check only children of the specified node.
[FIX] GraffitiTreeView no longer draws a dropzone when dragging an undraggable item.
[FIX] All classes now use built-in Scaling Factor functionality, as custom implementation was broken with canvas changes in recent Xojo releases.
[FIX] GraffitiButton should now properly scale icons for scaling factors that are not 1 or 2.
[FIX] Classes no longer set the AntiAlias property of Graphics objects (these should default to True).
[FIX] GraffitiTreeView no longer crashes on Mac in HiDPI.
[FIX] GraffitiActionBar now properly draws icons with Alpha channels.
[FIX] GraffitiStepBar now properly draws icon with Alpha channels.
[FIX] GraffitiAccordion once again properly draws containers on Windows.
[FIX] GraffitiTreeView no longer allows ColumnCount value of 0.
[FIX] GraffitiTreeView default RowHeight is now 29.
[FIX] GraffitiTreeView now exposes ColumnCount and ColumnWidths to inspector.
[FIX] GraffitiButton now honors mouse events even when disabled, but does not change its drawing state.
[FIX] GraffitiButton now invalidates it’s parent control or window when ScaleFactor changes. There was some drawing weirdness where you could see two instances of the button on the screen when there was, in fact, only one.

Web #

Type Change
[ADD] GraffitiSuite now supports the use of alternate sources for scripts. See App Notes.
[ADD] .HTACCESS file for CORS policy now included in Scripts folder by default for FontAwesome usage.
[ADD] GraffitiWebHTMLEditor formerly Tim Parnell’s HTML Editor.
[ADD] GraffitiWebBattery
[ADD] GraffitiWebCamera
[ADD] GraffitiWebContextMenu
[ADD] GraffitiWebOption
[ADD] GraffitiWebSpeak
[ADD] GraffitiWebUploader
[ADD] GraffitiWebProgressRadial
[ADD] GraffitiWebProgressSemiCircle
[ADD] GraffitiWebSignature now supports a backdrop image (not saved with the signature data).
[ADD] GraffitiWebSignature now supports a backdrop color (not saved with the signature data).
[ADD] GraffitiWebAccordionNav now has an ItemMouseDown event.
[ADD] GraffitiWebGrid now has a Color edit type for displaying colors in grid cells.
[ADD] GraffitiWebGrid now has a Picture edit type for displaying images in grid cells.
[ADD] GraffitiWebGrid now has a ResetGrid method for removing all data and headers.
[ADD] GraffitiWebGrid now has a ContextClick event for right-clicks on cells.
[ADD] GraffitiWebGrid now has EditTypeHTML which allows for the display of HTMLified values in rows.
[ADD] GraffitiWebTree now has a CountItems() as Integer method.
[ADD] GraffitiWebTree now has MoveTo() method for moving children from one item to another.
[ADD] GraffitiWebTree now has CheckAll() and UncheckAll() methods.
[ADD] GraffitiWebTree now has HideCheckbox() and ShowCheckbox() methods.
[ADD] GraffitiWebTree now has several different themes.
[ADD] GraffitiWebAccordionNav now a StyleItemClicked as WebStyle property.
[ADD] GraffitiWebAccordion now has ExpandItem() and CollapseItem() methods.
[ADD] GraffitiWebPopupMenu now has MinimumInputLength property. This is the minimum number of characters that must be entered before search is triggered.
[ADD] GraffitiWebGrid now shows a Material Design loading spinner until first render has completed.
[ADD] GraffitiWebChart now supports further customization of tooltips with the new TooltipTemplate and MultiTooltipTemplate properties.
[ADD] GraffitiWebEditor now has a plethora of new options for controlling which buttons are visible in the toolbar.
[ADD] GraffitiWebPDF Tables / Complex demo now showcases using a GraffitiWebSignature’s output image.
[ADD] GraffitiWebPopupMenu now has a SelectionCleared event for Multiple selection mode.
[ADD] GraffitiWebPopupMenu now has a SelectionRemoved event for when an item is unselected in multiselect mode.
[ADD] GraffitiWebPDF now has more constants for all available Formats, and a note with each format’s PT width and height.
[ADD] Added links to CANIUSE.COM for HTML5 reliant class pages to display what browsers are supported.
[ADD] GraffitiWebGrid now has an example for quick changing of cell values on click, regardless of edit settings. (SEE: Quick Change column)
[ADD] GraffitiWebTabBar now has a RemoveAll() method.
[FIX] GraffitiWebPopupMenu now supports the Style property.
[FIX] GraffitiWebPopupMenu now has a DoubleClick event which only fires when MultiSelect = True.
[FIX] More global changes to Width/Height settings…actually, stripped it all out because it looks like Xojo fixed that bug.
[FIX] GraffitiWebUploader now also triggers FileAvailable when the user clicked to select a file.
[FIX] GraffitiWebTooltip now checks for Session existence on Close to prevent trying to Unbind and crashing the app.
[FIX] FontAwesome CSS file now properly locates Font files when using remote server.
[FIX] GraffitiWebDatePicker no longer throws 404s to console for languages (these were false positives).
[FIX] GraffitiWebFontAwesome no longer sets unnecessary timers on load. This should increase performance quite a lot.
[FIX] GraffitiWebFontAwesome now exposes IconName and IconSize to inspector.
[FIX] GraffitiWebFontAwesome now properly buffers Icon changes.
[FIX] FontAwesome should once again load properly for all classes (result of CDN modifications).
[FIX] GraffitiWebTree and others no longer throw 404s based on invalid constructed URLs.
[FIX] GraffitiWebTree now properly buffers until element is ready.
[FIX] GraffitiWebGrid works…again. Silly mistake. I need more sleep.
[FIX] GraffitiWebLikert’s header now appears at the top again.
[FIX] GraffitiControlWrapper no longer throws NilObjectExceptions in GetFilePath on OS X.
[FIX] GraffitiWebGrid should no longer throw exceptions when users have Kaspersky installed.
[FIX] GraffitiWebGrid should once again properly apply SelectionType changes (Styles Required).
[FIX] GraffitiWebGrid now uses DIV tags for displaying image cells rather than IMG tags for Firefox compatibility.
[FIX] GraffitiWebWall should no longer throw exceptions to the console about event.handle.apply
[FIX] GraffitiWebDatePicker should no longer fire the ValueChange event when programmatically selecting dates.
[FIX] GraffitiWebPopupMenu should now properly remove close buttons on Read-Only and Disabled instances.
[FIX] GraffitiWebTree no longer uses jQuery’s toElement function, so navigation should now work properly in IE and FF.
[FIX] GraffitiWebPopupMenu no longer ignores items added in Shown event.
[FIX] GraffitiWebWall should no longer trow JS errors intermittently on load.
[FIX] GraffitiWebToggle no longer fires the ValueChanged event multiple times.
[FIX] GraffitiWebDatepicker locale selection should once again function properly.
[FIX] GraffitiWebCalendar once again supports Google Calendar integration.
[FIX] GraffitiWebTree’s DeselectAll method now properly functions.
[FIX] GraffitiWebTree now fires ItemsChecked() event with empty array when all items are unchecked.
[FIX] GraffitiWebAccordion should no longer throw OutOfBoundsExceptions in rare cases.
[FIX] GraffitiWebAccordion should no longer return only the first item for all events.
[FIX] GraffitiWebChart now shows only Labels and not values in tooltips for Bar and Pie charts.
[FIX] GraffitiWebGrid should no longer throw TypeMismatchExceptions in RowToString under certain circumstances.
[FIX] GraffitiWebChart should no longer ignore decimal values.
[FIX] GraffitiWebPDF should no longer throw Javascript errors when calling Download(), Output(), or Save() without first creating a document.
[FIX] GraffitiWebTabPanel init code moved to Open() event to prevent duplicate tabs.
[FIX] GraffitiWebGrid now properly honors the Visible property.
[FIX] GraffitiWebEditor should no longer experience height variation issues.
[FIX] GraffitiWebDatePicker variants no longer rely on functions that may output different values based on locale.
[FIX] GraffitiWebCalendar’s RemoveAllEvents() method once again functions properly.
[FIX] GraffitiWebGrid now sorts properly when the data has changed significantly.
[FIX] GraffitiWebEditor once again honors height changes.
[FIX] GraffitiWebGrid no longer throws JS exceptions when row data contains EOLs.
[FIX] GraffitiControlWrapper now has a defined JavascriptNamespace for compatibility with 2016r2+.
[FIX] GraffitiWebGrid no longer loads blank under certain conditions.
[FIX] GraffitiWebPopupMenu no longer ignores number values when AllowAdd = True.
[FIX] GraffitiWebAccordionNav should no longer orphan scrollbars when hidden.
[FIX] GraffitiWebGrid should now properly resize and position in all cases.
[FIX] GraffitiWebToggle now honors the Visible property.
[FIX] GraffitiWebPopupMenu now properly fires the change event after RemoveAllItems.
[FIX] GraffitiWebGrid row columns should now properly line up with header columns.
[FIX] Material CSS no longer overrides WebSeparator styles.
[FIX] Namespace conflicts addressed.
[FIX] GraffitiWebCurrencyField should now honor the PadDecimal property.
[FIX] GraffitiWebDatePicker classes no longer erroneously show 404s in the Developer Console.
[FIX] GraffitiWebWall once again responds to resizes properly.
[FIX] GraffitiWebTree no longer contains an errant javascript comment that causes JS exceptions.
[FIX] GraffitiWebAccordion now has an ItemCount() as Integer method.
[FIX] GraffitiWebPDFTable now has a StartX property for controlling the starting X position of the table.
[FIX] GraffitiWebDatePicker classes now honor Visible property.
[FIX] GraffitiWebPDFTable now has a Width property for controlling table width.
[FIX] Demo now showcases visibility for DatePicker classes.
[FIX] GraffitiWebWall no longer hyper-extends GutterWidth.
[FIX] GraffitiWebChart no longer intermittently throws javascript errors regarding Arc on pie charts.
[FIX] GraffitiWebGrid now longer gives Black Box of Death with Pictures in cells.
[FIX] GraffitiWebWall issue with CSS syntax in Firefox.
[FIX] GraffitiWebCamera no longer uses ‘innerHTML’ to add elements to BODY tag. Never use innerHTML on BODY. Never. Never ever. Don’t even think about it. It breaks events. OMG, seriously, it’s awful.
[FIX] GraffitiWebPopupMenu now properly sets ReadOnly to the HTML input field, disabling the date selector.
[FIX] GraffitiWebCalendar now properly unloads when hidden to address collisions with other libraries.
[FIX] GraffitiWebDatePicker single no longer fires events when changing or clearing value programmatically.
[FIX] GraffitiWebSignature now redraws properly on HiDPI screens.
[FIX] GraffitiWebSignature now retains drawing after being hidden and re-shown.
[FIX] GraffitiWebPDF.Download now functions in Firefox and Opera.
[NOTE] GraffitiWebPopupMenu’s GetSelectedItems() as Integer() method has been renamed to GetSelectedItemsIndex().
[NOTE] GraffitiWebPopupMenu’s new GetSelectedItems() As GraffitiWebPopupMenuItem() allows for more manageable code.
[NOTE] GraffitiWebGrid’s RowTag method now uses the Assigns keyword in the declaration, so you can use it as follows to set the RowTag value: myGrid.RowTag(RowIndex) = “NewRowTag”
[NOTE] GraffitiWebPopupMenu.AllowDeselect deprecated. The functionality had changed, and didn’t match expectations.
[NOTE] Rolled back from new framework features.
[NOTE] Did some code cleanup. May see a modest speed increase.
[NOTE] Reduced server/client communication in GraffitiWebGrid. Should speed things up dramatically, and reduce bandwidth.
[NOTE] GraffitiWebDatePicker’s library, Bootstrap Datepicker, updated to 1.7.0
[NOTE] GraffitiWebCalendar’s library, FullCalendar, updated to 3.3.1
[NOTE] GraffitiWebPDF’s library, jsPDF, updated to 1.3.3
[DEPRECATED] GraffitiWebEditor