Release Notes
Xojo 2023r2 Release Notes
Release Date: 2023-08-09
Highlights
Android (Beta) - You can now build apps for Android.
DesktopXAMLContainer - Add any Windows control with the modern Windows 10/11 look and feel to your desktop app.
Web Dark Mode Support - Your web apps can now look great in dark mode!
PDFViewer control for iOS - View PDF documents directly in your iOS apps.
Stack chart type for desktop and mobile - Present stack charts in your desktop and mobile apps.
Statistics
Bugs fixed: 146
Features added: 31
Documentation changes: 2
Examples changed: 1
IDE
New Features
Now, when an image is dropped in the Navigator the IDE detects if there are other resolution files available for the same picture, so they are automatically imported too into the asset. (54343)
Added Search box for Xojo Examples in the IDE. (72388)
Added MobileTableCustomCell to the Insert menu and Insert toolbar in the IDE for iOS Projects. (44600)
Now the modal dialog displays on Windows the already in use name for Methods and Properties declared in the Inspector Panel. (71932)
Android: Added Android project type with support for Android OS apps (Beta). (11151)
iOS: The Code Signing section for a new iOS project now selects the first available Team profile by default (if any). (73067)
Web: WebApplication and WebSession will now have a default event selected on the list, Opening. (73113)
Resolved Issues
Fixed some inconsistencies in the Behavior Inspector, as for example enabling/disabling the minus button when a Group Header is selected / not selected, also bringing the additional options in the contextual menu for the aforementioned cases, and enabling again the ability to double click on a Group Header row in order to rename it. (73300)
Attempt to fix a sporadic and not reproducible exception that sometimes occurs when saving a project with external project items. (72594)
Fixed a bug when saving / opening an iOS project in XML format containing a Notification Center class. (65218)
Fixed an underlying bug in setting the Compatibility Flags when a class is created using as its Super class a data type from a different project type. (73320)
Fixed a bug when unchecking an Include In checkbox, for a class copied from a different target, resulting in an endless loop for the IDE. (73229)
Pasting text into an Inspector text field now properly commits it when you mouse click elsewhere. (73203)
Attempt to avoid an IDE hang that could occur when trying to update Code Editor code block lines in certain specific (and so far not reproducible) situations. (73184)
A class whose Super has been changed is now displayed on the Navigator when using the Filter field in the IDE. (72441)
Include In section of the IDE was setting incorrect inclusion for some project items. (73047)
Controls embedded on a PagePanel, and laid out on top of the PagePanel gadgets in the layout editor, no longer block the view of the gadgets. Particularly with more complex layouts where controls are embedded on a TabPanel that is then placed on a PagePanel on top of the gadgets. (72974)
Fixed Description dialog for Attributes panel getting a bit more longer every time it was opened. (71637)
Fixed a bug in ColorGroup Editor displaying the options in the popupmenu even when it is disabled. (63508)
Debugger: inspecting properties on a Module contained within Module(s) now works properly instead of crashing. (63867)
Fixed ColorGroup Editor changing the color set when using the Goto Location command. (72943)
Removed Metal Window enum from the DesktopWindow.Type in the inspector since this no longer exists for DesktopWindow.Types. (72563)
For consistency, DesktopHTMLViewer uses now the same rendering in the Layout Editor than Web and iOS projects. (72771)
Reduced CPU usage when code editor is not being used. (72493)
DesktopTextField is correctly displayed in the Layout Editor and at runtime under Ventura when the Password and Italic properties are both set to True. (72504)
Fixed visual glitch in the Picture Contents Viewer debugger panel on the IDE. (72648)
Breakpoints and Bookmarks are now retained when swapping lines in the Code Editor. (72264)
Debugger: Classes containing shared properties now shows up in the Global variables list under a new Classes item. (16259)
Thread.Run event handler is now added automatically when the control is dragged from the Library into a Desktop window, unifying thus how it behaves on Web and Mobile projects. (72235)
Improved offline documentation messaging. (72142)
Fixed a bug in the IDE search panel excluding some matches when Case Sensitive was selected. (72054)
Every OS: DesktopDateTimePicker is now drawn as disabled in the Layout Editor on macOS when Enabled is set to False in the Inspector Panel. (72720)
iOS: Fixed setting the color properties for iOS controls through the Inspector panel. (72885)
Linux: Linux IDE: no longer crashes at startup on certain distros of Linux, including openSUSE and some variants of CentOS. (70080)
macOS: DesktopDateTimePicker now defaults to DateOnly mode on macOS. (72718)
macOS: Preferences... menu item is named now Settings... when the IDE is ran on macOS Ventura. (72342)
Web: WebRadioGroup.SelectedIndex can now be set directly in the IDE Inspector. (66004)
Web: Fixed an issue causing WebImageViewer and WebLocation subclasses to display a generic icon in the IDE Navigator. (73243)
Web: Fixed how the IDE was drawing the preview on some field based controls, when being disabled. (73191)
Web: Fixed a Web SDK issue causing the LibraryIcon special constant to be ignored. (70763)
Web: WebListBox has an inline editor now in the IDE that can be used pressing on the edit pencil. (68946)
Web: Fixed a WebImageViewer issue not showing the preview, when loading the project. (72930)
Web: Fixed an IDE issue, it wasn't displaying the icon for bootstrap.min.css file type. (72776)
Web: Fixed an IDE bug that was overwriting the Width and Height on WebContainers, when its super was being changed. (69564)
Web: Fixed a Web SDK issue causing DrawControlInLayoutEditor to take any line starting with REM as a comment. (72004)
Windows: Windows IDE: no longer fails to compile with an error about a missing CONCRT140.DLL. This is only seen when running a pre-release build of Xojo, and when no other version of Xojo is already installed. (73118)
Windows: Windows IDE: when selecting Windows (x86_64) and This Computer as build targets, we no longer build the target twice. (69106)
Framework
New Features
Added Stacked Chart type to DesktopChart and MobileChart. (72580)
New additions/improvements to Chart control on Desktop. (72683)
Color.FromString now accepts color string values that are prefixed with &c. (71868)
iOS: Added URL field to the Inspector Panel for MobileImageViewer on iOS. (68249)
iOS: Changed MobileTextArea.AddText value parameter to Text on iOS to match Android. (73037)
iOS: Added Reduced option to MobileLocation.Accuracies enum so, when selected, the use of device battery is highly preserved reducing the frequency of location change updates. (73161)
iOS: Added AllowBackgroundUpdates property to MobileLocation on iOS. (65205)
iOS: Added PDFViewer control for iOS. (72098)
iOS: Added Format property to Desktop/MobileChart. (72738)
iOS: Added Minimum iOS Version entry in the Inspector Panel for iOS Projects. (72651)
iOS: MobilePopupMessage.Show has been overloaded on iOS so it accepts now a double as the second parameter to set the amount of seconds the message is going to be displayed. (65917)
iOS: Added Backdrop As Picture property to DesktopChart and MobileChart. (72344)
iOS: Added DrawTextBlock and TextBlockSize methods to the Graphic class on iOS. (68504)
iOS: iOSMobileTable supports now Left (Leading) iOSMobileTableRowAction. Also added BackgroundColor and Image properties to iOSMobileTableRowAction. (68283)
iOS: Added KeyDown Event Handler to MobileCanvas on iOS. Fixed Enabled property bug for MobileCanvas on iOS. (72013)
iOS: Added Press method to MobileButton on iOS. (68808)
iOS: Added KeyDown, KeyUp events to Screen and KeyDown event to TextField/TextArea on iOS. (71935)
Web: Added WebComboBox.SelectedRowValue. (73051)
Web: Added Dark Mode support for Web projects, using Bootstrap 5.3.0. (68505)
Web: Added WebListBox.LastColumnIndex property, to match DesktopListBox. (72994)
Web: WebChart's Chart.js dependency has been upgraded to v4.2.1. (72346)
Web: Added WebListBox.ColumnTagAt, for setting Variant tags on columns, like in Desktop projects. (72305)
Windows: DesktopHTMLViewer: no longer makes requests to download/update components, like Widevine, when the HTMLViewer is initialized. (73309)
Windows: DesktopXAMLContainer: Provides a way to use modern Windows 10/11 controls in Xojo via this new control. A DesktopXAMLContainer can represent a variety of different controls by clicking on its Edit button in the Layout Editor. (73119)
Resolved Issues
Fixed a bug when removing an item in ChartCircularDataset using RemoveRowAt and where there is not an associated color for that index position. (73255)
Fixed a bug for AddColor and AddColorPair on ColorGroup class, resulting in not getting the proper/assigned colors for a given Platform (that also was impacting getting the right Mode for the Color Group instance). (73050)
Fixed Desktop/MobileChart fill color transparency for the Dataset legends. (73036)
Fixed a bug in PDFGraphics where Rotate wasn't working with more than 4 significant figures to right of decimal point. (72921)
ODBCDatabase.Drivers no longer incorrectly returns the same set of information as DataSources. (72889)
RuntimeException.Stack is now correctly populated for exceptions that are thrown from a modal dialog. (71386)
Bug fixed for PDFGraphics.TextHeight with WrapWidth parameter. (72847)
PrepredSQLStatement.BindType(types() As Integer) no longer throws an exception incorrectly claiming that one less type was bound. This affected SQLiteDatabase, MSSQLServerDatabase, MySQLCommunityServer, PostgreSQLDatabase, OracleDatabase and MySQLDatabase. (72706)
Fix for VersionData when it is used on macOS with security update installed and the language of the app is set to any with non-roman character set based one (for example, Japanese). (72654)
Desktop: DesktopContainer.DrawInto now works instead of raising a compile error. (73321)
Desktop: Fixed a bug on X axis values overlapping under some circumstances when using the Scatter chart type on DesktopChart. (73150)
Desktop: DesktopMoviePlayer: renamed MovieStarted to PlaybackStarted and MovieStopped to PlaybackStopped for consistency with the MobileMoviePlayer. (69018)
Desktop: ListBox: using the Edit menu's Select All now correctly selects all the items in a multiple selection ListBox, and in particular, when only two items exist and the first is selected already. (72909)
Desktop: DesktopImageViewer defaults to proportionally scale down the image on Windows. (72891)
Desktop: Fixed Desktop/MobileChart extending the drawing of the X axis beyond the last value when the chart is set to Linear mode. (72794)
Desktop: Fixed a bug in DesktopChart where the Y lines of the grid are drawn past the last available value for the X axis, and the X axis tick lines are too long when the mode is set to Scatter/bubble. (72742)
Desktop: Fixed aligning Y labels when Desktop/MobileChart is set to Scatter / Bubble modes. (72741)
Desktop: Fixed the Title overlapping the axis values in Desktop/MobileChart when the mode is set to Radial. (72739)
Desktop: Fixed a bug in DesktopChart for displaying rotated labels when the Chart mode is set to Bar to represent ChartLinearDataset data and the labels text is wider than the available column width. (72435)
Desktop: DesktopCanvas: now raises a MouseUp event before DoublePressed is triggered. (72007)
Every OS: GenerateJSON and JSONItem.ToString now treats/validates strings with unknown encodings as UTF-8 strings, and only raises an InvalidArgumentException if the string failed UTF-8 validation. (64982)
Every OS: XojoScript: String.Contains is now accessible, instead of giving a compile error. (72993)
Every OS: SSLSocket: setting the SSLEnabled to True no longer leaks an object when disconnected. (71365)
Every OS: DesktopTextArea: setting up the StyleText attributes like TextColor, etc. now works correctly when UnicodeMode = Characters, particularly when encoutering emoji modifiers. (66842)
Every OS: Deprecated ToText methods for Integer(s), Double, Single, Currency and String. (68983)
Every OS: SQLiteDatabase: retrieving the BooleanValue of a DatabaseRow.Column now interprets the Boolean value consistently with the BooleanValue of a RowSet.Column. (68894)
Every OS: Assigning a UInt32 or Single value type to a DatabaseRow.Column now works. (72032)
iOS: Fix: iOSFont now returns the expected font even when the received name in the Constructor is one of the reserved/illegal system font names (those starting with a dot), instead of letting the underlying iOS framework use the fallback Times font. (73359)
iOS: Fixed a bug in iOSMobileTable.SelectRow when it is called from the iOSMobileTable.Opening event on iOS projects. (73280)
iOS: Calling NotificationCenter.RequestDeliveredNotifications on iOS was firing the PendingNotifications event instead of DeliveredNotifications event. (73195)
iOS: To match current versions of Xcode, default height of MobileTextField on iOS is now 34pt. The Height constraint can now also be modified, which is often necessary for accessibility and other reasons. (73148)
iOS: Now iOSMobileTable returns the expected values for Section and Row when there is no selection in the table (0,-1). (65266)
iOS: The Search field of a iOSMobileTable keeps the focus when using a Datasource and the scroll position changes. (73083)
iOS: GraphicsPath.AddArc() parameters are now consistent across all platforms. (71997)
iOS: Now Bars are drawn with some gap between them when DesktopChart is set to Line / Bar / Stacked. (72793)
iOS: Fix for VersionData when it is used on iOS with security update installed and the language of the app is set to any with non-roman character set based one (for example, Japanese). (72678)
iOS: Fixed modal screen hidding the status bar on iOS. (72442)
iOS: Fixed Picture.SystemImage working with fallback picture on iOS. (67202)
iOS: Fixed MobilePopupMessage not being displayed when called from modal MobileScreen on iOS. (64365)
iOS: Changed LaunchScreen super from deprecated iOSView to MobileScreen on iOS projects. (66190)
iOS: Now MobilePicturePicker returns the Picture with the proper orientation on iOS. (71454)
iOS: Fixed setting the TintColor on MobileSwitch. (66092)
Linux: MySQLCommunityServer no longer fails to load with a Runtime Error on startup for Linux ARM64 builds. (72549)
Linux: Setting a breakpoint in code that is never called/used no longer triggers a failed assertion. This assertion was mostly seen when debugging Linux builds, but could have appeared on macOS and Windows too. (73127)
Linux: Updating the caption of a MenuItem (especially from a separator to a regular menu caption) no longer causes the app to crash on closing the MenuItem. (73129)
Linux: PostgreSQLDatabase: updated the client libraries used for Linux 32-bit x86 builds to support the newer authentication methods. (73089)
Linux: URLConnection no longer crashes with a segmentation fault when passed an empty URL, it now raises an exception. (73072)
Linux: Linux: closing a FolderItemDialog no longer crashes on some distros of Linux, like openSUSE. (68952)
macOS: Fixed Color.FrameColor on macOS so it returns the expected color value. (69696)
macOS: Console: Graphics.Rotate now works correctly on macOS and Linux ARM64. (73328)
macOS: Fixed DesktopTextField losing the entered text when Enabled is set to False and the control instance still has the focus. (73323)
macOS: Fixed a bug in DesktopDateTimePicker on macOS when setting the Enabled property through its parent class (DesktopUIControl). (73183)
macOS: App no longer crashes when accessing the RuntimeException.Stack in certain situations, especially when sandboxed on Intel macOS Ventura. (72314)
macOS: macOS builds no longer include an invalid rpath, which some apps have flagged as being incorrect by using an additional path separator. (64896)
macOS: AppleEventDescList.ObjectSpecifierItem now returns an AppleEventObjectSpecifier instead of an AppleEventRecord (71808)
macOS: ODBCDatabase: fixed a connection issue on macOS Ventura 13.3 (72450)
macOS: Fixed DesktopProgressBar.DrawInto clipping both sides when used on macOS. (72653)
macOS: Fixed resulting drawing of DesktopImageViewer.DrawInto on macOS. (72652)
macOS: Fixed an OutOfBounds exception on TextArea control (macOS) when setting the text color for a long text containing a high number of end of lines. (72062)
macOS: Fix: GraphicsPath is not offseted when the target Graphic context is from a Printer on macOS. (60032)
macOS: Fixed a bug setting a long text to TextArea.StyledText.Text property on macOS. (71476)
macOS: Now the cursor defaults to StandardPointer when App.MouseCursor is set to Nil on macOS. (71940)
Web: WebDialog will be centered now on smaller screens. (69767)
Web: WebToolbar won't show the hamburger menu anymore, if there are no items to show inside. (71612)
Web: WebMessageDialog.CancelButton will be rendered with a background, at runtime. (72982)
Web: WebLabel won't raise the Pressed event anymore if isn't Enabled. (66933)
Web: WebFileUploader and WebCombobox will apply now the Style property to its elements. (64600)
Web: Fixed a WebButton issue causing its WebMenuItem to be smaller than needed, overflowing its contents. (64517)
Web: WebSlider.ValueChanged will also be fired now, when the value has changed by code. (62399)
Web: WebDatePicker.DateChanged event will include a selectedDate parameter now, like in Desktop projects. (73157)
Web: Fixed a WebImageViewer issue that was preventing the user to remove the image. Setting the image to Nil will work now. (73138)
Web: Fixed an issue causing large files to not be fully sent, when using WebResponse.File in HandleURL. (71350)
Web: Fixed an issue causing ImageViewer to capture pointer events, making impossible to scroll on mobile devices. (69753)
Web: WebMoviePlayer HasController, AllowAutoPlay and AllowLooping can now be updated by code. (71883)
Web: Fixed a WebToolbarItem issue causing the Badge property to not be shown without an icon. (70051)
Web: WebSearchField can be cleared programmatically now. (72099)
Web: Deprecated WebImageViewer.Picture, you should use WebImageViewer.Image instead. (72893)
Web: Fixed UnsupportedOperationException being raised when calling PDFGraphics.TextHeight(value As String, WrapWidth As Double) from a Web project. (72491)
Web: It is possible now to tab into WebBreadcrumb controls. (59947)
Web: WebPagination and WebSegmented button will be accesible now using tab key. (59949)
Web: WebChart will honor ChartLinearDataset.Fill property for bar charts. It didn't have effect in the past. (71416)
Web: Fixed a WebChart issue causing Pie or Doughnut charts to not show the value in tooltip. (71435)
Web: Fixed WebChart issues while resizing the control in the browser, when locking was enabled. (71125)
Web: Graphics: ClipToPath, DrawPath and FillPath are not currently supported on Console/Web so we now raise an UnsupportedOperationException when used in Console/Web apps. (70965)
Web: Fixed a WebListBox issue causing the header column size to not be in sync with the content, when the scroll bar was present. (70887)
Web: Fixed a WebListBox issue causing the Enabled property to not be applied. (69989)
Web: Fixed a WebListBox issue when selecting multiple rows by code, causing the selection in the backend to not be in sync with the browser. (70770)
Web: Added some missing exceptions, when the WebDataSource methods aren't returning any data. They will appear in UnhandledException events. (65202)
Web: Fixed a WebListBox issue causing its contents to be shown above other controls. (64395)
Web: Fixed an issue causing some dropdown menus to appear below WebToolbar controls. (63894)
Web: WebListBox InitialValue won't override ColumnCount property anymore, to match DesktopListBox behavior. (66576)
Web: WebSegmentedButton, or individual segments, won't trigger the Pressed event anymore when they are not enabled. (72085)
Web: Web SDK control instances used for initializing Sessions will be cleaned up, as soon as they are not needed anymore. (71080)
Web: Changing WebListBox height, or its parent height, will be applied on the browser. (71986)
Web: Web developer tools won't show a Source map error anymore on the inspector console. (69646)
Web: Fixed a WebChart issue causing some bars to not be shown when WebChart.Type was set to Line mode. (71914)
Windows: The DesktopTextField.Hint text is now displayed at the layout editor, instead of only at runtime. (72976)
Windows: Drawing with a LinearGradientBrush, RadialGradientBrush or PictureBrush now works correctly when the Graphics (from a Canvas/ContainerControl) is clipped. (73350)
Windows: Fixed a bug in DateTimePicker on Windows when the control is set to Time Only and a new DateTime is assigned (72955)
Windows: Graphics: Width/Height are no longer calculated incorrectly depending on the DPI scale factor. This mainly affected Graphics that originated from controls on a window. (71881)
Windows: Windows/Linux: Encodings.InternetName now correctly returns UTF-8 when the encoding is UTF-8, instead of returning an empty string. (64905)
Windows: TextField/TextArea: KeyDown event now fires if CTRL+H or CTRL+M key combinations are detected. (72945)
Windows: WebApplication: Args() parameter in Opening event no longer contains duplicate entries when the app is not being run as a service. (64760)
Windows: DesktopTextArea.StyledTextPrinter now raises an UnsupportedOperationException for Windows/Linux. (72474)
Windows: Canvas.DrawInto no longer incorrectly clips and offsets the drawing on Windows/Linux. (71908)
Compiler
Resolved Issues
Windows: If IncludeFunctionNames is checked, we now include function symbols in Windows 64-bit builds so that RuntimeException stack traces are more useful in built apps. (71308)
Documentation
Examples
New Features
Updated EyeControl example in the Plugins SDK. (72629)