2020r1
Xojo 2020 Release 1, with over 320 changes and improvements, was released on August 27th, 2020.
Major changes include:
Web 2.0
All-new web framework with new controls and improved performance
XojoScript improvements
API 2.0 methods
XojoScript.Compile/XojoScript.Run compiled scripts
Draw custom ListBox headers with ListBox.HeaderBackgroundPaint and ListBox.HeaderContentPaint
Large text projects now open more quickly
Bug fixes (161 cases)
Case |
Area |
Description |
---|---|---|
Compiler |
Incorrect expressions in For Each statements now raise a compile error instead of a failed assertion. |
|
Compiler |
Building 64-bit Windows apps in the Linux IDE no longer raises an assertion, but should now work. |
|
Compiler |
Fixed a compile error that could occur when adding a SerialConnection to a window and implementing the LineStateChanged event. |
|
Compiler |
Analyzing a project no longer slows down subsequent debug runs or builds. |
|
Compiler |
Var can now be used in XojoScript class definitions when defining properties. |
|
Compiler |
Casting Nil to an Object no longer crashes. |
|
Crashes & Assertions » Crash |
Incorrect expressions used in For Each statements now raise an error instead of crashing for iOS builds. |
|
Crashes & Assertions » Failed Assertion |
Windows: Placard/UpDownArrows controls no longer raises a failed assertion if its width/height are 0 (or negative). |
|
Crashes & Assertions » Failed Assertion |
Passing an invalid floating point number (i.e. a value like NaN or Inf) to Graphics.DrawString, TextSize, or StringHeight no longer raises a failed assertion, or crashes/hang. |
|
Crashes & Assertions » IDE Unhandled Exception |
IDE no longer crashes if controls are sized too small or too large in the layout editor. |
|
Crashes & Assertions » IDE Unhandled Exception |
BuildDateTime now uses the same Timezone at Buildtime and Runtime. |
|
Crashes & Assertions » IDE Unhandled Exception |
Windows: Certain TimeZones could not be constructed by name (like Turks and Caicos), this is now fixed with the update to a newer version of ICU 65.1. |
|
Crashes & Assertions » IDE Unhandled Exception |
The IDE no longer crashes when dragging Library items to the debugger's Navigator. |
|
Database Plugins |
PostgreSQLDatabase: now correctly takes the database schema into account when updating records from a RowSet. |
|
Database Plugins |
PostgreSQLDatabase no longer leaves orphaned prepared statements on the server. |
|
Database Plugins » MySQL |
Checking DatabaseColumn.Value for Nil now works correctly when these originate from DatabaseRow. |
|
Database Plugins » PostgreSQL |
Error messages when failing to connect are now correctly encoded as UTF8 strings. |
|
Database Plugins » PostgreSQL |
Any errors that occurred before performing SelectSQL or ExecuteSQL calls are now cleared properly. |
|
Database Plugins » SQLite |
SQLitePreparedStatement.ExecuteSQL now properly raises an exception on error. |
|
Debugger |
CGFloat values now show up in the debugger. |
|
Framework » All |
Graphics.FontUnit now works for Console/Web apps. |
|
Framework » All |
Console Graphics: Fixed incorrect StringWidth and StringHeight calculations. |
|
Framework » All |
Console graphics: calling DrawText right after DrawPicture no longer incorrectly aliases the text. |
|
Framework » All |
Added IteratorException that is raised when an error or a change occurs in the data being iterated over. |
|
Framework » All |
Global Val is no longer shown as deprecated in docs. Global Titlecase is now shown as deprecated when you Analyze Project. |
|
Framework » All |
DatabaseColumn.Value now returns a Variant of the correct type instead of always returning a String, unless of course the value is actually String. |
|
Framework » All |
GenerateJSON on a Variant Array no longer only creates a JSON array of string values, unless of course the Variant Array only contains strings. |
|
Framework » All |
When DateTime.FromString is passed an empty Date string it now raises an InvalidArgumentException instead of crashing (on Windows). |
|
Framework » All |
Fixed some incorrect Window.Types enum values, i.e. Window.Types.Floating should be 3 instead of 1. |
|
Framework » All |
Added AddAllRows function that takes a ParamArray for PopupMenu/ComboBox. |
|
Framework » All |
IsNumeric is now compatible with incoming Text values. |
|
Framework » All |
Trying to change the Modification/Creation DateTime of a FolderItem when that FolderItem is busy/open now properly throws an IOException. |
|
Framework » All |
String.ToDouble now takes into account the current localization when parsing the string. |
|
Framework » All |
Creating a new DateTime from a DateTime returned by DatabaseColumn.DateTimeValue no longer throws a NilObjectException. |
|
Framework » All |
SerialConnection.Connect now raises an IOException on error. If a Device is not assigned when connecting the error code returned is SerialDeviceNotAssigned. |
|
Framework » All |
Updated RGBSurface.Transform page to have correct parameter types. |
|
Framework » All |
Setting the HorizontalScrollPosition of a TextField no longer causes a StackOverflowException. |
|
Framework » All |
Assigning a Picture to a DatabaseRecord.PictureColumn or DatabaseField.PictureValue no longer crashes. |
|
Framework » All |
Assigning a Picture to DatabaseField.PictureValue no longer crashes. |
|
Framework » All |
Closing a MenuItem that was just clicked on no longer crashes. When this MenuItem is clicked on and then closed from an EnableMenuItems event an UnsupportedOperationException is raised. |
|
Framework » All |
Added Crypto.HashAlgorithms.SHA1 enum value (was incorrectly named Crypto.HashAlgorithms.SHA before). |
|
Framework » All |
Point doc page updated to remove mention of operators. |
|
Framework » All |
PrinterSetup.Landscape property should not be deprecated and IsLandscape property should not have been available (and is now marked as deprecated). |
|
Framework » All |
Added missing TabPanel.AddPanelAt and RemovePanelAt methods, deprecated Insert and Remove. Overloaded AddPanel for compatibility. |
|
Framework » All |
FolderItem.IsFolder no longer raises an IOException if the folder doesn't exist, it'll return False instead. |
|
Framework » All |
Color.CMY now matches output of deprecated CMY when an alpha is specified. |
|
Framework » All |
Added POP3SecureSocket.RemoveMessageAt() to replace DeleteMessage(). Deprecated incorrectly added RequestMessageAt(). |
|
Framework » All |
RectControl.RefreshRect() is deprecated with a Refresh() overload as its replacement. |
|
Framework » All |
Removed a few extraneous properties on TextField/TextArea that were not intended to be usable (i.e. IsBold, IsItalic, etc.) |
|
Framework » All |
FolderItem: getting/setting the CreationDate/CreationDateTime and ModificationDate/ModificationDateTime now correctly offsets any daylight savings time. |
|
Framework » All |
XojoScript: Mid String extension function no longer acts like MidB, but now correctly parses unicode points. |
|
Framework » All |
BevelButton, ImageWell, Placard, and PopupArrow's MouseUp coordinates now correctly report negative values. |
|
Framework » All |
No longer crashes when assigning a Nil WString to a String. |
|
Framework » All |
Removed Timer.Tolerance property as it was not documented and did not do anything. |
|
Framework » All |
Analyze project can now report that StrComp is deprecated with a replacement of String.Compare. |
|
Framework » All |
Cleaned up POP3SecureSocket events by removing unused ServerReplied, LoginSucceeded, RollbackSucceeded. |
|
Framework » All |
Added SpecialFolder.Caches property. |
|
Framework » All |
Updated StyledText: Deprecated AddStyleRunAt(Run as StyleRun,Index as Integer) in favor of AddStyleRunAt(index as Integer, run as StyleRun) |
|
Framework » All |
MenuItem: LastRowIndex is now a Property instead of a Method. |
|
Framework » All |
When iterating through a RowSet using For Each Loop, we now reset the RowSet to the beginning before iterating. |
|
Framework » All |
Ptr to String conversion no longer truncates the Ptr to a 32-bit value for 64-bit builds. |
|
Framework » Desktop |
Window.Types.Sheet enum value has been corrected. |
|
Framework » Desktop |
HTMLViewer.NewWindow event now expects an HTMLViewer as return value instead of just a plain Object. |
|
Framework » Linux |
MouseDrag events now fire correctly when using a touchscreen. |
|
Framework » Linux |
Setting the BinaryStream.BytePosition now flushes the buffer. This fixes an occasional file I/O misread on certain platforms. |
|
Framework » Linux |
Changing the Label TextColor no longer leaks memory. |
|
Framework » Linux |
A raised RuntimeException no longer causes a segmentation fault on Raspberry Pi (mainly an issue on Jessie & Stretch). |
|
Framework » Linux |
Linux IDE: now uses the preferred control heights (of the OS/theme) when new controls are added to the layout editor. |
|
Framework » Linux |
Updating the font properties on a Control (like FontSize on a Label) no longer leaks memory. |
|
Framework » Linux |
64-bit and ARM Linux apps now correctly display their app icons in the desktop task/launch bar instead of being blank/generic looking. |
|
Framework » Web |
Web controls are now consistently disabled when the Enabled property is False. |
|
Framework » Web |
Enabling and disabling web controls no longer displays them inconsistently. |
|
Framework » Web |
Modal WebDialogs no longer allow users to interact with controls in the background. |
|
Framework » Web |
Modal WebDialogs no longer allow users to interact with controls in the background. |
|
Framework » Web |
Web Controls are now responsible for disabling themselves at runtime so they'll always have a consistent appearance. |
|
Framework » Web |
Disabling a WebContainer now correctly disables all contained controls. |
|
Framework » Web |
Controls on containers that are disabled in the IDE are now correctly disabled when the container is first displayed in the browser. |
|
Framework » Web |
WebDialogs no longer become translucent at odd times. |
|
Framework » Web |
Web tooltips (helptags) can now be set in code. |
|
Framework » Web |
Tooltips which contain quotes now render correctly when set at runtime. |
|
Framework » Web |
WebButton now can now be triggered with the spacebar when it has focus. |
|
Framework » Web |
WebFileUploader 2.0 now works with iOS devices. |
|
Framework » Web |
Localized constants work again in Web projects. Added a fallback protocol so that if the supplied language code contains a hyphen and the Xojo framework doesn't have an exact match, we try again with just the first segment. |
|
Framework » Web |
WebFileUploader's Add button is now disabled when an upload is in progress. |
|
Framework » Web |
Exceptions in WebUploadedFile.Save are no longer intercepted so they can be handled by user code. |
|
Framework » Windows |
FolderItem.ModifcationDate/CreationDate now correctly offset the daylight savings time. |
|
Framework » Windows |
Setting the UserAgent for WebKit based HTMLViewer now works, although this needs to be done in the Constructor of your HTMLViewer subclass for it to take affect. |
|
Framework » Windows |
System.MouseX/Y now reports the virtualized X, Y coordinates which matches macOS behavior when dealing with multiple monitors of different DPI scale factors. |
|
Framework » Windows |
We now throw an exception instead of raising failed assertions when something goes wrong with drawing pictures. The likely scenarios are 1. Out of memory or 2. The Picture is too big to be drawn (depending on the Graphics target). |
|
Framework » Windows |
Drawing an alpha Picture on to itself now works instead of raising a failed assertion. |
|
Framework » Windows |
When there's not enough memory to create a Picture we now raise an OutOfMemoryException instead of crashing. |
|
Framework » Windows |
Closing the window with an active editable cell on a Listbox no longer crashes. |
|
Framework » Windows |
MenuItem.Popup now accounts for multiple monitors with multiple DPI scale factors when popping up the menu. |
|
Framework » Windows |
URLConnection/Xojo.Net.HTTPSocket response header value is no longer incorrectly truncated if there exists a colon in the value itself. |
|
Framework » Windows |
BinaryStream.Read no longer crashes when reading > 3GB of data for 64-bit Windows builds. |
|
Framework » Windows |
Native HTMLViewer no longer hangs the app in an infinite exception loop if the window doesn't have a menubar. |
|
Framework » Windows |
If MoviePlayer.HasController is set we now show the full controller set (this really only affects Windows since no other platform actively supported the mini set). |
|
Framework » Windows |
Invalidating other controls in a Paint related event no longer prevents the other controls from invalidating/painting. |
|
Framework » Windows |
When loading animated gif files we no longer return all the image parts. For cross platform compatibility we now return the first image in the set. |
|
Framework » Windows |
Debugger now consistently breaks correctly to the source line that triggered an Exception for 64-bit Windows builds. Depending on where the Exception was raised this had not been consistent, and often times would break in the debugger but show no code. |
|
Framework » Windows |
Hierarchical Listbox: selection highlight no longer exceeds the cell bounds . This could happen when the cell text exceeded the amount of space allocated for that cell. |
|
Framework » iOS » Mobile |
iOSCustomTableCell controls now responds correctly to dark mode changes. |
|
Framework » iOS » Mobile |
iOSTextField default text color is black again on iOS versions lower than 13. |
|
Framework » iOS » Mobile |
Fixed a place where we'd used the wrong case for the library of an iOS declare which caused it to fail on a case-sensitive file system. |
|
Framework » iOS » Mobile |
Setting iOSSegmentedControl.Value (within range) after removing/adding segments no longer raises an OutOfBoundsException. |
|
Framework » macOS |
Tooltips on controls embedded in a parent container and added within a TabPanel or PagePanel now shows correctly when switching between tabs/pages. |
|
Framework » macOS |
Listbox: Header height now dynamically adjusts to fit various font sizes. This was already the case on Windows/Linux. |
|
Framework » macOS |
SerialDevice.WithName now returns a proper device that SerialConnection can connect to. |
|
Framework » macOS |
FolderItem: optimized child by index APIs to match performance before the switch to using the newer NSURL APIs. |
|
Framework » macOS |
Mac IDE: Loading internal plugins from a unicode path now works again. |
|
Framework » macOS |
FolderItem memory is now cleaned up immediately after FolderItem.Parent or FolderItem.Name is called instead of being released after the main loop iteration runs. |
|
Framework » macOS |
GraphicsPath drawing no longer incorrectly offset on HiDPI Retina displays. |
|
Framework » macOS |
Getting the FolderItem.ModificationDate (or ModificationDateTime) now immediately releases memory instead of waiting on the next event loop to do so. |
|
Framework » macOS |
DrawInto no longer crashes when drawing to a clipped Graphics. |
|
Framework » macOS |
Graphics: setting the FontUnit to Pixels, Inches or Millimeters now works correctly when drawing text on HiDPI displays. |
|
Framework » macOS |
Our macOS framework no longer relies on the non-public API getsectiondata. |
|
IDE |
New project windows no longer show as all black when they first open on macOS. |
|
IDE » Auto Complete |
The word Selector now autocompletes when typing it in a declare. |
|
IDE » Auto Complete |
Autocomplete now matches Allow prefix instead of Allows. |
|
IDE » Auto Complete |
Added Is to autocomplete prefix list. |
|
IDE » Code Editor |
When using super-return to expand an inline if, the keywords for then, else, end if now match the case of the initial if (or all use standardize format if the use standardize format at end of line preference is enabled). |
|
IDE » Code Editor |
The code editor no longer jumps back to the last edited line if you scroll and then click & drag to make a new selection and have code reformatting turned on. |
|
IDE » Code Editor |
The code editor no longer suggests Super.Destructor when adding a Destructor method to the subclass of a class which also has a Destructor. This change was made because the framework calls both class and subclass Destructors automatically and calling it in user code actually causes it to fire twice. |
|
IDE » Debugger |
Viewing Text types that contain a lot of content no longer hangs the IDE. |
|
IDE » Debugger |
Hex viewer no longer appears blurry at HiDPI. |
|
IDE » Debugger |
DatabaseRow contents can now be viewed in the debugger. |
|
IDE » Debugger |
Debugging objects, whose classes include Hidden attributes, no longer crashes. |
|
IDE » Debugger |
Numeric conversions, i.e. FromBinary, FromHex, FromOctal, FromString and ToString no longer raise Xojo.Core exceptions. While these were being re-raised as InvalidArgumentExceptions, in the debugger you would still see both. |
|
IDE » FileIO |
Images attached to ImageSets that have to be relocated when a project opens now save the location change properly in text projects. |
|
IDE » FileIO |
Checkbox inconsistency between the VisualState as seen in the IDE vs. Runtime is fixed. |
|
IDE » FileIO |
IDE now tries to load plist files as soon as they are dropped on the IDE so it can give feedback about files that are inaccessible or malformed in some way. |
|
IDE » Icon Editor |
Fixed a bug where the IDE unexpectedly stalled when dragging a PDF file on the Icon Editor on macOS. |
|
IDE » Icon Editor |
Labels on the icon editor are now the right color on macOS light and dark mode. |
|
IDE » Inspector |
Method Edit Panel is now a little more intelligent about what methods are available to be overridden and the initially generated code. |
|
IDE » Inspector |
Overriding a method in a subclass now uses the capitalization from the super's class method name. |
|
IDE » Inspector |
Newly added Plugin controls now displays the Tooltip property in the Inspector instead of the deprecated HelpTag property. |
|
IDE » Inspector |
TextArea: Multiline property now shows up in Inspector. |
|
IDE » Inspector |
SegmentedButton: Tooltip and Tabstop property now appear in the Inspector. |
|
IDE » Language Reference |
Linux IDE: local Language Reference links now work correctly instead of doing nothing. |
|
IDE » Language Reference |
Search field on the Language Reference on macOS 10.14 and above now switches correctly between light and dark mode when the window isn't visible during the transition. |
|
IDE » Layout Editor |
WebPopupMenu now renders properly in the layout editor on HiDPI screens. |
|
IDE » Layout Editor |
WebTextArea resizes live in the layout editor again. |
|
IDE » Layout Editor |
Linux IDE: Window Backdrop image is now properly drawn in the Layout Editor. |
|
IDE » Layout Editor |
Adding a Right layout constraint for iOSSegmentedControl no longer hangs the IDE. |
|
IDE » Miscellaneous |
Mac and iOS projects containing an invalid plist file will now show a warning in the Resolve Issues dialog when the project is first opened. |
|
IDE » Miscellaneous |
Removed the ability to export classes that are already external. |
|
IDE » Miscellaneous |
Added back the Help->QuickStart->Getting Started menu item. |
|
IDE » Miscellaneous |
Cleanup from previous debug-runs is now a little faster. |
|
IDE » Miscellaneous |
IDE now properly cleans up any plugin related resources that may have remained in the temporary folder. |
|
IDE » Navigator |
When cancelling a Navigator Filter, always force it to refresh. |
|
IDE » Navigator |
A Database project item is now usable for 64-bit builds instead of throwing NilObjectExceptions when accessed. |
|
IDE » Navigator |
IDE no longer crashes if you try to undo the addition of a Module while the navigator has the Classes group name selected. |
|
IDE » Navigator |
Navigator scrolling speed has been optimized. |
|
IDE » Preferences |
Changed Menu short cuts in Preferences window to Menu shortcuts. |
|
IDE » Rendering |
In event handlers, the CurrentMethodName constant no longer replaces underscores (“_”) in control names with periods (“.”). |
|
IDE » UI |
IDE no longer shows a warning about building 32-bit apps in an iOS project on macOS 10.15+. |
|
Installer |
Debian installer now correctly looks for libwebkit2gtk dependencies. |
|
Miscellaneous |
RoundRectangle: OvalWidth and OvalHeight property values are now correctly converted to their new replacement properties (i.e. CornerWidth and CornerHeight). |
|
Plugin SDK |
Linux & macOS IDE can now load 64-bit shared library plugins that are found directly in the Plugins folder (i.e. without a packaged hierarchy). |
|
Plugin SDK |
Updated EyeControl makefiles to be more current and appropriate for 64-bit builds. |
|
Plugin SDK |
REALUnregisterBackgroundTask now properly cleans up memory instead of leaking ~16 bytes worth. |
Changes (43 cases)
Case |
Area |
Description |
---|---|---|
Database Plugins » SQLite |
Updated SQLite plugin to 3.30.1. |
|
Database Plugins » SQLite |
Updated SQLite Plugin to 3.31.1. |
|
Framework » All |
Added new Crypto.HMAC function that takes Crypto.HashAlgorithms instead of the deprecated Crypto.Algorithm. |
|
Framework » All |
Deprecated DrawPolygon, use DrawPath instead. Deprecated FillPolygon, use FillPath instead. |
|
Framework » All |
HTMLViewer: changed our injected sendtoxojo Javascript function to sendToXojo to match Javascript naming convention. |
|
Framework » All |
Listbox: the sort widget is now drawn as part of the HeaderContentPaint event instead of HeaderBackgroundPaint. i.e. returning true from HeaderBackgroundPaint no longer suppresses the sort widget from drawing. |
|
Framework » Web |
When a WebToolbar is positioned at the bottom of a page, WebToolbarMenus now appear above the toolbar instead of below. |
|
Framework » Web |
WebToolbarMenus now show a downward caret after the caption to indicate that they contain a menu. |
|
Framework » Web |
CMD/CTRL-A now selects all rows in WebListBox. |
|
Framework » Web |
WebMenuItem now works more like the desktop MenuItem class. |
|
Framework » Web |
Add LastAddedRowIndex and LastRowIndex to WebPopupMenu. |
|
Framework » Web |
WebSegmentedControl now supports keyboard navigation. |
|
Framework » Web |
Contextual menus on web controls now appear at the cursor location. |
|
Framework » Web |
Control enabled state is now properly retained when the parent control's enabled state is changed. |
|
Framework » Web |
Radio Buttons can now be added to a WebRadioGroup at runtime. |
|
Framework » Web |
Added WebStorage API for local storage. |
|
Framework » Web |
Application.HandleURL now has a second object specifically for Response information. |
|
Framework » Web |
Web framework has been updated to support Bootstrap 4. |
|
Framework » Web |
Session History data is now stored on the server to allow data larger than 2048 bytes. |
|
Framework » Web |
Added WebListbox cell types. |
|
Framework » Web |
WebApplication now has a Sessions iterator. |
|
Framework » Web |
Modernizr library no longer reorders the body and head tags. |
|
Framework » Web |
WebUIControl Shown and Hidden events will now fire every time a visual control is shown or hidden. |
|
Framework » Web |
App.DoEvents, App.SleepCurrentThread and App.YieldToNextThread will now raise an exception if called when a WebSession Context exists. This includes events due to user interactions on the browser. If your intention is to send changes to the browser, please use the UpdateBrowser method on the control you are trying to update to push changes immediately. |
|
Framework » Web |
The WebTextField.Value property can now be set. |
|
Framework » Web |
Session.Activated and Session.Deactivated now also fire when the browser window gains or loses focus, respectively. Added Visible as Boolean parameter to the Deactivated event so you can tell if the page is still visible to the user, depending on browser support (defaults to True). |
|
Framework » Web |
Added WebSession.Pages iterator. |
|
Framework » Web |
Added Controls iterator to WebContainer, WebDialog and WebPage. |
|
Framework » Web |
WebRadioButton.ValueChanged event now includes the selected button. |
|
Framework » Web |
WebContainerControl has been renamed back to WebContainer. |
|
Framework » Web |
WebFileUploader will now return a 400 BAD REQUEST response to the browser if the uploaded data is corrupt in some way. |
|
Framework » Web |
WebToolbarItem now has a Badge property. |
|
Framework » Web |
Bootstrap icons are now directly available as WebPictures in the framework and can be used anywhere a WebPicture is used. Usage: me.icon = WebPicture.BootstrapIcon(bar chart) The list of available icons is at: https://icons.getbootstrap.com |
|
Framework » Web |
WebListbox.CellAction event has been renamed to CustomCellAction. |
|
Framework » Web |
WebListbox.Selected setter has been deferred to a later release. |
|
IDE » Code Editor |
Change Code Reformat script optimization from Low to High. |
|
IDE » FileTypes Editor |
FileType editor icon editor now renders disabled when the control is not enabled so it's more obvious that you can't add an icon. |
|
IDE » Graphics |
The DefaultButton control now has white text instead of black when displayed in the Library and Navigator. |
|
IDE » Miscellaneous |
Duplicate method dialog for plugins is now more specific about where the problem occurred. |
|
IDE » Miscellaneous |
Added a button to close the Getting Started window. |
|
IDE » Miscellaneous |
Removed unused 256x256 and 128x128 icons from default web projects. |
|
IDE » Plugins |
macOS IDE now loads the native 64-bit plugin targets before attempting any other variations. |
|
XojoScript |
XojoScript: added ability to save compiled XojoScript object - Added XojoScript.Compile(optimizationLevel As OptimizationLevels) As MemoryBlock - Overloaded XojoScript.Run(cachedObject As MemoryBlock = Nil) |
New items (72 cases)
Case |
Area |
Description |
---|---|---|
Compiler |
Removed 32-bit macOS parts from the framework. Only 64-bit macOS apps can be built. |
|
Compiler |
MachO executables are now padded with an additional 2048 bytes of header space for 3rd party apps to poke into. |
|
Framework » All |
Support for creating PDF documents on macOS, Windows, Linux ( Desktop), Web and Console. |
|
Framework » All |
Updated Graphics.DrawPicture to use clearer parameter names so that they are more useful in the Syntax Help area and match what is in the Language Reference. |
|
Framework » All |
Listbox: added two new header paint events HeaderBackgroundPaint(g As Graphics, column As Integer) As Boolean HeaderContentPaint(g As Graphics, column As Integer) As Boolean These new events are triggered whenever the header requires repainting. Returning True means override our drawing, False otherwise. For the end cap (the column above the scrollbar if any), only the HeaderBackgroundPaint event will be triggered. |
|
Framework » All |
HTMLViewer now has the JavaScriptRequest event which is called by a special JavaScript function called executeInXojo() or executeInXojoSync() which accepts any number of numeric and string parameters. You have to use the WebKit renderer for this to work on Windows. |
|
Framework » All |
SerialConnection: Added new Parities enumeration values Space and Mark. |
|
Framework » All |
Windows/Linux: Updated frameworks to use latest version of ICU 65.1, this mainly affects DateTime, TimeZone and Locale. |
|
Framework » All |
Added String.Characters iterator. Just like Text.Characters this iterator will iterate through all the Characters (including grapheme clusters) and not individual codepoints. |
|
Framework » All |
Widened Web EmailAddressField. |
|
Framework » All |
Extended Double and Single with IsNaN and IsInf functions. Use IsNaN to determine if a floating point calculation yields NaN (Not-A-Number), and IsInf to determine if a floating point calculation yields an infinity value (either positive or negative). |
|
Framework » All |
Added the following convenience methods to PopupMenu: — SelectRowWithValue(targetValue As String) — SelectRowWithTag(targetValue As Variant) |
|
Framework » All |
Added Color.ToString and FromString methods to match equivalent API 2.0 methods on other datatypes. |
|
Framework » All |
The new available methods: AddAllRows(items() As String), and AddAllRows(ParamArray item As String), will add the received values at the end of the ListBox, or at the end of the first column for multi-column ListBoxes. |
|
Framework » All |
Updated HTMLViewer for improved JavaScript communication: - ExecuteJavaScript (executes JavaScript asynchronously) - ExecuteJavaScriptSync (new, executes JavaScript synchronously, returns Variant) - executeInXojo (new, called from JavaScript to trigger JavaScriptRequest event asynchronously) - executeInXojoSync (new, called from JavaScript to trigger JavaScriptRequest event synchronously, returns String) - New event JavaScriptRequest(method As String, parameters() As Variant) As String |
|
Framework » All |
Added new UnicodeMode property to TextArea, this allows Codepoint or Character selection modes: - Added UnicodeModes enum (0-Native, 1-Characters, 2-Codepoints) with the default being Native which is Codepoints on Windows/macOS and Characters on Linux - On Linux only Native/Characters is supported, an UnsupportedOperationException is thrown otherwise - This new property can be found in the Advanced tab in the Inspector - Updated StyledText to also support Characters UnicodeMode when associated with a TextArea |
|
Framework » All |
Fixed text size and truncation when printing reports on PDF Document. |
|
Framework » Linux |
Added a new Normalize Control Sizes build option for Linux Desktop targets which normalizes all the controls widths/heights, removing any theme specific padding and adjustments to make controls on any Linux distro look similar without having to adjust the heights individually depending on theme/distro. |
|
Framework » Web |
WebListbox now supports Single, Multiple and No Selection. |
|
Framework » Web |
Added WebComboBox control. |
|
Framework » Web |
XojoWebButton now has Cancel and Default properties just like it does on the desktop. |
|
Framework » Web |
There are now two dialogs which can appear when a user is losing connection to a WebApp, one when the browser first notices that it didn't get a response to a request and the second when it determines that the server is actually gone. The text on both of these dialogs can be customized on the Session class. |
|
Framework » Web |
WebListbox columns are now sortable. |
|
Framework » Web |
WebButtons now have a Cancel option which causes the button to fire when the ESC key is pressed. |
|
Framework » Web |
WebFileUploader has been refactored so that the interface and upload engine are now separate entities. The default interface is now simply a text field and a button. More UIs will be available in the future and developers will be able to create their own when the new WebSDK is released later this year. |
|
Framework » Web |
WebLinks can now have the appearance of a button. |
|
Framework » Web |
Pressing Return or ESC on a page or dialog which contains a Default or Cancel button will now automatically fire their Pressed events respectively. |
|
Framework » Web |
WebMapViewer now has support for Directions. |
|
Framework » Web |
WebButton now has a Press method which directly fires the Pressed event. |
|
Framework » Web |
WebMoviePlayer playback position can now be set precisely by specifying the position in fractions of a second. |
|
Framework » Web |
Added Read-Only Duration property to WebMoviePlayer. |
|
Framework » Web |
WebFileUploader has been refactored so that the interface and upload engine are now separate entities. The default interface is now simply a text field and a button. More UIs will be available in the future and developers will be able to create their own when the new WebSDK is released later this year. |
|
Framework » Web |
Added a DatePicker control to the web framework. |
|
Framework » Web |
Added UpdateBrowser method which pushes the current state of the control to the browser even if in the middle of a long running process. |
|
Framework » Web |
WebListbox now supports the selection type of None. |
|
Framework » Web |
Added WebListBox.SelectedRowColor for setting the selection color. |
|
Framework » Web |
Web projects now have PagePanel and TabPanel controls. |
|
Framework » Web |
The browser contextual menu is now shown if you don't assign your own page level contextual menu. |
|
Framework » Web |
HTMLViewer source can now be retrieved using *var code as String = EvaluateJavascript(*document.html.outerhtml”)”. |
|
Framework » Web |
WebMenuItems can now include separators. |
|
Framework » Web |
The WebListbox now supports lazy loading data. |
|
Framework » Web |
Added a WebAudioPlayer control. |
|
Framework » Web |
WebMapViewer now supports StreetView. |
|
Framework » Web |
Contextual menus can now be added to controls in their Opening event. |
|
Framework » Web |
WebPopupMenus now use WebMenuItems under the hood which have a disabled property. |
|
Framework » Web |
WebTextArea now has a MaximumCharactersAllowed property for limiting the number of characters a user can enter. |
|
Framework » Web |
Web Framework now includes Bootstrap 3 controls. |
|
Framework » Web |
Added History API to allow saving state on the user's browser so that if the user clicks the BACK/FORWARD buttons you can figure out where they were and what was loaded. |
|
Framework » Web |
Added a command-line option (uploadpath) for overriding the location where upload temporary files will be created. |
|
Framework » Web |
Added an AllowTabOrderWrap property to WebPage which can be set to False before the page's Opening event has finished to entirely disable the built-in tab order system. |
|
Framework » Web |
Added Activated and Deactivated events to Session which fires when the app's tab or window is shown or hidden, depending on browser support. |
|
Framework » Web |
Session.UserDisconnected now fires when the web browser is closed. |
|
Framework » Web |
WebListbox underlying control now uses its Bootstrap 4 theme. |
|
Framework » Web |
WebCheckbox now has an Indeterminate property, which when set changes the appearance of the checkbox but not the Value property. When the user clicks the checkbox to make a choice, the Indeterminate property is automatically set to False. |
|
Framework » Web |
WebSession now has an AppearanceChanged event and an IsDarkMode boolean property which reflect the state of the end-user's system appearance settings. This functionality relies on browser support for detection. |
|
Framework » Web |
WebMessageDialog is now available in the Library. |
|
Framework » Web |
Removed WebMoviePlayer.PlaybackReadyThroughEnd event. |
|
Framework » Web |
WebListbox now has a Pressed event. |
|
Framework » Web |
WebListBox.NoRowsMessage no longer has a default value. |
|
Framework » macOS |
Updated HTMLViewer on macOS to use WKWebView. |
|
Framework » macOS |
Updated the look of Listbox headers to match macOS behavior. |
|
IDE » Layout Editor |
The basic button control in the Library now has the same name and default caption across all platforms. |
|
IDE » Layout Editor |
All controls now use the same base Bootstrap theme. |
|
IDE » Layout Editor |
New TextAreas added to the layout now defaults to Characters for the UnicodeMode property. |
|
IDE » Navigator |
Added a new “Import” entry for the Module contextual menu, so it can import several Classes, Modules, Interfaces… at once. |
|
IDE » Scripting |
Build Target architectures can now be set in and IDE script using the PropertyValue method. the property names are: App.MacArchitecture, App.WindowsArchitecture and App.LinuxArchitecture. The values may be set to x32, x64, ARM32 or ARM64 depending on the specified target. If the target does not support the new value, the value is not changed. |
|
IDE » Style Editor |
WebStyles can now accept any CSS value. |
|
IDE » Xojo Cloud |
Xojo Cloud apps now each have their own domains. |
|
Miscellaneous |
Modernized Spotlight importer on macOS for Xojo project files. |
|
Plugin SDK |
Added additional Plugins SDK function to Add/Remove event handlers and a function to determine if an event is being handled, see PluginMain.cpp in the Plugins SDK for more details. |
|
Reporting |
Now it is possible to print Reports to PDFDocument instances. |
|
XojoScript |
Updated XojoScript to support API 2.0 feature set. |