2020r1 Release Notes

From Xojo Documentation

Revision as of 13:34, 26 August 2020 by PLefebvre (talk | contribs)

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

Major changes include:

Release Notes

Bug Fixes

48102CompilerIncorrect expressions in For Each statements now raise a compile error instead of a failed assertion.
58137CompilerBuilding 64-bit Windows apps in the Linux IDE no longer raises an assertion, but should now work.
59155CompilerFixed a compile error that could occur when adding a SerialConnection to a window and implementing the LineStateChanged event.
59266CompilerAnalyzing a project no longer slows down subsequent debug runs or builds.
59371CompilerVar can now be used in XojoScript class definitions when defining properties.
59598CompilerCasting Nil to an Object no longer crashes.
59381Crashes & Assertions » CrashIncorrect expressions used in For Each statements now raise an error instead of crashing for iOS builds.
58894Crashes & Assertions » Failed AssertionWindows: Placard/UpDownArrows controls no longer raises a failed assertion if its width/height are 0 (or negative).
59307Crashes & Assertions » Failed AssertionPassing 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.
58696Crashes & Assertions » IDE Unhandled ExceptionIDE no longer crashes if controls are sized too small or too large in the layout editor.
58699Crashes & Assertions » IDE Unhandled ExceptionBuildDateTime now uses the same Timezone at Buildtime and Runtime.
58784Crashes & Assertions » IDE Unhandled ExceptionWindows: 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.
59449Crashes & Assertions » IDE Unhandled ExceptionThe IDE no longer crashes when dragging Library items to the debugger's Navigator.
11597Database PluginsPostgreSQLDatabase: now correctly takes the database schema into account when updating records from a RowSet.
41633Database PluginsPostgreSQLDatabase no longer leaves orphaned prepared statements on the server.
59390Database Plugins » MySQLChecking DatabaseColumn.Value for Nil now works correctly when these originate from DatabaseRow.
58567Database Plugins » PostgreSQLError messages when failing to connect are now correctly encoded as UTF8 strings.
58909Database Plugins » PostgreSQLAny errors that occurred before performing SelectSQL or ExecuteSQL calls are now cleared properly.
59604Database Plugins » SQLiteSQLitePreparedStatement.ExecuteSQL now properly raises an exception on error.
59659DebuggerCGFloat values now show up in the debugger.
26147Framework » AllGraphics.FontUnit now works for Console/Web apps.
38272Framework » AllConsole Graphics: Fixed incorrect StringWidth and StringHeight calculations.
43527Framework » AllConsole graphics: calling DrawText right after DrawPicture no longer incorrectly aliases the text.
58604Framework » AllAdded IteratorException that is raised when an error or a change occurs in the data being iterated over.
58845Framework » AllGlobal Val is no longer shown as deprecated in docs. Global Titlecase is now shown as deprecated when you Analyze Project.
58934Framework » AllDatabaseColumn.Value now returns a Variant of the correct type instead of always returning a String, unless of course the value is actually String.
58940Framework » AllGenerateJSON on a Variant Array no longer only creates a JSON array of string values, unless of course the Variant Array only contains strings.
58956Framework » AllWhen DateTime.FromString is passed an empty Date string it now raises an InvalidArgumentException instead of crashing (on Windows).
59041Framework » AllFixed some incorrect Window.Types enum values, i.e. Window.Types.Floating should be 3 instead of 1.
59068Framework » AllAdded AddAllRows function that takes a ParamArray for PopupMenu/ComboBox.
59092Framework » AllIsNumeric is now compatible with incoming Text values.
59100Framework » AllTrying to change the Modification/Creation DateTime of a FolderItem when that FolderItem is busy/open now properly throws an IOException.
59105Framework » AllString.ToDouble now takes into account the current localization when parsing the string.
59114Framework » AllCreating a new DateTime from a DateTime returned by DatabaseColumn.DateTimeValue no longer throws a NilObjectException.
59125Framework » AllSerialConnection.Connect now raises an IOException on error. If a Device is not assigned when connecting the error code returned is SerialDeviceNotAssigned.
59163Framework » AllUpdated RGBSurface.Transform page to have correct parameter types.
59174Framework » AllSetting the HorizontalScrollPosition of a TextField no longer causes a StackOverflowException.
59185Framework » AllAssigning a Picture to a DatabaseRecord.PictureColumn or DatabaseField.PictureValue no longer crashes.
59232Framework » AllAssigning a Picture to DatabaseField.PictureValue no longer crashes.
59284Framework » AllClosing 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.
59467Framework » AllAdded Crypto.HashAlgorithms.SHA1 enum value (was incorrectly named Crypto.HashAlgorithms.SHA before).
59523Framework » AllPoint doc page updated to remove mention of operators.
59589Framework » AllPrinterSetup.Landscape property should not be deprecated and IsLandscape property should not have been available (and is now marked as deprecated).
59595Framework » AllAdded missing TabPanel.AddPanelAt and RemovePanelAt methods, deprecated Insert and Remove. Overloaded AddPanel for compatibility.
59605Framework » AllFolderItem.IsFolder no longer raises an IOException if the folder doesn't exist, it'll return False instead.
59650Framework » AllColor.CMY now matches output of deprecated CMY when an alpha is specified.
59653Framework » AllAdded POP3SecureSocket.RemoveMessageAt() to replace DeleteMessage(). Deprecated incorrectly added RequestMessageAt().
59753Framework » AllRectControl.RefreshRect() is deprecated with a Refresh() overload as its replacement.
59764Framework » AllRemoved a few extraneous properties on TextField/TextArea that were not intended to be usable (i.e. IsBold, IsItalic, etc.)
59781Framework » AllFolderItem: getting/setting the CreationDate/CreationDateTime and ModificationDate/ModificationDateTime now correctly offsets any daylight savings time.
59815Framework » AllXojoScript: Mid String extension function no longer acts like MidB, but now correctly parses unicode points.
59881Framework » AllBevelButton, ImageWell, Placard, and PopupArrow’s MouseUp coordinates now correctly report negative values.
60056Framework » AllNo longer crashes when assigning a Nil WString to a String.
60063Framework » AllRemoved Timer.Tolerance property as it was not documented and did not do anything.
60202Framework » AllAnalyze project can now report that StrComp is deprecated with a replacement of String.Compare.
60237Framework » AllCleaned up POP3SecureSocket events by removing unused ServerReplied, LoginSucceeded, RollbackSucceeded.
60288Framework » AllAdded SpecialFolder.Caches property.
60323Framework » AllUpdated StyledText:

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

AddStyleRunAt(index as Integer, run as StyleRun)
60358Framework » AllMenuItem: LastRowIndex is now a Property instead of a Method.
60527Framework » AllWhen iterating through a RowSet using For Each Loop, we now reset the RowSet to the beginning before iterating.
60767Framework » AllPtr to String conversion no longer truncates the Ptr to a 32-bit value for 64-bit builds.
60271Framework » DesktopWindow.Types.Sheet enum value has been corrected.
60304Framework » DesktopHTMLViewer.NewWindow event now expects an HTMLViewer as return value instead of just a plain Object.
55508Framework » LinuxMouseDrag events now fire correctly when using a touchscreen.
57685Framework » LinuxSetting the BinaryStream.BytePosition now flushes the buffer. This fixes an occasional file I/O misread on certain platforms.
58254Framework » LinuxChanging the Label TextColor no longer leaks memory.
58917Framework » LinuxA raised RuntimeException no longer causes a segmentation fault on Raspberry Pi (mainly an issue on Jessie & Stretch).
59346Framework » LinuxLinux IDE: now uses the preferred control heights (of the OS/theme) when new controls are added to the layout editor.
59385Framework » LinuxUpdating the font properties on a Control (like FontSize on a Label) no longer leaks memory.
60293Framework » Linux64-bit and ARM Linux apps now correctly display their app icons in the desktop task/launch bar instead of being blank/generic looking.
16273Framework » WebWeb controls are now consistently disabled when the Enabled property is False.
17345Framework » WebEnabling and disabling web controls no longer displays them inconsistently.
21791Framework » WebModal WebDialogs no longer allow users to interact with controls in the background.
28438Framework » WebModal WebDialogs no longer allow users to interact with controls in the background.
34177Framework » WebWeb Controls are now responsible for disabling themselves at runtime so they'll always have a consistent appearance.
34372Framework » WebDisabling a WebContainer now correctly disables all contained controls.
35159Framework » WebControls on containers that are disabled in the IDE are now correctly disabled when the container is first displayed in the browser.
42152Framework » WebWebDialogs no longer become translucent at odd times.
49635Framework » WebWeb tooltips (helptags) can now be set in code.
51140Framework » WebTooltips which contain quotes now render correctly when set at runtime.
54064Framework » WebWebButton now can now be triggered with the spacebar when it has focus.
54115Framework » WebWebFileUploader 2.0 now works with iOS devices.
58058Framework » WebLocalized 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.
58537Framework » WebWebFileUploader's Add button is now disabled when an upload is in progress.
59914Framework » WebExceptions in WebUploadedFile.Save are no longer intercepted so they can be handled by user code.
20796Framework » WindowsFolderItem.ModifcationDate/CreationDate now correctly offset the daylight savings time.
34561Framework » WindowsSetting 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.
50476Framework » WindowsSystem.MouseX/Y now reports the virtualized X, Y coordinates which matches macOS behavior when dealing with multiple monitors of different DPI scale factors.
54398Framework » WindowsWe 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).
58605Framework » WindowsDrawing an alpha Picture on to itself now works instead of raising a failed assertion.
58611Framework » WindowsWhen there's not enough memory to create a Picture we now raise an OutOfMemoryException instead of crashing.
58674Framework » WindowsClosing the window with an active editable cell on a Listbox no longer crashes.
58683Framework » WindowsMenuItem.Popup now accounts for multiple monitors with multiple DPI scale factors when popping up the menu.
58697Framework » WindowsURLConnection/Xojo.Net.HTTPSocket response header value is no longer incorrectly truncated if there exists a colon in the value itself.
58819Framework » WindowsBinaryStream.Read no longer crashes when reading > 3GB of data for 64-bit Windows builds.
58949Framework » WindowsNative HTMLViewer no longer hangs the app in an infinite exception loop if the window doesn't have a menubar.
59270Framework » WindowsIf 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).
59732Framework » WindowsInvalidating other controls in a Paint related event no longer prevents the other controls from invalidating/painting.
59750Framework » WindowsWhen 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.
60487Framework » WindowsDebugger 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.
60780Framework » WindowsHierarchical 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.
58924Framework » iOS » MobileiOSCustomTableCell controls now responds correctly to dark mode changes.
59113Framework » iOS » MobileiOSTextField default text color is black again on iOS versions lower than 13.
59542Framework » iOS » MobileFixed 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.
60853Framework » iOS » MobileSetting iOSSegmentedControl.Value (within range) after removing/adding segments no longer raises an OutOfBoundsException.
31888Framework » macOSTooltips on controls embedded in a parent container and added within a TabPanel or PagePanel now shows correctly when switching between tabs/pages.
36919Framework » macOSListbox: Header height now dynamically adjusts to fit various font sizes. This was already the case on Windows/Linux.
52659Framework » macOSSerialDevice.WithName now returns a proper device that SerialConnection can connect to.
54439Framework » macOSFolderItem: optimized child by index APIs to match performance before the switch to using the newer NSURL APIs.
58903Framework » macOSMac IDE: Loading internal plugins from a unicode path now works again.
59275Framework » macOSFolderItem memory is now cleaned up immediately after FolderItem.Parent or FolderItem.Name is called instead of being released after the main loop iteration runs.
59334Framework » macOSGraphicsPath drawing no longer incorrectly offset on HiDPI Retina displays.
59660Framework » macOSGetting the FolderItem.ModificationDate (or ModificationDateTime) now immediately releases memory instead of waiting on the next event loop to do so.
60575Framework » macOSDrawInto no longer crashes when drawing to a clipped Graphics.
60591Framework » macOSGraphics: setting the FontUnit to Pixels, Inches or Millimeters now works correctly when drawing text on HiDPI displays.
61025Framework » macOSOur macOS framework no longer relies on the non-public API getsectiondata.
59723IDENew project windows no longer show as all black when they first open on macOS.
58765IDE » Auto CompleteThe word Selector now autocompletes when typing it in a declare.
58993IDE » Auto CompleteAutocomplete now matches "Allow" prefix instead of "Allows".
58994IDE » Auto CompleteAdded "Is" to autocomplete prefix list.
59235IDE » Code EditorWhen 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).
59326IDE » Code EditorThe 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.
59372IDE » Code EditorThe 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.
48119IDE » DebuggerViewing Text types that contain a lot of content no longer hangs the IDE.
56047IDE » DebuggerHex viewer no longer appears blurry at HiDPI.
58665IDE » DebuggerDatabaseRow contents can now be viewed in the debugger.
59438IDE » DebuggerDebugging objects, whose classes include Hidden attributes, no longer crashes.
60057IDE » DebuggerNumeric 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.
58609IDE » FileIOImages attached to ImageSets that have to be relocated when a project opens now save the location change properly in text projects.
58999IDE » FileIOCheckbox inconsistency between the VisualState as seen in the IDE vs. Runtime is fixed.
60980IDE » FileIOIDE 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.
59666IDE » Icon EditorFixed a bug where the IDE unexpectedly stalled when dragging a PDF file on the Icon Editor on macOS.
60109IDE » Icon EditorLabels on the icon editor are now the right color on macOS light and dark mode.
58629IDE » InspectorMethod Edit Panel is now a little more intelligent about what methods are available to be overridden and the initially generated code.
59388IDE » InspectorOverriding a method in a subclass now uses the capitalization from the super's class method name.
59397IDE » InspectorNewly added Plugin controls now displays the Tooltip property in the Inspector instead of the deprecated HelpTag property.
59926IDE » InspectorTextArea: Multiline property now shows up in Inspector.
60093IDE » InspectorSegmentedButton: Tooltip and Tabstop property now appear in the Inspector.
57533IDE » Language ReferenceLinux IDE: local Language Reference links now work correctly instead of doing nothing.
58624IDE » Language ReferenceSearch 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.
53168IDE » Layout EditorWebPopupMenu now renders properly in the layout editor on HiDPI screens.
53903IDE » Layout EditorWebTextArea resizes live in the layout editor again.
57989IDE » Layout EditorLinux IDE: Window Backdrop image is now properly drawn in the Layout Editor.
60204IDE » Layout EditorAdding a Right layout constraint for iOSSegmentedControl no longer hangs the IDE.
58566IDE » MiscellaneousMac and iOS projects containing an invalid plist file will now show a warning in the Resolve Issues dialog when the project is first opened.
58587IDE » MiscellaneousRemoved the ability to export classes that are already external.
59055IDE » MiscellaneousAdded back the Help->QuickStart->Getting Started menu item.
60393IDE » MiscellaneousCleanup from previous debug-runs is now a little faster.
60498IDE » MiscellaneousIDE now properly cleans up any plugin related resources that may have remained in the temporary folder.
58662IDE » NavigatorWhen cancelling a Navigator Filter, always force it to refresh.
58679IDE » NavigatorA Database project item is now usable for 64-bit builds instead of throwing NilObjectExceptions when accessed.
59617IDE » NavigatorIDE no longer crashes if you try to undo the addition of a Module while the navigator has the Classes group name selected.
60452IDE » NavigatorNavigator scrolling speed has been optimized.
58564IDE » PreferencesChanged "Menu short cuts" in Preferences window to "Menu shortcuts".
58759IDE » RenderingIn event handlers, the CurrentMethodName constant no longer replaces underscores (“_”) in control names with periods (“.”).
58616IDE » UIIDE no longer shows a warning about building 32-bit apps in an iOS project on macOS 10.15+.
59272InstallerDebian installer now correctly looks for libwebkit2gtk dependencies.
59225MiscellaneousRoundRectangle: OvalWidth and OvalHeight property values are now correctly converted to their new replacement properties (i.e. CornerWidth and CornerHeight).
45450Plugin SDKLinux & macOS IDE can now load 64-bit shared library plugins that are found directly in the Plugins folder (i.e. without a packaged hierarchy).
55210Plugin SDKUpdated EyeControl makefiles to be more current and appropriate for 64-bit builds.
58512Plugin SDKREALUnregisterBackgroundTask now properly cleans up memory instead of leaking ~16 bytes worth.
161 Bug Fixes


58701Database Plugins » SQLiteUpdated SQLite plugin to 3.30.1.
59490Database Plugins » SQLiteUpdated SQLite Plugin to 3.31.1.
58925Framework » AllAdded new Crypto.HMAC function that takes Crypto.HashAlgorithms instead of the deprecated Crypto.Algorithm.
59300Framework » AllDeprecated DrawPolygon, use DrawPath instead. Deprecated FillPolygon, use FillPath instead.
59984Framework » AllHTMLViewer: changed our injected sendtoxojo Javascript function to sendToXojo to match Javascript naming convention.
60594Framework » AllListbox: 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.
17353Framework » WebWhen a WebToolbar is positioned at the bottom of a page, WebToolbarMenus now appear above the toolbar instead of below.
17355Framework » WebWebToolbarMenus now show a downward caret after the caption to indicate that they contain a menu.
18949Framework » WebCMD/CTRL-A now selects all rows in WebListBox.
23571Framework » WebWebMenuItem now works more like the desktop MenuItem class.
25373Framework » WebAdd LastAddedRowIndex and LastRowIndex to WebPopupMenu.
28615Framework » WebWebSegmentedControl now supports keyboard navigation.
31967Framework » WebContextual menus on web controls now appear at the cursor location.
34369Framework » WebControl enabled state is now properly retained when the parent control's enabled state is changed.
46413Framework » WebRadio Buttons can now be added to a WebRadioGroup at runtime.
50961Framework » WebAdded WebStorage API for local storage.
55191Framework » WebApplication.HandleURL now has a second object specifically for Response information.
59447Framework » WebWeb framework has been updated to support Bootstrap 4.
59560Framework » WebSession History data is now stored on the server to allow data larger than 2048 bytes.
59686Framework » WebAdded WebListbox cell types.
59771Framework » WebWebApplication now has a Sessions iterator.
59864Framework » WebModernizr library no longer reorders the body and head tags.
59993Framework » WebWebUIControl Shown and Hidden events will now fire every time a visual control is shown or hidden.
60144Framework » WebApp.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.
60195Framework » WebThe WebTextField.Value property can now be set.
60197Framework » WebSession.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).
60333Framework » WebAdded WebSession.Pages iterator.
60334Framework » WebAdded Controls iterator to WebContainer, WebDialog and WebPage.
60342Framework » WebWebRadioButton.ValueChanged event now includes the selected button.
60432Framework » WebWebContainerControl has been renamed back to WebContainer.
60496Framework » WebWebFileUploader will now return a 400 BAD REQUEST response to the browser if the uploaded data is corrupt in some way.
61052Framework » WebWebToolbarItem now has a Badge property.
61059Framework » WebBootstrap 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:

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

- Added XojoScript.Compile(optimizationLevel As OptimizationLevels) As MemoryBlock

- Overloaded XojoScript.Run(cachedObject As MemoryBlock = Nil)
43 Changes

New Items

52546CompilerRemoved 32-bit macOS parts from the framework. Only 64-bit macOS apps can be built.
58654CompilerMachO executables are now padded with an additional 2048 bytes of header space for 3rd party apps to poke into.
10701Framework » AllSupport for creating PDF documents on macOS, Windows, Linux ( Desktop), Web and Console.
11467Framework » AllUpdated 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.
11665Framework » AllListbox: 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.

48140Framework » AllHTMLViewer 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.
58548Framework » AllSerialConnection: Added new Parities enumeration values Space and Mark.
58902Framework » AllWindows/Linux: Updated frameworks to use latest version of ICU 65.1, this mainly affects DateTime, TimeZone and Locale.
58933Framework » AllAdded String.Characters iterator. Just like Text.Characters this iterator will iterate through all the Characters (including grapheme clusters) and not individual codepoints.
59339Framework » AllWidened Web EmailAddressField.
59344Framework » AllExtended 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).
59486Framework » AllAdded the following convenience methods to PopupMenu:

— SelectRowWithValue(targetValue As String)

— SelectRowWithTag(targetValue As Variant)
59550Framework » AllAdded Color.ToString and FromString methods to match equivalent API 2.0 methods on other datatypes.
59680Framework » AllThe 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.
59936Framework » AllUpdated 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

60212Framework » AllAdded 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

61021Framework » AllFixed text size and truncation when printing reports on PDF Document.
54117Framework » LinuxAdded 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.
12822Framework » WebWebListbox now supports Single, Multiple and No Selection.
13417Framework » WebAdded WebComboBox control.
13809Framework » WebXojoWebButton now has Cancel and Default properties just like it does on the desktop.
14542Framework » WebThere 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.
15365Framework » WebWebListbox columns are now sortable.
15601Framework » WebWebButtons now have a Cancel option which causes the button to fire when the ESC key is pressed.
15639Framework » WebWebFileUploader 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.
16038Framework » WebWebLinks can now have the appearance of a button.
16749Framework » WebPressing Return or ESC on a page or dialog which contains a Default or Cancel button will now automatically fire their Pressed events respectively.
17424Framework » WebWebMapViewer now has support for Directions.
17460Framework » WebWebButton now has a Press method which directly fires the Pressed event.
18047Framework » WebWebMoviePlayer playback position can now be set precisely by specifying the position in fractions of a second.
18048Framework » WebAdded Read-Only Duration property to WebMoviePlayer.
18068Framework » WebWebFileUploader 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.
18181Framework » WebAdded a DatePicker control to the web framework.
18991Framework » WebAdded UpdateBrowser method which pushes the current state of the control to the browser even if in the middle of a long running process.
19812Framework » WebWebListbox now supports the selection type of "None".
19813Framework » WebAdded WebListBox.SelectedRowColor for setting the selection color.
23041Framework » WebWeb projects now have PagePanel and TabPanel controls.
23071Framework » WebThe browser contextual menu is now shown if you don't assign your own page level contextual menu.
26822Framework » WebHTMLViewer source can now be retrieved using "var code as String = EvaluateJavascript("document.html.outerhtml”)”.
29417Framework » WebWebMenuItems can now include separators.
32486Framework » WebThe WebListbox now supports lazy loading data.
33658Framework » WebAdded a WebAudioPlayer control.
35643Framework » WebWebMapViewer now supports StreetView.
37388Framework » WebContextual menus can now be added to controls in their Opening event.
38067Framework » WebWebPopupMenus now use WebMenuItems under the hood which have a disabled property.
40939Framework » WebWebTextArea now has a MaximumCharactersAllowed property for limiting the number of characters a user can enter.
46795Framework » WebWeb Framework now includes Bootstrap 3 controls.
49714Framework » WebAdded 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.
50746Framework » WebAdded a command-line option (uploadpath) for overriding the location where upload temporary files will be created.
59837Framework » WebAdded 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.
59986Framework » WebAdded Activated and Deactivated events to Session which fires when the app's tab or window is shown or hidden, depending on browser support.
59988Framework » WebSession.UserDisconnected now fires when the web browser is closed.
60007Framework » WebWebListbox underlying control now uses its Bootstrap 4 theme.
60067Framework » WebWebCheckbox 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.
60236Framework » WebWebSession 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.
60370Framework » WebWebMessageDialog is now available in the Library.
60652Framework » WebRemoved WebMoviePlayer.PlaybackReadyThroughEnd event.
61043Framework » WebWebListbox now has a Pressed event.
61202Framework » WebWebListBox.NoRowsMessage no longer has a default value.
52330Framework » macOSUpdated HTMLViewer on macOS to use WKWebView.
54603Framework » macOSUpdated the look of Listbox headers to match macOS behavior.
22796IDE » Layout EditorThe basic button control in the Library now has the same name and default caption across all platforms.
51404IDE » Layout EditorAll controls now use the same base Bootstrap theme.
61004IDE » Layout EditorNew TextAreas added to the layout now defaults to Characters for the UnicodeMode property.
56394IDE » NavigatorAdded a new “Import” entry for the Module contextual menu, so it can import several Classes, Modules, Interfaces… at once.
60715IDE » ScriptingBuild 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.
43531IDE » Style EditorWebStyles can now accept any CSS value.
42922IDE » Xojo CloudXojo Cloud apps now each have their own domains.
60718MiscellaneousModernized Spotlight importer on macOS for Xojo project files.
59076Plugin SDKAdded 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.
60509ReportingNow it is possible to print Reports to PDFDocument instances.
59361XojoScriptUpdated XojoScript to support API 2.0 feature set.
72 New Items

Docs and Examples

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