2020r1 Release Notes

From Xojo Documentation

You are currently browsing the old Xojo documentation site. Please visit the new Xojo documentation site!

Xojo 2020 Release 1 is now available with over 320 changes and improvements.

Major changes include:

Release Notes

Bug Fixes (161 cases)

Case Area Description
48102 Compiler Incorrect expressions in For Each statements now raise a compile error instead of a failed assertion.
58137 Compiler Building 64-bit Windows apps in the Linux IDE no longer raises an assertion, but should now work.
59155 Compiler Fixed a compile error that could occur when adding a SerialConnection to a window and implementing the LineStateChanged event.
59266 Compiler Analyzing a project no longer slows down subsequent debug runs or builds.
59371 Compiler Var can now be used in XojoScript class definitions when defining properties.
59598 Compiler Casting Nil to an Object no longer crashes.
59381 Crashes & Assertions » Crash Incorrect expressions used in For Each statements now raise an error instead of crashing for iOS builds.
58894 Crashes & Assertions » Failed Assertion Windows: Placard/UpDownArrows controls no longer raises a failed assertion if its width/height are 0 (or negative).
59307 Crashes & Assertions » Failed Assertion Passing an invalid floating point number (i.e. a value like NaN or Inf) to Graphics.DrawString, TextSize, or StringHeight no longer raises a failed assertion, or crashes/hang.
58696 Crashes & Assertions » IDE Unhandled Exception IDE no longer crashes if controls are sized too small or too large in the layout editor.
58699 Crashes & Assertions » IDE Unhandled Exception BuildDateTime now uses the same Timezone at Buildtime and Runtime.
58784 Crashes & Assertions » IDE Unhandled Exception Windows: Certain TimeZones could not be constructed by name (like Turks and Caicos), this is now fixed with the update to a newer version of ICU 65.1.
59449 Crashes & Assertions » IDE Unhandled Exception The IDE no longer crashes when dragging Library items to the debugger's Navigator.
11597 Database Plugins PostgreSQLDatabase: now correctly takes the database schema into account when updating records from a RowSet.
41633 Database Plugins PostgreSQLDatabase no longer leaves orphaned prepared statements on the server.
59390 Database Plugins » MySQL Checking DatabaseColumn.Value for Nil now works correctly when these originate from DatabaseRow.
58567 Database Plugins » PostgreSQL Error messages when failing to connect are now correctly encoded as UTF8 strings.
58909 Database Plugins » PostgreSQL Any errors that occurred before performing SelectSQL or ExecuteSQL calls are now cleared properly.
59604 Database Plugins » SQLite SQLitePreparedStatement.ExecuteSQL now properly raises an exception on error.
59659 Debugger CGFloat values now show up in the debugger.
26147 Framework » All Graphics.FontUnit now works for Console/Web apps.
38272 Framework » All Console Graphics: Fixed incorrect StringWidth and StringHeight calculations.
43527 Framework » All Console graphics: calling DrawText right after DrawPicture no longer incorrectly aliases the text.
58604 Framework » All Added IteratorException that is raised when an error or a change occurs in the data being iterated over.
58845 Framework » All Global Val is no longer shown as deprecated in docs. Global Titlecase is now shown as deprecated when you Analyze Project.
58934 Framework » All DatabaseColumn.Value now returns a Variant of the correct type instead of always returning a String, unless of course the value is actually String.
58940 Framework » All GenerateJSON on a Variant Array no longer only creates a JSON array of string values, unless of course the Variant Array only contains strings.
58956 Framework » All When DateTime.FromString is passed an empty Date string it now raises an InvalidArgumentException instead of crashing (on Windows).
59041 Framework » All Fixed some incorrect Window.Types enum values, i.e. Window.Types.Floating should be 3 instead of 1.
59068 Framework » All Added AddAllRows function that takes a ParamArray for PopupMenu/ComboBox.
59092 Framework » All IsNumeric is now compatible with incoming Text values.
59100 Framework » All Trying to change the Modification/Creation DateTime of a FolderItem when that FolderItem is busy/open now properly throws an IOException.
59105 Framework » All String.ToDouble now takes into account the current localization when parsing the string.
59114 Framework » All Creating a new DateTime from a DateTime returned by DatabaseColumn.DateTimeValue no longer throws a NilObjectException.
59125 Framework » All SerialConnection.Connect now raises an IOException on error. If a Device is not assigned when connecting the error code returned is SerialDeviceNotAssigned.
59163 Framework » All Updated RGBSurface.Transform page to have correct parameter types.
59174 Framework » All Setting the HorizontalScrollPosition of a TextField no longer causes a StackOverflowException.
59185 Framework » All Assigning a Picture to a DatabaseRecord.PictureColumn or DatabaseField.PictureValue no longer crashes.
59232 Framework » All Assigning a Picture to DatabaseField.PictureValue no longer crashes.
59284 Framework » All Closing a MenuItem that was just clicked on no longer crashes. When this MenuItem is clicked on and then closed from an EnableMenuItems event an UnsupportedOperationException is raised.
59467 Framework » All Added Crypto.HashAlgorithms.SHA1 enum value (was incorrectly named Crypto.HashAlgorithms.SHA before).
59523 Framework » All Point doc page updated to remove mention of operators.
59589 Framework » All PrinterSetup.Landscape property should not be deprecated and IsLandscape property should not have been available (and is now marked as deprecated).
59595 Framework » All Added missing TabPanel.AddPanelAt and RemovePanelAt methods, deprecated Insert and Remove. Overloaded AddPanel for compatibility.
59605 Framework » All FolderItem.IsFolder no longer raises an IOException if the folder doesn't exist, it'll return False instead.
59650 Framework » All Color.CMY now matches output of deprecated CMY when an alpha is specified.
59653 Framework » All Added POP3SecureSocket.RemoveMessageAt() to replace DeleteMessage(). Deprecated incorrectly added RequestMessageAt().
59753 Framework » All RectControl.RefreshRect() is deprecated with a Refresh() overload as its replacement.
59764 Framework » All Removed a few extraneous properties on TextField/TextArea that were not intended to be usable (i.e. IsBold, IsItalic, etc.)
59781 Framework » All FolderItem: getting/setting the CreationDate/CreationDateTime and ModificationDate/ModificationDateTime now correctly offsets any daylight savings time.
59815 Framework » All XojoScript: Mid String extension function no longer acts like MidB, but now correctly parses unicode points.
59881 Framework » All BevelButton, ImageWell, Placard, and PopupArrow’s MouseUp coordinates now correctly report negative values.
60056 Framework » All No longer crashes when assigning a Nil WString to a String.
60063 Framework » All Removed Timer.Tolerance property as it was not documented and did not do anything.
60202 Framework » All Analyze project can now report that StrComp is deprecated with a replacement of String.Compare.
60237 Framework » All Cleaned up POP3SecureSocket events by removing unused ServerReplied, LoginSucceeded, RollbackSucceeded.
60288 Framework » All Added SpecialFolder.Caches property.
60323 Framework » All Updated StyledText:

Deprecated AddStyleRunAt(Run as StyleRun,Index as Integer) in favor of AddStyleRunAt(index as Integer, run as StyleRun)

60358 Framework » All MenuItem: LastRowIndex is now a Property instead of a Method.
60527 Framework » All When iterating through a RowSet using For Each Loop, we now reset the RowSet to the beginning before iterating.
60767 Framework » All Ptr to String conversion no longer truncates the Ptr to a 32-bit value for 64-bit builds.
60271 Framework » Desktop Window.Types.Sheet enum value has been corrected.
60304 Framework » Desktop HTMLViewer.NewWindow event now expects an HTMLViewer as return value instead of just a plain Object.
55508 Framework » Linux MouseDrag events now fire correctly when using a touchscreen.
57685 Framework » Linux Setting the BinaryStream.BytePosition now flushes the buffer. This fixes an occasional file I/O misread on certain platforms.
58254 Framework » Linux Changing the Label TextColor no longer leaks memory.
58917 Framework » Linux A raised RuntimeException no longer causes a segmentation fault on Raspberry Pi (mainly an issue on Jessie & Stretch).
59346 Framework » Linux Linux IDE: now uses the preferred control heights (of the OS/theme) when new controls are added to the layout editor.
59385 Framework » Linux Updating the font properties on a Control (like FontSize on a Label) no longer leaks memory.
60293 Framework » Linux 64-bit and ARM Linux apps now correctly display their app icons in the desktop task/launch bar instead of being blank/generic looking.
16273 Framework » Web Web controls are now consistently disabled when the Enabled property is False.
17345 Framework » Web Enabling and disabling web controls no longer displays them inconsistently.
21791 Framework » Web Modal WebDialogs no longer allow users to interact with controls in the background.
28438 Framework » Web Modal WebDialogs no longer allow users to interact with controls in the background.
34177 Framework » Web Web Controls are now responsible for disabling themselves at runtime so they'll always have a consistent appearance.
34372 Framework » Web Disabling a WebContainer now correctly disables all contained controls.
35159 Framework » Web Controls on containers that are disabled in the IDE are now correctly disabled when the container is first displayed in the browser.
42152 Framework » Web WebDialogs no longer become translucent at odd times.
49635 Framework » Web Web tooltips (helptags) can now be set in code.
51140 Framework » Web Tooltips which contain quotes now render correctly when set at runtime.
54064 Framework » Web WebButton now can now be triggered with the spacebar when it has focus.
54115 Framework » Web WebFileUploader 2.0 now works with iOS devices.
58058 Framework » Web Localized constants work again in Web projects. Added a fallback protocol so that if the supplied language code contains a hyphen and the Xojo framework doesn't have an exact match, we try again with just the first segment.
58537 Framework » Web WebFileUploader's Add button is now disabled when an upload is in progress.
59914 Framework » Web Exceptions in WebUploadedFile.Save are no longer intercepted so they can be handled by user code.
20796 Framework » Windows FolderItem.ModifcationDate/CreationDate now correctly offset the daylight savings time.
34561 Framework » Windows Setting the UserAgent for WebKit based HTMLViewer now works, although this needs to be done in the Constructor of your HTMLViewer subclass for it to take affect.
50476 Framework » Windows System.MouseX/Y now reports the virtualized X, Y coordinates which matches macOS behavior when dealing with multiple monitors of different DPI scale factors.
54398 Framework » Windows We now throw an exception instead of raising failed assertions when something goes wrong with drawing pictures. The likely scenarios are 1. Out of memory or 2. The Picture is too big to be drawn (depending on the Graphics target).
58605 Framework » Windows Drawing an alpha Picture on to itself now works instead of raising a failed assertion.
58611 Framework » Windows When there's not enough memory to create a Picture we now raise an OutOfMemoryException instead of crashing.
58674 Framework » Windows Closing the window with an active editable cell on a Listbox no longer crashes.
58683 Framework » Windows MenuItem.Popup now accounts for multiple monitors with multiple DPI scale factors when popping up the menu.
58697 Framework » Windows URLConnection/Xojo.Net.HTTPSocket response header value is no longer incorrectly truncated if there exists a colon in the value itself.
58819 Framework » Windows BinaryStream.Read no longer crashes when reading > 3GB of data for 64-bit Windows builds.
58949 Framework » Windows Native HTMLViewer no longer hangs the app in an infinite exception loop if the window doesn't have a menubar.
59270 Framework » Windows If MoviePlayer.HasController is set we now show the full controller set (this really only affects Windows since no other platform actively supported the mini set).
59732 Framework » Windows Invalidating other controls in a Paint related event no longer prevents the other controls from invalidating/painting.
59750 Framework » Windows When loading animated gif files we no longer return all the image parts. For cross platform compatibility we now return the first image in the set.
60487 Framework » Windows Debugger now consistently breaks correctly to the source line that triggered an Exception for 64-bit Windows builds. Depending on where the Exception was raised this had not been consistent, and often times would break in the debugger but show no code.
60780 Framework » Windows Hierarchical Listbox: selection highlight no longer exceeds the cell bounds . This could happen when the cell text exceeded the amount of space allocated for that cell.
58924 Framework » iOS » Mobile iOSCustomTableCell controls now responds correctly to dark mode changes.
59113 Framework » iOS » Mobile iOSTextField default text color is black again on iOS versions lower than 13.
59542 Framework » iOS » Mobile Fixed a place where we'd used the wrong case for the library of an iOS declare which caused it to fail on a case-sensitive file system.
60853 Framework » iOS » Mobile Setting iOSSegmentedControl.Value (within range) after removing/adding segments no longer raises an OutOfBoundsException.
31888 Framework » macOS Tooltips on controls embedded in a parent container and added within a TabPanel or PagePanel now shows correctly when switching between tabs/pages.
36919 Framework » macOS Listbox: Header height now dynamically adjusts to fit various font sizes. This was already the case on Windows/Linux.
52659 Framework » macOS SerialDevice.WithName now returns a proper device that SerialConnection can connect to.
54439 Framework » macOS FolderItem: optimized child by index APIs to match performance before the switch to using the newer NSURL APIs.
58903 Framework » macOS Mac IDE: Loading internal plugins from a unicode path now works again.
59275 Framework » macOS FolderItem memory is now cleaned up immediately after FolderItem.Parent or FolderItem.Name is called instead of being released after the main loop iteration runs.
59334 Framework » macOS GraphicsPath drawing no longer incorrectly offset on HiDPI Retina displays.
59660 Framework » macOS Getting the FolderItem.ModificationDate (or ModificationDateTime) now immediately releases memory instead of waiting on the next event loop to do so.
60575 Framework » macOS DrawInto no longer crashes when drawing to a clipped Graphics.
60591 Framework » macOS Graphics: setting the FontUnit to Pixels, Inches or Millimeters now works correctly when drawing text on HiDPI displays.
61025 Framework » macOS Our macOS framework no longer relies on the non-public API getsectiondata.
59723 IDE New project windows no longer show as all black when they first open on macOS.
58765 IDE » Auto Complete The word Selector now autocompletes when typing it in a declare.
58993 IDE » Auto Complete Autocomplete now matches "Allow" prefix instead of "Allows".
58994 IDE » Auto Complete Added "Is" to autocomplete prefix list.
59235 IDE » Code Editor When using super-return to expand an inline if, the keywords for then, else, end if now match the case of the initial if (or all use standardize format if the "use standardize format" at end of line preference is enabled).
59326 IDE » Code Editor The code editor no longer jumps back to the last edited line if you scroll and then click & drag to make a new selection and have code reformatting turned on.
59372 IDE » Code Editor The code editor no longer suggests Super.Destructor when adding a Destructor method to the subclass of a class which also has a Destructor. This change was made because the framework calls both class and subclass Destructors automatically and calling it in user code actually causes it to fire twice.
48119 IDE » Debugger Viewing Text types that contain a lot of content no longer hangs the IDE.
56047 IDE » Debugger Hex viewer no longer appears blurry at HiDPI.
58665 IDE » Debugger DatabaseRow contents can now be viewed in the debugger.
59438 IDE » Debugger Debugging objects, whose classes include Hidden attributes, no longer crashes.
60057 IDE » Debugger Numeric conversions, i.e. FromBinary, FromHex, FromOctal, FromString and ToString no longer raise Xojo.Core exceptions. While these were being re-raised as InvalidArgumentExceptions, in the debugger you would still see both.
58609 IDE » FileIO Images attached to ImageSets that have to be relocated when a project opens now save the location change properly in text projects.
58999 IDE » FileIO Checkbox inconsistency between the VisualState as seen in the IDE vs. Runtime is fixed.
60980 IDE » FileIO IDE now tries to load plist files as soon as they are dropped on the IDE so it can give feedback about files that are inaccessible or malformed in some way.
59666 IDE » Icon Editor Fixed a bug where the IDE unexpectedly stalled when dragging a PDF file on the Icon Editor on macOS.
60109 IDE » Icon Editor Labels on the icon editor are now the right color on macOS light and dark mode.
58629 IDE » Inspector Method Edit Panel is now a little more intelligent about what methods are available to be overridden and the initially generated code.
59388 IDE » Inspector Overriding a method in a subclass now uses the capitalization from the super's class method name.
59397 IDE » Inspector Newly added Plugin controls now displays the Tooltip property in the Inspector instead of the deprecated HelpTag property.
59926 IDE » Inspector TextArea: Multiline property now shows up in Inspector.
60093 IDE » Inspector SegmentedButton: Tooltip and Tabstop property now appear in the Inspector.
57533 IDE » Language Reference Linux IDE: local Language Reference links now work correctly instead of doing nothing.
58624 IDE » Language Reference Search field on the Language Reference on macOS 10.14 and above now switches correctly between light and dark mode when the window isn't visible during the transition.
53168 IDE » Layout Editor WebPopupMenu now renders properly in the layout editor on HiDPI screens.
53903 IDE » Layout Editor WebTextArea resizes live in the layout editor again.
57989 IDE » Layout Editor Linux IDE: Window Backdrop image is now properly drawn in the Layout Editor.
60204 IDE » Layout Editor Adding a Right layout constraint for iOSSegmentedControl no longer hangs the IDE.
58566 IDE » Miscellaneous Mac and iOS projects containing an invalid plist file will now show a warning in the Resolve Issues dialog when the project is first opened.
58587 IDE » Miscellaneous Removed the ability to export classes that are already external.
59055 IDE » Miscellaneous Added back the Help->QuickStart->Getting Started menu item.
60393 IDE » Miscellaneous Cleanup from previous debug-runs is now a little faster.
60498 IDE » Miscellaneous IDE now properly cleans up any plugin related resources that may have remained in the temporary folder.
58662 IDE » Navigator When cancelling a Navigator Filter, always force it to refresh.
58679 IDE » Navigator A Database project item is now usable for 64-bit builds instead of throwing NilObjectExceptions when accessed.
59617 IDE » Navigator IDE no longer crashes if you try to undo the addition of a Module while the navigator has the Classes group name selected.
60452 IDE » Navigator Navigator scrolling speed has been optimized.
58564 IDE » Preferences Changed "Menu short cuts" in Preferences window to "Menu shortcuts".
58759 IDE » Rendering In event handlers, the CurrentMethodName constant no longer replaces underscores (“_”) in control names with periods (“.”).
58616 IDE » UI IDE no longer shows a warning about building 32-bit apps in an iOS project on macOS 10.15+.
59272 Installer Debian installer now correctly looks for libwebkit2gtk dependencies.
59225 Miscellaneous RoundRectangle: OvalWidth and OvalHeight property values are now correctly converted to their new replacement properties (i.e. CornerWidth and CornerHeight).
45450 Plugin SDK Linux & macOS IDE can now load 64-bit shared library plugins that are found directly in the Plugins folder (i.e. without a packaged hierarchy).
55210 Plugin SDK Updated EyeControl makefiles to be more current and appropriate for 64-bit builds.
58512 Plugin SDK REALUnregisterBackgroundTask now properly cleans up memory instead of leaking ~16 bytes worth.

Changes (43 cases)

Case Area Description
58701 Database Plugins » SQLite Updated SQLite plugin to 3.30.1.
59490 Database Plugins » SQLite Updated SQLite Plugin to 3.31.1.
58925 Framework » All Added new Crypto.HMAC function that takes Crypto.HashAlgorithms instead of the deprecated Crypto.Algorithm.
59300 Framework » All Deprecated DrawPolygon, use DrawPath instead.

Deprecated FillPolygon, use FillPath instead.

59984 Framework » All HTMLViewer: changed our injected sendtoxojo Javascript function to sendToXojo to match Javascript naming convention.
60594 Framework » All Listbox: the sort widget is now drawn as part of the HeaderContentPaint event instead of HeaderBackgroundPaint. i.e. returning true from HeaderBackgroundPaint no longer suppresses the sort widget from drawing.
17353 Framework » Web When a WebToolbar is positioned at the bottom of a page, WebToolbarMenus now appear above the toolbar instead of below.
17355 Framework » Web WebToolbarMenus now show a downward caret after the caption to indicate that they contain a menu.
18949 Framework » Web CMD/CTRL-A now selects all rows in WebListBox.
23571 Framework » Web WebMenuItem now works more like the desktop MenuItem class.
25373 Framework » Web Add LastAddedRowIndex and LastRowIndex to WebPopupMenu.
28615 Framework » Web WebSegmentedControl now supports keyboard navigation.
31967 Framework » Web Contextual menus on web controls now appear at the cursor location.
34369 Framework » Web Control enabled state is now properly retained when the parent control's enabled state is changed.
46413 Framework » Web Radio Buttons can now be added to a WebRadioGroup at runtime.
50961 Framework » Web Added WebStorage API for local storage.
55191 Framework » Web Application.HandleURL now has a second object specifically for Response information.
59447 Framework » Web Web framework has been updated to support Bootstrap 4.
59560 Framework » Web Session History data is now stored on the server to allow data larger than 2048 bytes.
59686 Framework » Web Added WebListbox cell types.
59771 Framework » Web WebApplication now has a Sessions iterator.
59864 Framework » Web Modernizr library no longer reorders the body and head tags.
59993 Framework » Web WebUIControl Shown and Hidden events will now fire every time a visual control is shown or hidden.
60144 Framework » Web App.DoEvents, App.SleepCurrentThread and App.YieldToNextThread will now raise an exception if called when a WebSession Context exists. This includes events due to user interactions on the browser. If your intention is to send changes to the browser, please use the UpdateBrowser method on the control you are trying to update to push changes immediately.
60195 Framework » Web The WebTextField.Value property can now be set.
60197 Framework » Web Session.Activated and Session.Deactivated now also fire when the browser window gains or loses focus, respectively. Added Visible as Boolean parameter to the Deactivated event so you can tell if the page is still visible to the user, depending on browser support (defaults to True).
60333 Framework » Web Added WebSession.Pages iterator.
60334 Framework » Web Added Controls iterator to WebContainer, WebDialog and WebPage.
60342 Framework » Web WebRadioButton.ValueChanged event now includes the selected button.
60432 Framework » Web WebContainerControl has been renamed back to WebContainer.
60496 Framework » Web WebFileUploader will now return a 400 BAD REQUEST response to the browser if the uploaded data is corrupt in some way.
61052 Framework » Web WebToolbarItem now has a Badge property.
61059 Framework » Web Bootstrap icons are now directly available as WebPictures in the framework and can be used anywhere a WebPicture is used.

Usage: me.icon = WebPicture.BootstrapIcon("bar chart")

The list of available icons is at:

61140 Framework » Web WebListbox.CellAction event has been renamed to CustomCellAction.
61278 Framework » Web WebListbox.Selected setter has been deferred to a later release.
59373 IDE » Code Editor Change Code Reformat script optimization from Low to High.
59597 IDE » FileTypes Editor FileType editor icon editor now renders disabled when the control is not enabled so it's more obvious that you can't add an icon.
60339 IDE » Graphics The DefaultButton control now has white text instead of black when displayed in the Library and Navigator.
58463 IDE » Miscellaneous Duplicate method dialog for plugins is now more specific about where the problem occurred.
58919 IDE » Miscellaneous Added a button to close the Getting Started window.
60110 IDE » Miscellaneous Removed unused 256x256 and 128x128 icons from default web projects.
50882 IDE » Plugins macOS IDE now loads the native 64-bit plugin targets before attempting any other variations.
60315 XojoScript XojoScript: added ability to save compiled XojoScript object

- Added XojoScript.Compile(optimizationLevel As OptimizationLevels) As MemoryBlock - Overloaded XojoScript.Run(cachedObject As MemoryBlock = Nil)

New Items (72 cases)

Case Area Description
52546 Compiler Removed 32-bit macOS parts from the framework. Only 64-bit macOS apps can be built.
58654 Compiler MachO executables are now padded with an additional 2048 bytes of header space for 3rd party apps to poke into.
10701 Framework » All Support for creating PDF documents on macOS, Windows, Linux ( Desktop), Web and Console.
11467 Framework » All Updated Graphics.DrawPicture to use clearer parameter names so that they are more useful in the Syntax Help area and match what is in the Language Reference.
11665 Framework » All Listbox: added two new header paint events

HeaderBackgroundPaint(g As Graphics, column As Integer) As Boolean HeaderContentPaint(g As Graphics, column As Integer) As Boolean These new events are triggered whenever the header requires repainting. Returning True means override our drawing, False otherwise. For the end cap (the column above the scrollbar if any), only the HeaderBackgroundPaint event will be triggered.

48140 Framework » All HTMLViewer now has the JavaScriptRequest event which is called by a special JavaScript function called executeInXojo() or executeInXojoSync() which accepts any number of numeric and string parameters. You have to use the WebKit renderer for this to work on Windows.
58548 Framework » All SerialConnection: Added new Parities enumeration values Space and Mark.
58902 Framework » All Windows/Linux: Updated frameworks to use latest version of ICU 65.1, this mainly affects DateTime, TimeZone and Locale.
58933 Framework » All Added String.Characters iterator. Just like Text.Characters this iterator will iterate through all the Characters (including grapheme clusters) and not individual codepoints.
59339 Framework » All Widened Web EmailAddressField.
59344 Framework » All Extended Double and Single with IsNaN and IsInf functions. Use IsNaN to determine if a floating point calculation yields NaN (Not-A-Number), and IsInf to determine if a floating point calculation yields an infinity value (either positive or negative).
59486 Framework » All Added the following convenience methods to PopupMenu:

— SelectRowWithValue(targetValue As String) — SelectRowWithTag(targetValue As Variant)

59550 Framework » All Added Color.ToString and FromString methods to match equivalent API 2.0 methods on other datatypes.
59680 Framework » All The new available methods: AddAllRows(items() As String), and AddAllRows(ParamArray item As String), will add the received values at the end of the ListBox, or at the end of the first column for multi-column ListBoxes.
59936 Framework » All Updated HTMLViewer for improved JavaScript communication:

- ExecuteJavaScript (executes JavaScript asynchronously) - ExecuteJavaScriptSync (new, executes JavaScript synchronously, returns Variant) - executeInXojo (new, called from JavaScript to trigger JavaScriptRequest event asynchronously) - executeInXojoSync (new, called from JavaScript to trigger JavaScriptRequest event synchronously, returns String) - New event JavaScriptRequest(method As String, parameters() As Variant) As String

60212 Framework » All Added new UnicodeMode property to TextArea, this allows Codepoint or Character selection modes:

- Added UnicodeModes enum (0-Native, 1-Characters, 2-Codepoints) with the default being Native which is Codepoints on Windows/macOS and Characters on Linux - On Linux only Native/Characters is supported, an UnsupportedOperationException is thrown otherwise - This new property can be found in the Advanced tab in the Inspector - Updated StyledText to also support Characters UnicodeMode when associated with a TextArea

61021 Framework » All Fixed text size and truncation when printing reports on PDF Document.
54117 Framework » Linux Added a new "Normalize Control Sizes" build option for Linux Desktop targets which normalizes all the controls widths/heights, removing any theme specific padding and adjustments to make controls on any Linux distro look similar without having to adjust the heights individually depending on theme/distro.
12822 Framework » Web WebListbox now supports Single, Multiple and No Selection.
13417 Framework » Web Added WebComboBox control.
13809 Framework » Web XojoWebButton now has Cancel and Default properties just like it does on the desktop.
14542 Framework » Web There are now two dialogs which can appear when a user is losing connection to a WebApp, one when the browser first notices that it didn't get a response to a request and the second when it determines that the server is actually gone. The text on both of these dialogs can be customized on the Session class.
15365 Framework » Web WebListbox columns are now sortable.
15601 Framework » Web WebButtons now have a Cancel option which causes the button to fire when the ESC key is pressed.
15639 Framework » Web WebFileUploader has been refactored so that the interface and upload engine are now separate entities. The default interface is now simply a text field and a button. More UIs will be available in the future and developers will be able to create their own when the new WebSDK is released later this year.
16038 Framework » Web WebLinks can now have the appearance of a button.
16749 Framework » Web Pressing Return or ESC on a page or dialog which contains a Default or Cancel button will now automatically fire their Pressed events respectively.
17424 Framework » Web WebMapViewer now has support for Directions.
17460 Framework » Web WebButton now has a Press method which directly fires the Pressed event.
18047 Framework » Web WebMoviePlayer playback position can now be set precisely by specifying the position in fractions of a second.
18048 Framework » Web Added Read-Only Duration property to WebMoviePlayer.
18068 Framework » Web WebFileUploader has been refactored so that the interface and upload engine are now separate entities. The default interface is now simply a text field and a button. More UIs will be available in the future and developers will be able to create their own when the new WebSDK is released later this year.
18181 Framework » Web Added a DatePicker control to the web framework.
18991 Framework » Web Added UpdateBrowser method which pushes the current state of the control to the browser even if in the middle of a long running process.
19812 Framework » Web WebListbox now supports the selection type of "None".
19813 Framework » Web Added WebListBox.SelectedRowColor for setting the selection color.
23041 Framework » Web Web projects now have PagePanel and TabPanel controls.
23071 Framework » Web The browser contextual menu is now shown if you don't assign your own page level contextual menu.
26822 Framework » Web HTMLViewer source can now be retrieved using "var code as String = EvaluateJavascript("document.html.outerhtml”)”.
29417 Framework » Web WebMenuItems can now include separators.
32486 Framework » Web The WebListbox now supports lazy loading data.
33658 Framework » Web Added a WebAudioPlayer control.
35643 Framework » Web WebMapViewer now supports StreetView.
37388 Framework » Web Contextual menus can now be added to controls in their Opening event.
38067 Framework » Web WebPopupMenus now use WebMenuItems under the hood which have a disabled property.
40939 Framework » Web WebTextArea now has a MaximumCharactersAllowed property for limiting the number of characters a user can enter.
46795 Framework » Web Web Framework now includes Bootstrap 3 controls.
49714 Framework » Web Added History API to allow saving state on the user's browser so that if the user clicks the BACK/FORWARD buttons you can figure out where they were and what was loaded.
50746 Framework » Web Added a command-line option (uploadpath) for overriding the location where upload temporary files will be created.
59837 Framework » Web Added an AllowTabOrderWrap property to WebPage which can be set to False before the page's Opening event has finished to entirely disable the built-in tab order system.
59986 Framework » Web Added Activated and Deactivated events to Session which fires when the app's tab or window is shown or hidden, depending on browser support.
59988 Framework » Web Session.UserDisconnected now fires when the web browser is closed.
60007 Framework » Web WebListbox underlying control now uses its Bootstrap 4 theme.
60067 Framework » Web WebCheckbox now has an Indeterminate property, which when set changes the appearance of the checkbox but not the Value property. When the user clicks the checkbox to make a choice, the Indeterminate property is automatically set to False.
60236 Framework » Web WebSession now has an AppearanceChanged event and an IsDarkMode boolean property which reflect the state of the end-user's system appearance settings. This functionality relies on browser support for detection.
60370 Framework » Web WebMessageDialog is now available in the Library.
60652 Framework » Web Removed WebMoviePlayer.PlaybackReadyThroughEnd event.
61043 Framework » Web WebListbox now has a Pressed event.
61202 Framework » Web WebListBox.NoRowsMessage no longer has a default value.
52330 Framework » macOS Updated HTMLViewer on macOS to use WKWebView.
54603 Framework » macOS Updated the look of Listbox headers to match macOS behavior.
22796 IDE » Layout Editor The basic button control in the Library now has the same name and default caption across all platforms.
51404 IDE » Layout Editor All controls now use the same base Bootstrap theme.
61004 IDE » Layout Editor New TextAreas added to the layout now defaults to Characters for the UnicodeMode property.
56394 IDE » Navigator Added a new “Import” entry for the Module contextual menu, so it can import several Classes, Modules, Interfaces… at once.
60715 IDE » Scripting Build Target architectures can now be set in and IDE script using the PropertyValue method. the property names are: "App.MacArchitecture", "App.WindowsArchitecture" and "App.LinuxArchitecture". The values may be set to "x32", "x64", "ARM32" or "ARM64" depending on the specified target. If the target does not support the new value, the value is not changed.
43531 IDE » Style Editor WebStyles can now accept any CSS value.
42922 IDE » Xojo Cloud Xojo Cloud apps now each have their own domains.
60718 Miscellaneous Modernized Spotlight importer on macOS for Xojo project files.
59076 Plugin SDK Added additional Plugins SDK function to Add/Remove event handlers and a function to determine if an event is being handled, see PluginMain.cpp in the Plugins SDK for more details.
60509 Reporting Now it is possible to print Reports to PDFDocument instances.
59361 XojoScript Updated XojoScript to support API 2.0 feature set.

Docs and Examples (71 cases)

Case Area Description
58769 Documentation Cleaned up various doc pages regarding usage of Application.Copyright, Application.Description and Application.Version.
58804 Documentation Added missing tables to HiDPI doc page ( to indicate which properties are valid for the various picture types.
60513 Documentation UserGuide:Deploy Web App to Linux topic updated with link to Load Balancing XDC video.
59603 Documentation » Miscellaneous Updated Serial Device Tutorial so that proper control name (DeviceListUpdater) is used in code.
61153 Documentation » Quick Start Guide Added new Web Tutorial and Quickstart PDFs to the documentation folder.
58941 Documentation » User's Guide General Control Set page ( in docs now has links to both desktop and web control set doc pages.
60031 Examples Removed unused variables/code in GradientExample project.
60164 Examples WordCounterGUI example now uses Shell.Completed event instead of ResultsReturned event.
36500 Language Reference » Documentation Added some clarifications to array section of Var doc page.
55499 Language Reference » Documentation Graphics.FontUnit and TextUnit pages now note that this is only available for Desktop projects.
57159 Language Reference » Documentation Cleaned up sample code on Double.ToText and Single.ToText pages.
57160 Language Reference » Documentation Cleaned up formatting problem in sample code for Xojo.Core.Date.ToText.
57554 Language Reference » Documentation Correct code error in sample code on Date.TotalSeconds page.
57826 Language Reference » Documentation ListBox.ColumnAlignmentAt page now indicates that this method uses the ListBox.Alignments enumeration.
57835 Language Reference » Documentation Added clarification about exceptions to SQLiteDatabase and DatabaseException pages.
57924 Language Reference » Documentation Added missing page for PopupMenu.RowTagAt.
58180 Language Reference » Documentation URLConnection.ResponseHeaders page now correctly shows iterator is a Pair.
58513 Language Reference » Documentation Fixed typo in RowSet.EditRow description.
58543 Language Reference » Documentation Fixed error in sample code on ListBoxRow.Columns page.
58588 Language Reference » Documentation Fixed type in syntax area of ColorGroup.AddColorPair page.
58606 Language Reference » Documentation Fixed sample code errors on RowSet page.
58637 Language Reference » Documentation Fixed a typo in sample code on String.ChrByte page.
58638 Language Reference » Documentation Fixed typo in sample code on SQLiteDatabase page.
58706 Language Reference » Documentation Fixed two bugs in example code for SQLite on the Database.Connect page.
58729 Language Reference » Documentation Updated docs to indicate that Picture.ImageAt is the replacement for Picture.IndexedImage.
58803 Language Reference » Documentation Doc pages for ContainerControl.EmbedWithin/EmbedWithinPanel indicate that the Top value of the ContainerControl is added to what is specified in the method call.
58895 Language Reference » Documentation Updated ColorGroup doc page to note Operator_Convert and Operator_Compare abilities.
58958 Language Reference » Documentation Rect.Contains page now also lists the declaration for Rect.Contains(X As Double, Y As Double) As Boolean.
58995 Language Reference » Documentation TextEdit.InsertionPoint page has been updated to be InsertionPosition as that is the actual method name added in API 2.0.
59130 Language Reference » Documentation Fixed sample code on MoviePlayer.OpenURL page.
59208 Language Reference » Documentation Fixed code example that adds a menu to the BevelButton.
59216 Language Reference » Documentation Fixed a few bugs in the code examples at the bottom of Single.ToText and Double.ToText pages.
59238 Language Reference » Documentation Removed ListBox.ColumnFromPoint and RowFromPoint pages from docs since those methods do not exist in the framework.
59293 Language Reference » Documentation Removed unnecessary While loop in SQLiteDatabase page sample code.
59318 Language Reference » Documentation FigureShape methods Add, AddAt, RemoveValue and RemoveAt have been updated to their actual names: AddCurve, AddCurveAt, RemoveCurve and RemoveCurveAt respectively.
59333 Language Reference » Documentation Graphics.AntiAliasMode page now properly shows the type as Graphics.AntiAliasModes enum.
59345 Language Reference » Documentation Window.Bounds sample code now uses Rect rather than Realbasic.Rect.
59355 Language Reference » Documentation Updated sample code on RectShape page to use BorderOpacity.
59363 Language Reference » Documentation GraphicsPath page now shows the correct CurrentPoint property.
59368 Language Reference » Documentation On RegEx page, updated notes to clarify that \b matches a word boundary and [\b] matches a backspace.
59399 Language Reference » Documentation Corrected sample code on NthField page.
59406 Language Reference » Documentation Added “Is” to Operator Precedence table.
59455 Language Reference » Documentation Updated link to official SQLite encryption docs.
59456 Language Reference » Documentation Updated Timer.CallLater doc page to make it clearer that the delegate for passing a parameter must use a parameter of type Variant.
59477 Language Reference » Documentation Now using correct enum in sample code on ListBox.Sort page.
59536 Language Reference » Documentation The IDE Scripting Project Commands page ( now shows that “Application Identifier” can be used with the PropertyValue method.
59574 Language Reference » Documentation The Boolean.ToString and FromString methods are now documented.
59577 Language Reference » Documentation Color.RGBA has been marked as deprecated. Color.RGB is the replacement function.
59583 Language Reference » Documentation TabPanel page now properly shows that the AddTab method is used to add tabs.
59600 Language Reference » Documentation Picture.IndexedImage sample code updated to use AddRow method for array.
59620 Language Reference » Documentation GraphicsPath.AddCurveToPoint no longer displays an incorrect restricted platform message.
59658 Language Reference » Documentation The missing closing parenthesis in the example code on the Array.Count page has been added.
59687 Language Reference » Documentation Updated XMLNode.XQL page with correct link to W3Schools Xpath Tutorial URL.
59688 Language Reference » Documentation Fixed typo on String.IndexOfBytes page.
59690 Language Reference » Documentation The last parameter of both Color.SelectedFromDialog as well as the second FolderItem constructor are now indicated as being optional.
59721 Language Reference » Documentation Added explanation the notes for RectControl.ContextualMenuAction about when to return true or false.
59741 Language Reference » Documentation Fixed a typo in the SSLSocket example code.
59752 Language Reference » Documentation Updated sample code for FolderItem.Exists.
59791 Language Reference » Documentation Replaced sourceString with stringVariable for arguments for String.Middle, String.Left, String.Replace and String.ReplaceLineEndings.
60019 Language Reference » Documentation Updated sample code on Pop page to use FolderItem iterator.
60143 Language Reference » Documentation Searching for “darkmode” in the Docs Wiki now redirects to the UserGuide:Dark Mode topic.
60354 Language Reference » Documentation WebFileUploader.UploadError now has more information in the Notes describing what could cause it and what the values can contain.
60454 Language Reference » Documentation Added Encoding property to list of properties on TextOutputStream page.
60486 Language Reference » Documentation Fixed a small error in the sample code on the Sound page.
60569 Language Reference » Documentation Added additional sample code to EmailAttachment page to demonstrate MIMEType usage.
60728 Language Reference » Documentation The SQLiteDatabase.AddDatabase password parameter is no longer documented as optional.
60822 Language Reference » Documentation The second example has been updated to use TextShape rather than StringShape.
60836 Language Reference » Documentation The example code for URLConnection.ResponseHeaders has been modified to reflect that the headers are pairs.
60864 Language Reference » Documentation Shell.Result is now listed as read-only.
60981 Language Reference » Documentation The Postgres.Connect page no longer incorrectly indicates that it returns a boolean.
61375 Language Reference » Documentation The formatting issues with the TextArea.SelectionAlignment entry in the Language Reference have been resolved.