Xojo 2024r4 Release Notes
Release Date: 2024-12-10
Highlights
XojoScript now works on Windows ARM64.
Integrated Mac app sandboxing, hardening and notarization.
Improved performance, especially with preemptive threads, due to a new internal object/string locking mechanism.
DesktopWindow.ShowPopover positioning.
Code Editor selection matching.
URLConnection.FollowRedirects settable property.
Explicit TLS v1.3 support for SSLSocket.
Android support for ByRef, Operator_Convert, Operator_Lookup, Structure, and Localized Strings
Important
32-bit builds for Linux and Windows are deprecated. Building for Windows 8.1 is also deprecated. These items have not yet been removed, but we do intend to remove them in a future release.
Statistics
Bugs fixed: 182
Features added: 33
IDE
New Features
Now the Notarization Setup Dialog remember it's settings. (77849)
Added Sandboxing, Hardened Runtime and Notarization options to the Signing step of macOS apps in the IDE (macOS and Windows). (20395)
Added code editor selection matching. When enabled in settings, selected text will highlight matched tokens in the code editor (the color can be changed in the Coding settings). A common use case is to select a variable name to quickly see all the places it is used in the method. (74741)
Fatal exceptions, like memory access violations, now break into the debugger instead of silently ending the debug session. (77515)
Fixed the background color on Windows for the Download Examples button in the Choose Project window. (77407)
Place a new Copy Files build step above the Sign step by default, if a Sign step is present. (77392)
Compile errors in the ReformatCode script are reported to the system log. (51276)
Resolved Issues
Having multiple open, but unsaved, projects no longer causes strange errors when running one after making changes to another ones. (69357)
Fixed an issue where a macOS or Windows lite license would not allow building a Linux desktop app at the same time as other platforms. (77736)
When saving text projects, EndOfLine characters are replaced with spaces when saving these manifest properties: Shared Version, Copyright, Description and Windows CompanyName, InternalName, FileDescription. (77744)
Enhanced the visibility of the search method icon, particularly in dark mode, where it tended to blend into the selection color. (77730)
Fixed a TimeOut that was crashing the IDE when there is some kind of connection issue while adding a license to the IDE. (77709)
Bookmarks and breakpoints are retained when doing Standardize Format on more than one line of code. (77718)
The Code Editor Code Assistant for Insert #Pragma Unused for All Parameters no longer wraps the pragmas in a target constant block. The inserted pragmas now match casing according to code editor settings. The cursor, along with any selection, is restored to its original position in the code editor after the pragmas are added. (76929)
On macOS, darken the selection highlight color if it looks like it will be too light to see clearly when the row highlight is enabled. (77619)
Fixed importing multiple resolution images in the IDE whose file names have a dot. (77574)
Fixed a NilObjectException that would occur when closing the project window while debugging a project with the string detail viewer shown in the debugger. (77605)
Fixed an IDE crash that happened when dropping a parent folder into any of its child folders. (61816)
Event definitions are now processed by autocomplete. (77328)
Using Undo to remove a recently added control when the Inspector is shown no longer leaves the Inspector open with the properties for the now-deleted control (which would often cause an exception if you tried to change any of those disassociated properties). (65419)
Fixed an exception that could occur when Undoing the assignment of an interface to a DesktopToolbar. (64827)
Fixed a crash when saving a web project with a WebPage that had a class with attributes added to it, such as when adding TableConnection from DBKit onto a WebPage. (76893)
Fixed a bug where a WebPage with an instance based on a WebControl class having Attributes set to it would lead to an IDE crash when the project was saved. (77377)
Resizing mobile containers while the layout is set to landscape now has correct live resizing. (77421)
When used in a ReformatCode script, the DebugLog() method now outputs to the IDE Message Panel. (77215)
Project Item members with multiline descriptions are now displayed in the Code Editor Syntax Help area. (77183)
Desktop projects now keep the Developer ID value when they are saved as XML. (77298)
Android: Controls that have been locked with the lock icon on the layout editor can no longer be resized. (77152)
Android: Accessing the Size method on MobileScreen no longer can sometimes cause a compile error. (76604)
Every OS: The deprecated Ubound method no longer autocompletes. Also updated autocomplete for the Array methods Count, IndexOf, and LastIndex to include an optional dimension As Integer parameter. (77005)
iOS: Adjust the toolbar buttons when the iOS layout changes size. Previously they would often appear outside the layout when the size went from small to large, or portrait to landscape. (77589)
iOS: Now a MobileLabel added to the LaunchScreen on iOS projects honors the alignment and color properties values. (69470)
Web: Fixed an IDE issue where WebCheckbox and WebRectangle were showing Width and Height properties above Left and Top, in the IDE inspector. (60233)
Web: Default and Cancel WebButton can have a different Indicator now, other than Default. (66331)
Web: Fixed a WebRadioGroup issue that was causing the SelectedIndex value to not be applied from the IDE Inspector or the Opening event. (77755)
Web: Fixed some WebImageViewer IDE preview issues when using the URL property. It wasn't previewing the image on load, or it wasn't removing the image when clearing the URL field. (73450)
Web: Fixed a WebTextField preview issue when rendering the control with a long text inside, when used the Right alignment option. (69137)
Web: Fixed a WebRadioGroup IDE preview issue with buttons containing commas. (77506)
Web: Fixed a WebSession issue causing InterruptionMessage and DisconnectMessage to be empty, until opening the Session item in the inspector. (77470)
Web: WebChartCircularDataset, WebChartDataset, WebChartLinearDataset, WebChartScatterDataset and WebChartScatterDatapoint will show their specific replacement now when inspecting the project. (77444)
Windows: Updated Universal C Runtime redistributables to latest version. (77882)
Windows: Windows IDE: when opening the Documentation from the IDE without an internet connection, a dialog appears which is no longer obscured by the documentation window. (72598)
Windows: Windows/Linux IDE: code editor and hint areas are now correctly updated when switching from dark to light mode and vice versa. (75781)
Windows: Windows/Linux IDE: increased the contrast of the deselected navigator selection bar so it's easier to see in dark mode. (70970)
Windows: On Windows/Linux, closing the last project window no longer also closes open IDE Script windows. This fixes several exception that could occur if an IDE Script window had unsaved changes. (62856)
Windows: Fixed a NilObjectException that would occur when tabbing through the method Inspector when the code editor is no longer visible. (72788)
Windows: Fixed a crash in the Report layout editor when dragging a control while holding down the Control key on Windows/Linux. To duplicate a control, hold down Alt while dragging. (71902)
Windows: Fixed a crash that could occur when closing a project window when the autocomplete popup is displayed when more than one project is open. (67941)
Windows: Windows/Linux IDE: A build error related to a plugin now correctly triggers an error message dialog. (61849)
Framework
New Features
Added A5 page format to PDFDocument.PageSizes enumeration. Also overloaded PDFGraphics.NextPage method so PDFDocument.PageSizes can be used to set the size of the new page added to the document. (77845)
Android: Added support for Operator_Convert. (77243)
Android: Added GraphicsPath.Bounds() method. (74242)
Android: Added GraphicsPath.Contains() methods. (69186)
Android: Added MobileMessageBox.Handle property. (77242)
Desktop: The DrawPointAt and DrawMouseOverPointAt events have been added to DesktopChart to allow the custom drawing of datapoints in the charts. (77359)
Every OS: SSLSocket: added TLSv13 as a new connection type, which is now the default for new SSLSocket instances created in code or through the IDE. (63719)
Every OS: Added URLConnection.FollowRedirects as Boolean property. By default, this property is set to True, meaning that HTTP requests will automatically follow redirects. Set it to False if you prefer the request not to follow redirects automatically. (55337)
iOS: The AllowInteraction, AllowPopover and IsLegendVisible properties have been added to ChartDataset class for Desktop and iOS. Also added the DrawPointAt amd DrawMouseOverPointAt events to DesktopChart and MobileCharts to allow the custom drawing of datapoints in the charts. (77439)
iOS: Now HTMLViewer trims the received URL to avoid errors due to extra leading or trailing spaces (as web browsers do). (77472)
iOS: Added MobileScreen.ScaleFactor As Double property. (68206)
Linux: Updated to ICU 73.2 (77289)
Web: The DesktopWindow.ShowPopover / DesktopContainer.ShowPopover / WebContainer.ShowPopover signature now takes two new optional arguments to provide the x and y coordinates where the popover is meant to be shown relative to the ParentControl bounds. The new signature on DesktopWindow, for example, is:DesktopWindow.ShowPopover(parentControl As DesktopUIControl, displaySide As DesktopWindow.DisplaySides = DesktopWindow.DisplaySides.Bottom, detachable As Boolean = True, animated As Boolean = True, x As Integer = -1, y As Integer = -1) (75687)
Web: Added WebTimer.CallLater, equivalent to Timer.CallLater, but that is session aware. (73044)
Web: Updated WebMapViewer library, MapLibre, from v3.2.0 to the latest version available, 4.7.1. (77514)
Web: Added WebPage.ScaleFactor As Double property. (77053)
Web: WebListBox will use unique id attributes for its rows HTML, to avoid conflicts. (77217)
Web: WebLabel will reuse the HTML element now if exists, instead of creating it again from scratch each time a render was needed. (77212)
Windows: XojoScript is now supported on Windows ARM64. (70826)
Windows: Windows builds now include updated runtime DLLs. You can also bundle these using the new vc_redist files for installers. Please refer to the Extras/Windows Runtime/Installers folder for details. (77717)
Windows: DesktopXAMLContainer: added support for the MediaElement control. (77294)
Resolved Issues
Now the changes made to PDFDocument.CurrentPage are added as new actions to PDFDocument.Template. (77909)
Now PDFGraphics.NextPage doesn't ignores the current page (that can be changed using PDFDocument.CurrentPage), so it is not always added to the end of the Document. (77866)
DesktopListBox: no longer needlessly refreshing the ListBox when adding rows that appear outside the visible area. (74655)
Thread.SleepCurrent when called on the main thread now correctly sleeps for the duration specified, even when preemptive threads are active. (77691)
The Database.Connect As Boolean method is now correctly marked as deprecated for SQLiteDatabase, MySQLCommunityServer, and ODBCDatabase. (76760)
When a Console app quits, all threads are now stopped, this mirrors the behavior of Desktop apps. (77696)
Converted to platform-specific atomic locks wherever possible to boost the performance of object and string reference counting. This is especially noticeable when using preemptive threads. (77649)
Fixed an issue involving PDFDocument.Template so it keeps the right coordinate values for DrawLine. (77663)
PostgreSQLDatabase.IsConnected no longer logs errors in PostgreSQL due to executing an invalid SQL query. (76598)
Plugins SDK: A call to REALYieldToRB that triggers subsequent REALYieldToRB calls no longer causes a crash. (71438)
The RGBSurface.Pixel value of a fully transparent pixel now correctly returns the expected alpha value of 255 instead of 0. (65900)
Shell: the Completed event is no longer triggered when the Shell is destructed or simply goes out of scope. Now, we only trigger the Completed event if the operation truly completes or if the Shell is explicitly terminated by calling Close, but not when the object is merely destructed or goes out of scope. (55312)
Graphics.PenSize now correctly updates the PenHeight, and not just the PenWidth. (67770)
XmlNode.GetAttributeNode now properly returns all available attributes, no longer skipping any. (13881)
DesktopSearchField: the MouseDown, MouseDrag, and MouseUp events have been removed, as they were not meant to be exposed. (76756)
PostgreSQLDatabase: RowSet.SaveRow now correctly commits the transaction instead of needing to manually execute COMMIT. (64077)
Android: Using introspection to get the TypeInfo.BaseType.FullName for AndroidMobileTable now reports back the proper type name. (77931)
Android: Fixed a compile error when setting Graphics.LineDash to Nil. (77929)
Android: Fixed a compile error that could occur when concatenating a MemoryBlock with a String using the + operator. (77915)
Android: Using DecodeBase64 without specifying an encoding now defaults to Nil encoding as it does on other platforms. (77784)
Android: Fixed an issue where Container Opening events would not always be called on a container that was shown after being previously closed (such as when a screen was closed). (77868)
Android: Graphics.DrawPicture() was improved so that it better handles the cropping/scaling parameters. (77542)
Android: Introspection.TypeInfo.IsValueType now returns true for enumerations. (77795)
Android: MethodInfo.Invoke() now works with shared methods. (77438)
Android: Using AddHandler with a delegate no longer causes an Android compile error. (77465)
Android: The HasBackButton property is no longer design-time only. Changing it is reflected at runtime. (77382)
Android: When a DatabaseException occurs, the SQLite error code is now assigned to the ErrorNumber property. (77540)
Android: Calling MemoryBlock.StringValue with a length < 0 now raises an OutOfBoundsException to match other platforms. (77622)
Android: Declare statements that return a native Byte no longer cause a compile error. (76794)
Android: Updated parameter names on some global methods to match what other platforms use. (70404)
Android: Do not call MobileHTMLViewer.DocumentComplete event when CancelLoad() method has been previously called. The internal Android WebView continues to load the page, however. (76723)
Android: When comparing TypeInfo objects, equality should be true if they both contain the same class. (76665)
Desktop: An Application MouseCursor now correctly applies when hovering over a ListBox, including those with headers. (64113)
Desktop: DesktopListBox: when resizing columns interactively, we now correctly recalculate the widths of the other columns that are affected. (67826)
Every OS: Encodings.ISOLatinArabic.InternetName now correctly reports the standard ISO-8859-6 instead of the non-standard ISO-8859-6-I internet name. (8081)
Every OS: Returning Nil from the ServerSocket.AddSocket event no longer causes the app to hang. Instead, it correctly throws a NilObjectException that can be caught, as originally intended. (61518)
Every OS: Plugins SDK: REALYieldToRB now correctly yields time to other threads in all situations, especially if the plugin process is running on the main thread. (71344)
Every OS: Debugged app no longer memory leaks object references while debugging code that uses a Variant array. (64473)
iOS: Programmatically changing the row selection value for a table via code now raises the SelectionChanged event on iOS. (77587)
iOS: Changing the MobileSlider value via code on iOS also raises the ValueChanged event. (77592)
iOS: Fixed raising the TextChanged event when setting a new text to TextArea/TextField on iOS. Also when adding new text to TextArea on iOS. (77489)
Linux: Getting the URLConnection.ResponseHeader no longer crashes. (78011)
Linux: Printing reports on Raspberry Pi now works properly. (77757)
Linux: URLConnection.Disconnect now correctly aborts an asynchronous session, preventing crashes that could occur if App.DoEvents is called during the connection's shutdown process. (77679)
Linux: TabPanels within a transparent Container on a PagePanel now reliably respond to tab switching every time, not just the first time the TabPanel is visible. (76406)
Linux: The mouse cursor updates visually as soon as a new MouseCursor is assigned to the App. (77743)
Linux: TextArea: assigning text that contains a null character now displays the text up the null character rather than displaying nothing. (67789)
Linux: When DesktopTextArea.UnicodeMode is set to Characters, the selection start and length are now calculated correctly. (50994)
Linux: If libsoup-2.4 is unavailable when using URLConnection, we now raise a PlatformNotSupportedException instead of triggering a failed assertion. (77481)
Linux: The background color of the BevelButton now fully covers the entire button, eliminating any gaps. Additionally, appropriate styling has been added for when a BevelButton with a custom background color is hovered over or pressed. (77411)
Linux: graphics: Drawing Ovals, Rectangles, and RoundRectangle frames on Linux now aligns with the offset seen on other platforms. (48989)
Linux: Linux/Console x86_64: DateTime no longer incorrectly reports Mexico City timezone as UTC/GMT -5 instead of the correct -6, since it stopped using daylight savings time. (77299)
macOS: DesktopListBox with CheckBox column types no longer leaks memory. (77947)
macOS: Returning True from DragEnter now correctly prevents the drop from occurring and stops the DropObject event from being triggered on macOS and Linux, now matching the current Windows behavior. (77339)
macOS: MySQLCommunityServer: executing SQL from a web project no longer crashes the app. (77712)
macOS: Creating a new FolderItem from a URL path now correctly respects the followAlias parameter instead of always resolving the alias. (63416)
macOS: Fixed an issue when showing a Sheet window on macOS, a parent Window is provided as paramenter, and there is a Floating window opened. Now the Sheet window is displayed in the provided parent instead of the Floating window. (77642)
macOS: Calling Sound.Play now works even after the sound has finished playing. (52428)
macOS: DesktopScrollbar: the thumb bar is now correctly updated when the PageStep changes on macOS. (67218)
Web: Added a check on the Web Framework to ensure it won't attempt to close a connection socket more than once, when handling its requests. (77888)
Web: The Web framework won't create an instance of WebTooltip by default on its controls, until it's used. (77452)
Web: The Web framework won't create an instance of WebUIControl.CSSClasses anymore by default, it will be created transparently but only when being in use. (77854)
Web: Fixed an issue causing subclasses of subclassed Web controls to not fire implemented events, when adding them dynamically at runtime. (77837)
Web: Fixed a WebRadioGroup flickering issue, when updating the control programmatically. (72639)
Web: WebRadioGroup will clear its value when setting a value that is not within the bounds, to match the IDE preview and to become more predictable. (73364)
Web: WebRadioGroup will raise its SelectionChanged event now, when changing the selected index programmatically. (77759)
Web: Fixed a WebListBox issue causing column widths to not be properly updated when resizing the browser and using custom column widths with percentages. (77714)
Web: WebListBox will only change the selection, when displaying a contextual menu, if Row Selection Type is set to Single. (77732)
Web: In order to be consistent with other controls, WebDataPicker will raise the DateChanged event as soon as possible, when changing the date programatically, instead of waiting for the browser to report the change. (69717)
Web: Fixed a WebMapViewer issue causing GoToLocation to fully refresh the control. (77713)
Web: Fixed a WebMapViewer issue causing StyleURL to not be applied when used in the Opening event. (77723)
Web: Fixed a web framework issue causing some exceptions to be logged in UnhandledException with malformed requests (77440)
Web: Fixed a WebCanvas issue that was limiting the Refresh command to just once per second. (77656)
Web: Fixed a WebMapViewer issue causing the Zoom to be round when changing another property. (77556)
Web: Fixed a WebMapViewer issue causing the control to raise a JavaScript error, when trying to draw a route from the Opening event. (77557)
Web: Fixed a WebMessageDialog race condition causing a null string to appear on screen under some situations. (77404)
Web: Fixed an issue that was causing an empty request header to be included in WebRequest, containing the request line. WebRequest.Method and WebRequest.Path properties are meant to access that information instead. (77441)
Web: WebPopupMenu can be used with the keyboard now, including selecting an item or performing a search. (60409)
Web: According to the Set-Cookie specifications, Xojo Web will now explicitely send SameSite=None together with Strict, when using WebCookieManager.SameSiteStrengths.Off (69645)
Windows: Detaching a monitor with an active window no longer returns inaccurate window bounds. (77896)
Windows: DesktopMenuItem: Hiding and showing a submenu now correctly displays all the items within that submenu. (77887)
Windows: BevelButton now receives focus when clicked, provided the AllowFocus property is enabled. (77857)
Windows: Dark mode PopupMenus and ComboBoxes now adjust their size correctly when moved to a monitor with a different scale factor. (77839)
Windows: When calling Window.ShowModalWithin (or DesktopWindow.ShowModal with a parent DesktopWindow specified), the window now correctly appears on the same screen as its parent window. (77841)
Windows: A Picture created in a preemptive thread can now be accessed and drawn on a Graphics object from a different thread without triggering a failed assertion. (77761)
Windows: Fixed an issue with PDFGraphics.TextHeight on Windows when the wrap width parameter is set. (77688)
Windows: CurveShape is no longer incorrectly drawn with a lighter opacity on Windows/Linux. (61054)
Windows: Fixed DateTimePicker control displaying the Tooltip on Windows. (77695)
Windows: DesktopListBox: selecting a row and then performing a contiguous selection of rows now behaves more consistently on Windows and Linux. (62564)
Windows: Fixed DesktopSearchField FocusLost event firing twice on Windows, and also firing the KeyDown event when, in fact, the focus is lost from the instance because the user clicked on another control. (77528)
Windows: Fixed raising the ScanCancelled event on Barcode Windows / Linux when the user click the OK button in the UI. (77653)
Windows: Printing multiple copies selected in the PrinterDialog now functions correctly, instead of always printing a single copy. (62913)
Windows: DesktopListBox: Left and right arrow key presses are no longer intercepted on Windows and Linux, but are now propagated to the parent window. (62492)
Windows: DesktopListBox.CellToolTipAt continues to display the Tooltip, even after a window (which happened to be frontmost while the window containing the DesktopListBox was still being constructed) is closed. (63793)
Windows: StdIn.ReadAll now functions correctly on Windows, and binary data output through StdOut is now supported across all platforms. (54494)
Windows: Retrieving the bounds of a minimized window now provides the position and size as they were prior to minimization. (71304)
Windows: Moving or resizing a background window will no longer bring it to the foreground. (77615)
Windows: DesktopApplication.ShowTooltip now positions the tooltip correctly on a multi-monitor setup with different DPI/scaling settings. (73752)
Windows: URLConnection file download no longer raises an IOException with long file paths. (76936)
Windows: We now select a more appropriate representation for menu icons at 125% scale. (66116)
Windows: DesktopListBox/ListBox: The focus and navigation behavior now more closely aligns with native Windows and Linux behavior. For instance, the focus ring now properly disappears when the ListBox loses focus. Also, keyboard navigation now correctly resumes from the last selected row when the ListBox regains focus. (46521)
Windows: DesktopRadioGroup and DesktopCheckBox now correctly honors the Transparent property in dark mode. (76447)
Windows: DesktopWindow.ShowPopover now raises an UnsupportOperationException on Windows if the DesktopWindow.Type is a ModalDialog, MovableModal, or SheetWindow. (77103)
Windows: DesktopTabPanel: changing the display scale no longer causes a graphical glitch along the length of the tab bar. (65926)
Windows: Resolved a potential assertion failure when executing code that triggers an event in the Application's constructor. (76704)
Windows: Closing the first window containing a DesktopXAMLContainer control no longer causes rendering issues for other windows with DesktopXAMLContainers. (73677)
Windows: Now the SearchField.ToolTip value set in the Inspector Panel is properly assigned on macOS when the app is ran; instead of having to set it via code. (63642)
Compiler
New Features
Resolved Issues
When a function call is missing a single parameter, we now correctly identify and report the missing parameter, eliminating confusing error messages on incorrect parameters. (65754)
A mismatched Operator_Lookup (returning a Boolean or Color) between a class and its subclass no longer triggers a failed assertion, but now correctly raises a compilation error. (77740)
Plugins SDK: The IDE no longer breaks into the debugger when an exception occurs during REALCallFunctionWithExceptionHandler. (41058)
Android: Show a standard compilation error when there is a project item called LaunchScreen. (77918)
Android: Fixed an Android compile error that would occur when calling extension methods with a hidden attribute. (77970)
Android: Fixed an Android compile error that would occur when a Variant was used as an array index. (77886)
Android: Constant names that are reused on subclasses no longer cause an Android compile error. (77876)
Android: Added compile error to indicate that a property name cannot be the same as a constant name. (77878)
Android: Fixed an issue with using AddHandler with an event on class returned by a property on App. (77840)
Android: Fixed a compile error with an Event definition returning a Ptr. (77861)
Android: Enumerations now ignore comments that use the ' character. (77834)
Android: Fixed Android compiler errors that could occur when calling an overloaded methods that contained Variant parameters. (77842)
Android: Fixed some compile errors that would occur when using the Global keyword with classes. (77802)
Android: Overriding a method on MobileScreen no longer causes a compile error. (77573)
Android: Improved parsing of External Import Declares to avoid Android compile errors. (77229)
Android: Fixed a compile error when Ptr was used with ParamArray (77684)
Android: Extension methods on enums no longer cause an Android compile error. (77378)
Android: Select Case statements of the form Select Case True with expressions in the Case sections no longer cause an Android compile error. (77395)
Android: Class/Module members with a Hidden attribute no longer cause Android compile errors when used in code. (77674)
Android: Using AddHandler on a Screen or Container without specifying the Self prefix for the event name no longer causes a compile error. (77464)
Android: You can now directly assign a Dictionary to a JSONItem. (75292)
Android: Converting from MemoryBlock to String and String to MemoryBlock no longer causes a compile error. (70242)
Android: Mod, ^ and operators now have a higher precedence than +, -, /, *. (77612)
Android: Excluding a class from an Android project no longer causes a compile error. (77611)
Android: Calling shared methods on MobileScreens no longer hangs the app. Shared methods on MobileContainers no longer cause a compile error. (77387)
Android: Non-global extension methods are not allowed on Android and will now display a standard compile error. (77077)
Android: Added a clearer error message for when an invalid dependency is specified in Android Build settings. (76401)
Android: Fixed a compile error that could error with a subclass that has a Constructor that does not directly match the signature of a superclass Constructor. (76679)
Android: Fixed a compile error that would occur when subclassing MobileImagePicker. (76686)
Android: Fixed a compile error that could occur when an array of a superclass has a subclass added to it using the Add() method. (76715)
Android: Fixed a compile error that could occur when a project item has a property and method with the same name. (77163)
Every OS: XojoScript: added missing ToString/FromString methods for the various data types: Int8, Int16, Int32, UInteger, UInt8, UInt16, UInt32, UInt64, Double, Single. (67936)
Every OS: XojoScript: using #if .. #endif now works properly instead of causing strange compilation errors or outright crashing. (62289)