Resources

Difference between revisions of "2020r1 Release Notes"

From Xojo Documentation

 
Line 3: Line 3:
 
Major changes include:
 
Major changes include:
 
* Web 2.0
 
* Web 2.0
** All-new web framework with new controls and improved performance
+
** [[:Category:Web|All-new web framework]] with new controls and improved performance
 
* [[PDFGraphics|PDF generation]]
 
* [[PDFGraphics|PDF generation]]
 
* XojoScript improvements
 
* XojoScript improvements
 
** API 2.0 methods
 
** API 2.0 methods
 
** [[XojoScript.Compile|Save]]/[[XojoScript.Run|Load]] compiled scripts
 
** [[XojoScript.Compile|Save]]/[[XojoScript.Run|Load]] compiled scripts
* Draw custom ListBox headers
+
* Draw custom [[ListBox]] headers with [[ListBox.HeaderBackgroundPaint]] and [[ListBox.HeaderContentPaint]]
 
* Large text projects now open more quickly
 
* Large text projects now open more quickly
  
 
== Release Notes ==
 
== Release Notes ==
 +
<h3 class='typeheader'>Bug Fixes</h3>
 +
<table>
 +
<tr><td>[http://feedback.xojo.com/case/48102 48102]</td><td>Compiler</td><td>Incorrect expressions in For Each statements now raise a compile error instead of a failed assertion.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/58137 58137]</td><td>Compiler</td><td>Building 64-bit Windows apps in the Linux IDE no longer raises an assertion, but should now work.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/59155 59155]</td><td>Compiler</td><td>Fixed a compile error that could occur when adding a SerialConnection to a window and implementing the LineStateChanged event.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/59266 59266]</td><td>Compiler</td><td>Analyzing a project no longer slows down subsequent debug runs or builds.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/59371 59371]</td><td>Compiler</td><td>Var can now be used in XojoScript class definitions when defining properties.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/59598 59598]</td><td>Compiler</td><td>Casting Nil to an Object no longer crashes.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/59381 59381]</td><td>Crashes & Assertions » Crash</td><td>Incorrect expressions used in For Each statements now raise an error instead of crashing for iOS builds.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/58894 58894]</td><td>Crashes & Assertions » Failed Assertion</td><td>Windows: Placard/UpDownArrows controls no longer raises a failed assertion if its width/height are 0 (or negative).</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/59307 59307]</td><td>Crashes & Assertions » Failed Assertion</td><td>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.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/58696 58696]</td><td>Crashes & Assertions » IDE Unhandled Exception</td><td>IDE no longer crashes if controls are sized too small or too large in the layout editor.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/58699 58699]</td><td>Crashes & Assertions » IDE Unhandled Exception</td><td>BuildDateTime now uses the same Timezone at Buildtime and Runtime.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/58784 58784]</td><td>Crashes & Assertions » IDE Unhandled Exception</td><td>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.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/59449 59449]</td><td>Crashes & Assertions » IDE Unhandled Exception</td><td>The IDE no longer crashes when dragging Library items to the debugger's Navigator.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/11597 11597]</td><td>Database Plugins</td><td>PostgreSQLDatabase: now correctly takes the database schema into account when updating records from a RowSet.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/41633 41633]</td><td>Database Plugins</td><td>PostgreSQLDatabase no longer leaves orphaned prepared statements on the server.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/59390 59390]</td><td>Database Plugins » MySQL</td><td>Checking DatabaseColumn.Value for Nil now works correctly when these originate from DatabaseRow.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/58567 58567]</td><td>Database Plugins » PostgreSQL</td><td>Error messages when failing to connect are now correctly encoded as UTF8 strings.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/58909 58909]</td><td>Database Plugins » PostgreSQL</td><td>Any errors that occurred before performing SelectSQL or ExecuteSQL calls are now cleared properly.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/59604 59604]</td><td>Database Plugins » SQLite</td><td>SQLitePreparedStatement.ExecuteSQL now properly raises an exception on error.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/59659 59659]</td><td>Debugger</td><td>CGFloat values now show up in the debugger.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/26147 26147]</td><td>Framework » All</td><td>Graphics.FontUnit now works for Console/Web apps.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/38272 38272]</td><td>Framework » All</td><td>Console Graphics: Fixed incorrect StringWidth and StringHeight calculations.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/43527 43527]</td><td>Framework » All</td><td>Console graphics: calling DrawText right after DrawPicture no longer incorrectly aliases the text.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/58604 58604]</td><td>Framework » All</td><td>Added IteratorException that is raised when an error or a change occurs in the data being iterated over.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/58845 58845]</td><td>Framework » All</td><td>Global Val is no longer shown as deprecated in docs. Global Titlecase is now shown as deprecated when you Analyze Project.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/58934 58934]</td><td>Framework » All</td><td>DatabaseColumn.Value now returns a Variant of the correct type instead of always returning a String, unless of course the value is actually String.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/58940 58940]</td><td>Framework » All</td><td>GenerateJSON on a Variant Array no longer only creates a JSON array of string values, unless of course the Variant Array only contains strings.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/58956 58956]</td><td>Framework » All</td><td>When DateTime.FromString is passed an empty Date string it now raises an InvalidArgumentException instead of crashing (on Windows).</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/59041 59041]</td><td>Framework » All</td><td>Fixed some incorrect Window.Types enum values, i.e. Window.Types.Floating should be 3 instead of 1.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/59068 59068]</td><td>Framework » All</td><td>Added AddAllRows function that takes a ParamArray for PopupMenu/ComboBox.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/59092 59092]</td><td>Framework » All</td><td>IsNumeric is now compatible with incoming Text values.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/59100 59100]</td><td>Framework » All</td><td>Trying to change the Modification/Creation DateTime of a FolderItem when that FolderItem is busy/open now properly throws an IOException.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/59105 59105]</td><td>Framework » All</td><td>String.ToDouble now takes into account the current localization when parsing the string.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/59114 59114]</td><td>Framework » All</td><td>Creating a new DateTime from a DateTime returned by DatabaseColumn.DateTimeValue no longer throws a NilObjectException.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/59125 59125]</td><td>Framework » All</td><td>SerialConnection.Connect now raises an IOException on error. If a Device is not assigned when connecting the error code returned is SerialDeviceNotAssigned.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/59163 59163]</td><td>Framework » All</td><td>Updated RGBSurface.Transform page to have correct parameter types.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/59174 59174]</td><td>Framework » All</td><td>Setting the HorizontalScrollPosition of a TextField no longer causes a StackOverflowException.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/59185 59185]</td><td>Framework » All</td><td>Assigning a Picture to a DatabaseRecord.PictureColumn or DatabaseField.PictureValue no longer crashes.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/59232 59232]</td><td>Framework » All</td><td>Assigning a Picture to DatabaseField.PictureValue no longer crashes.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/59284 59284]</td><td>Framework » All</td><td>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.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/59467 59467]</td><td>Framework » All</td><td>Added Crypto.HashAlgorithms.SHA1 enum value (was incorrectly named Crypto.HashAlgorithms.SHA before).</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/59523 59523]</td><td>Framework » All</td><td>Point doc page updated to remove mention of operators.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/59589 59589]</td><td>Framework » All</td><td>PrinterSetup.Landscape property should not be deprecated and IsLandscape property should not have been available (and is now marked as deprecated).</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/59595 59595]</td><td>Framework » All</td><td>Added missing TabPanel.AddPanelAt and RemovePanelAt methods, deprecated Insert and Remove. Overloaded AddPanel for compatibility.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/59605 59605]</td><td>Framework » All</td><td>FolderItem.IsFolder no longer raises an IOException if the folder doesn't exist, it'll return False instead.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/59650 59650]</td><td>Framework » All</td><td>Color.CMY now matches output of deprecated CMY when an alpha is specified.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/59653 59653]</td><td>Framework » All</td><td>Added POP3SecureSocket.RemoveMessageAt() to replace DeleteMessage(). Deprecated incorrectly added RequestMessageAt().</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/59753 59753]</td><td>Framework » All</td><td>RectControl.RefreshRect() is deprecated with a Refresh() overload as its replacement.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/59764 59764]</td><td>Framework » All</td><td>Removed a few extraneous properties on TextField/TextArea that were not intended to be usable (i.e. IsBold, IsItalic, etc.)</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/59781 59781]</td><td>Framework » All</td><td>FolderItem: getting/setting the CreationDate/CreationDateTime and ModificationDate/ModificationDateTime now correctly offsets any daylight savings time.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/59815 59815]</td><td>Framework » All</td><td>XojoScript: Mid String extension function no longer acts like MidB, but now correctly parses unicode points.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/59881 59881]</td><td>Framework » All</td><td>BevelButton, ImageWell, Placard, and PopupArrow’s MouseUp coordinates now correctly report negative values.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/60056 60056]</td><td>Framework » All</td><td>No longer crashes when assigning a Nil WString to a String.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/60063 60063]</td><td>Framework » All</td><td>Removed Timer.Tolerance property as it was not documented and did not do anything.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/60202 60202]</td><td>Framework » All</td><td>Analyze project can now report that StrComp is deprecated with a replacement of String.Compare.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/60237 60237]</td><td>Framework » All</td><td>Cleaned up POP3SecureSocket events by removing unused ServerReplied, LoginSucceeded, RollbackSucceeded.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/60288 60288]</td><td>Framework » All</td><td>Added SpecialFolder.Caches property.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/60323 60323]</td><td>Framework » All</td><td>Updated StyledText:
 +
Deprecated AddStyleRunAt(Run as StyleRun,Index as Integer) in favor of
 +
AddStyleRunAt(index as Integer, run as StyleRun)</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/60358 60358]</td><td>Framework » All</td><td>MenuItem: LastRowIndex is now a Property instead of a Method.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/60527 60527]</td><td>Framework » All</td><td>When iterating through a RowSet using For Each Loop, we now reset the RowSet to the beginning before iterating.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/60767 60767]</td><td>Framework » All</td><td>Ptr to String conversion no longer truncates the Ptr to a 32-bit value for 64-bit builds.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/60271 60271]</td><td>Framework » Desktop</td><td>Window.Types.Sheet enum value has been corrected.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/60304 60304]</td><td>Framework » Desktop</td><td>HTMLViewer.NewWindow event now expects an HTMLViewer as return value instead of just a plain Object.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/55508 55508]</td><td>Framework » Linux</td><td>MouseDrag events now fire correctly when using a touchscreen.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/57685 57685]</td><td>Framework » Linux</td><td>Setting the BinaryStream.BytePosition now flushes the buffer.  This fixes an occasional file I/O misread on certain platforms.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/58254 58254]</td><td>Framework » Linux</td><td>Changing the Label TextColor no longer leaks memory.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/58917 58917]</td><td>Framework » Linux</td><td>A raised RuntimeException no longer causes a segmentation fault on Raspberry Pi (mainly an issue on Jessie & Stretch).</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/59346 59346]</td><td>Framework » Linux</td><td>Linux IDE: now uses the preferred control heights (of the OS/theme) when new controls are added to the layout editor.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/59385 59385]</td><td>Framework » Linux</td><td>Updating the font properties on a Control (like FontSize on a Label) no longer leaks memory.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/60293 60293]</td><td>Framework » Linux</td><td>64-bit and ARM Linux apps now correctly display their app icons in the desktop task/launch bar instead of being blank/generic looking.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/16273 16273]</td><td>Framework » Web</td><td>Web controls are now consistently disabled when the Enabled property is False.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/17345 17345]</td><td>Framework » Web</td><td>Enabling and disabling web controls no longer displays them inconsistently.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/21791 21791]</td><td>Framework » Web</td><td>Modal WebDialogs no longer allow users to interact with controls in the background.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/28438 28438]</td><td>Framework » Web</td><td>Modal WebDialogs no longer allow users to interact with controls in the background.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/34177 34177]</td><td>Framework » Web</td><td>Web Controls are now responsible for disabling themselves at runtime so they'll always have a consistent appearance.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/34372 34372]</td><td>Framework » Web</td><td>Disabling a WebContainer now correctly disables all contained controls.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/35159 35159]</td><td>Framework » Web</td><td>Controls on containers that are disabled in the IDE are now correctly disabled when the container is first displayed in the browser.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/42152 42152]</td><td>Framework » Web</td><td>WebDialogs no longer become translucent at odd times.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/49635 49635]</td><td>Framework » Web</td><td>Web tooltips (helptags) can now be set in code.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/51140 51140]</td><td>Framework » Web</td><td>Tooltips which contain quotes now render correctly when set at runtime.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/54064 54064]</td><td>Framework » Web</td><td>WebButton now can now be triggered with the spacebar when it has focus.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/54115 54115]</td><td>Framework » Web</td><td>WebFileUploader 2.0 now works with iOS devices.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/58058 58058]</td><td>Framework » Web</td><td>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. </td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/58537 58537]</td><td>Framework » Web</td><td>WebFileUploader's Add button is now disabled when an upload is in progress.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/59914 59914]</td><td>Framework » Web</td><td>Exceptions in WebUploadedFile.Save are no longer intercepted so they can be handled by user code.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/20796 20796]</td><td>Framework » Windows</td><td>FolderItem.ModifcationDate/CreationDate now correctly offset the daylight savings time.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/34561 34561]</td><td>Framework » Windows</td><td>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.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/50476 50476]</td><td>Framework » Windows</td><td>System.MouseX/Y now reports the virtualized X, Y coordinates which matches macOS behavior when dealing with multiple monitors of different DPI scale factors.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/54398 54398]</td><td>Framework » Windows</td><td>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).</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/58605 58605]</td><td>Framework » Windows</td><td>Drawing an alpha Picture on to itself now works instead of raising a failed assertion.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/58611 58611]</td><td>Framework » Windows</td><td>When there's not enough memory to create a Picture we now raise an OutOfMemoryException instead of crashing.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/58674 58674]</td><td>Framework » Windows</td><td>Closing the window with an active editable cell on a Listbox no longer crashes.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/58683 58683]</td><td>Framework » Windows</td><td>MenuItem.Popup now accounts for multiple monitors with multiple DPI scale factors when popping up the menu.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/58697 58697]</td><td>Framework » Windows</td><td>URLConnection/Xojo.Net.HTTPSocket response header value is no longer incorrectly truncated if there exists a colon in the value itself.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/58819 58819]</td><td>Framework » Windows</td><td>BinaryStream.Read no longer crashes when reading > 3GB of data for 64-bit Windows builds.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/58949 58949]</td><td>Framework » Windows</td><td>Native HTMLViewer no longer hangs the app in an infinite exception loop if the window doesn't have a menubar.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/59270 59270]</td><td>Framework » Windows</td><td>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).</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/59732 59732]</td><td>Framework » Windows</td><td>Invalidating other controls in a Paint related event no longer prevents the other controls from invalidating/painting.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/59750 59750]</td><td>Framework » Windows</td><td>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.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/60487 60487]</td><td>Framework » Windows</td><td>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.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/60780 60780]</td><td>Framework » Windows</td><td>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.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/58924 58924]</td><td>Framework » iOS » Mobile</td><td>iOSCustomTableCell controls now responds correctly to dark mode changes.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/59113 59113]</td><td>Framework » iOS » Mobile</td><td>iOSTextField default text color is black again on iOS versions lower than 13.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/59542 59542]</td><td>Framework » iOS » Mobile</td><td>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.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/60853 60853]</td><td>Framework » iOS » Mobile</td><td>Setting iOSSegmentedControl.Value (within range) after removing/adding segments no longer raises an OutOfBoundsException.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/31888 31888]</td><td>Framework » macOS</td><td>Tooltips on controls embedded in a parent container and added within a TabPanel or PagePanel now shows correctly when switching between tabs/pages.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/36919 36919]</td><td>Framework » macOS</td><td>Listbox: Header height now dynamically adjusts to fit various font sizes.  This was already the case on Windows/Linux.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/52659 52659]</td><td>Framework » macOS</td><td>SerialDevice.WithName now returns a proper device that SerialConnection can connect to.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/54439 54439]</td><td>Framework » macOS</td><td>FolderItem: optimized child by index APIs to match performance before the switch to using the newer NSURL APIs.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/58903 58903]</td><td>Framework » macOS</td><td>Mac IDE: Loading internal plugins from a unicode path now works again.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/59275 59275]</td><td>Framework » macOS</td><td>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.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/59334 59334]</td><td>Framework » macOS</td><td>GraphicsPath drawing no longer incorrectly offset on HiDPI Retina displays.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/59660 59660]</td><td>Framework » macOS</td><td>Getting the FolderItem.ModificationDate (or ModificationDateTime) now immediately releases memory instead of waiting on the next event loop to do so.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/60575 60575]</td><td>Framework » macOS</td><td>DrawInto no longer crashes when drawing to a clipped Graphics.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/60591 60591]</td><td>Framework » macOS</td><td>Graphics: setting the FontUnit to Pixels, Inches or Millimeters now works correctly when drawing text on HiDPI displays.
 +
</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/61025 61025]</td><td>Framework » macOS</td><td>Our macOS framework no longer relies on the non-public API getsectiondata.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/59723 59723]</td><td>IDE</td><td>New project windows no longer show as all black when they first open on macOS.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/58765 58765]</td><td>IDE » Auto Complete</td><td>The word Selector now autocompletes when typing it in a declare.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/58993 58993]</td><td>IDE » Auto Complete</td><td>Autocomplete now matches "Allow" prefix instead of "Allows".</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/58994 58994]</td><td>IDE » Auto Complete</td><td>Added "Is" to autocomplete prefix list.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/59235 59235]</td><td>IDE » Code Editor</td><td>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).</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/59326 59326]</td><td>IDE » Code Editor</td><td>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.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/59372 59372]</td><td>IDE » Code Editor</td><td>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.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/48119 48119]</td><td>IDE » Debugger</td><td>Viewing Text types that contain a lot of content no longer hangs the IDE.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/56047 56047]</td><td>IDE » Debugger</td><td>Hex viewer no longer appears blurry at HiDPI.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/58665 58665]</td><td>IDE » Debugger</td><td>DatabaseRow contents can now be viewed in the debugger.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/59438 59438]</td><td>IDE » Debugger</td><td>Debugging objects, whose classes include Hidden attributes, no longer crashes.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/60057 60057]</td><td>IDE » Debugger</td><td>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.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/58609 58609]</td><td>IDE » FileIO</td><td>Images attached to ImageSets that have to be relocated when a project opens now save the location change properly in text projects.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/58999 58999]</td><td>IDE » FileIO</td><td>Checkbox inconsistency between the VisualState as seen in the IDE vs. Runtime is fixed.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/60980 60980]</td><td>IDE » FileIO</td><td>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.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/59666 59666]</td><td>IDE » Icon Editor</td><td>Fixed a bug where the IDE unexpectedly stalled when dragging a PDF file on the Icon Editor on macOS.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/60109 60109]</td><td>IDE » Icon Editor</td><td>Labels on the icon editor are now the right color on macOS light and dark mode.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/58629 58629]</td><td>IDE » Inspector</td><td>Method Edit Panel is now a little more intelligent about what methods are available to be overridden and the initially generated code.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/59388 59388]</td><td>IDE » Inspector</td><td>Overriding a method in a subclass now uses the capitalization from the super's class method name.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/59397 59397]</td><td>IDE » Inspector</td><td>Newly added Plugin controls now displays the Tooltip property in the Inspector instead of the deprecated HelpTag property.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/59926 59926]</td><td>IDE » Inspector</td><td>TextArea: Multiline property now shows up in Inspector.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/60093 60093]</td><td>IDE » Inspector</td><td>SegmentedButton: Tooltip and Tabstop property now appear in the Inspector.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/57533 57533]</td><td>IDE » Language Reference</td><td>Linux IDE: local Language Reference links now work correctly instead of doing nothing.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/58624 58624]</td><td>IDE » Language Reference</td><td>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.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/53168 53168]</td><td>IDE » Layout Editor</td><td>WebPopupMenu now renders properly in the layout editor on HiDPI screens.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/53903 53903]</td><td>IDE » Layout Editor</td><td>WebTextArea resizes live in the layout editor again.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/57989 57989]</td><td>IDE » Layout Editor</td><td>Linux IDE: Window Backdrop image is now properly drawn in the Layout Editor.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/60204 60204]</td><td>IDE » Layout Editor</td><td>Adding a Right layout constraint for iOSSegmentedControl no longer hangs the IDE.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/58566 58566]</td><td>IDE » Miscellaneous</td><td>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.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/58587 58587]</td><td>IDE » Miscellaneous</td><td>Removed the ability to export classes that are already external.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/59055 59055]</td><td>IDE » Miscellaneous</td><td>Added back the Help->QuickStart->Getting Started menu item.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/60393 60393]</td><td>IDE » Miscellaneous</td><td>Cleanup from previous debug-runs is now a little faster.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/60498 60498]</td><td>IDE » Miscellaneous</td><td>IDE now properly cleans up any plugin related resources that may have remained in the temporary folder.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/58662 58662]</td><td>IDE » Navigator</td><td>When cancelling a Navigator Filter, always force it to refresh.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/58679 58679]</td><td>IDE » Navigator</td><td>A Database project item is now usable for 64-bit builds instead of throwing NilObjectExceptions when accessed.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/59617 59617]</td><td>IDE » Navigator</td><td>IDE no longer crashes if you try to undo the addition of a Module while the navigator has the Classes group name selected.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/60452 60452]</td><td>IDE » Navigator</td><td>Navigator scrolling speed has been optimized.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/58564 58564]</td><td>IDE » Preferences</td><td>Changed "Menu short cuts" in Preferences window to "Menu shortcuts".</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/58759 58759]</td><td>IDE » Rendering</td><td>In event handlers, the CurrentMethodName constant no longer replaces underscores (“_”) in control names with periods (“.”).</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/58616 58616]</td><td>IDE » UI</td><td>IDE no longer shows a warning about building 32-bit apps in an iOS project on macOS 10.15+.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/59272 59272]</td><td>Installer</td><td>Debian installer now correctly looks for libwebkit2gtk dependencies.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/59225 59225]</td><td>Miscellaneous</td><td>RoundRectangle: OvalWidth and OvalHeight property values are now correctly converted to their new replacement properties (i.e. CornerWidth and CornerHeight).</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/45450 45450]</td><td>Plugin SDK</td><td>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).</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/55210 55210]</td><td>Plugin SDK</td><td>Updated EyeControl makefiles to be more current and appropriate for 64-bit builds.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/58512 58512]</td><td>Plugin SDK</td><td>REALUnregisterBackgroundTask now properly cleans up memory instead of leaking ~16 bytes worth.</td></tr>
 +
<tr><td colspan=3>161 Bug Fixes</td></tr>
  
 +
</table>
 +
<h3 class='typeheader'>Changes</h3>
 +
<table>
 +
 +
<tr><td>[http://feedback.xojo.com/case/58701 58701]</td><td>Database Plugins » SQLite</td><td>Updated SQLite plugin to 3.30.1.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/59490 59490]</td><td>Database Plugins » SQLite</td><td>Updated SQLite Plugin to 3.31.1.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/58925 58925]</td><td>Framework » All</td><td>Added new Crypto.HMAC function that takes Crypto.HashAlgorithms instead of the deprecated Crypto.Algorithm.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/59300 59300]</td><td>Framework » All</td><td>Deprecated DrawPolygon, use DrawPath instead.
 +
Deprecated FillPolygon, use FillPath instead.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/59984 59984]</td><td>Framework » All</td><td>HTMLViewer: changed our injected sendtoxojo Javascript function to sendToXojo to match Javascript naming convention.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/60594 60594]</td><td>Framework » All</td><td>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.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/17353 17353]</td><td>Framework » Web</td><td>When a WebToolbar is positioned at the bottom of a page, WebToolbarMenus now appear above the toolbar instead of below.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/17355 17355]</td><td>Framework » Web</td><td>WebToolbarMenus now show a downward caret after the caption to indicate that they contain a menu.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/18949 18949]</td><td>Framework » Web</td><td>CMD/CTRL-A now selects all rows in WebListBox.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/23571 23571]</td><td>Framework » Web</td><td>WebMenuItem now works more like the desktop MenuItem class.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/25373 25373]</td><td>Framework » Web</td><td>Add LastAddedRowIndex and LastRowIndex to WebPopupMenu.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/28615 28615]</td><td>Framework » Web</td><td>WebSegmentedControl now supports keyboard navigation.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/31967 31967]</td><td>Framework » Web</td><td>Contextual menus on web controls now appear at the cursor location.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/34369 34369]</td><td>Framework » Web</td><td>Control enabled state is now properly retained when the parent control's enabled state is changed.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/46413 46413]</td><td>Framework » Web</td><td>Radio Buttons can now be added to a WebRadioGroup at runtime.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/50961 50961]</td><td>Framework » Web</td><td>Added WebStorage API for local storage.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/55191 55191]</td><td>Framework » Web</td><td>Application.HandleURL now has a second object specifically for Response information.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/59447 59447]</td><td>Framework » Web</td><td>Web framework has been updated to support Bootstrap 4.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/59560 59560]</td><td>Framework » Web</td><td>Session History data is now stored on the server to allow data larger than 2048 bytes.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/59686 59686]</td><td>Framework » Web</td><td>Added WebListbox cell types.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/59771 59771]</td><td>Framework » Web</td><td>WebApplication now has a Sessions iterator.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/59864 59864]</td><td>Framework » Web</td><td>Modernizr library no longer reorders the body and head tags.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/59993 59993]</td><td>Framework » Web</td><td>WebUIControl Shown and Hidden events will now fire every time a visual control is shown or hidden.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/60144 60144]</td><td>Framework » Web</td><td>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.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/60195 60195]</td><td>Framework » Web</td><td>The WebTextField.Value property can now be set.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/60197 60197]</td><td>Framework » Web</td><td>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).</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/60333 60333]</td><td>Framework » Web</td><td>Added WebSession.Pages iterator.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/60334 60334]</td><td>Framework » Web</td><td>Added Controls iterator to WebContainer, WebDialog and WebPage.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/60342 60342]</td><td>Framework » Web</td><td>WebRadioButton.ValueChanged event now includes the selected button.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/60432 60432]</td><td>Framework » Web</td><td>WebContainerControl has been renamed back to WebContainer.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/60496 60496]</td><td>Framework » Web</td><td>WebFileUploader will now return a 400 BAD REQUEST response to the browser if the uploaded data is corrupt in some way.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/61052 61052]</td><td>Framework » Web</td><td>WebToolbarItem now has a Badge property.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/61059 61059]</td><td>Framework » Web</td><td>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
 +
</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/61140 61140]</td><td>Framework » Web</td><td>WebListbox.CellAction event has been renamed to CustomCellAction.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/61278 61278]</td><td>Framework » Web</td><td>WebListbox.Selected setter has been deferred to a later release.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/59373 59373]</td><td>IDE » Code Editor</td><td>Change Code Reformat script optimization from Low to High.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/59597 59597]</td><td>IDE » FileTypes Editor</td><td>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.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/60339 60339]</td><td>IDE » Graphics</td><td>The DefaultButton control now has white text instead of black when displayed in the Library and Navigator.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/58463 58463]</td><td>IDE » Miscellaneous</td><td>Duplicate method dialog for plugins is now more specific about where the problem occurred.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/58919 58919]</td><td>IDE » Miscellaneous</td><td>Added a button to close the Getting Started window.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/60110 60110]</td><td>IDE » Miscellaneous</td><td>Removed unused 256x256 and 128x128 icons from default web projects.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/50882 50882]</td><td>IDE » Plugins</td><td>macOS IDE now loads the native 64-bit plugin targets before attempting any other variations.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/60315 60315]</td><td>XojoScript</td><td>XojoScript: added ability to save compiled XojoScript object
 +
- Added XojoScript.Compile(optimizationLevel As OptimizationLevels) As MemoryBlock
 +
- Overloaded XojoScript.Run(cachedObject As MemoryBlock = Nil)</td></tr>
 +
<tr><td colspan=3>43 Changes</td></tr>
 +
 +
</table>
 +
<h3 class='typeheader'>New Items</h3>
 +
<table>
 +
 +
<tr><td>[http://feedback.xojo.com/case/52546 52546]</td><td>Compiler</td><td>Removed 32-bit macOS parts from the framework. Only 64-bit macOS apps can be built.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/58654 58654]</td><td>Compiler</td><td>MachO executables are now padded with an additional 2048 bytes of header space for 3rd party apps to poke into.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/10701 10701]</td><td>Framework » All</td><td>Support for creating PDF documents on macOS, Windows, Linux ( Desktop), Web and Console.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/11467 11467]</td><td>Framework » All</td><td>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.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/11665 11665]</td><td>Framework » All</td><td>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.
 +
</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/48140 48140]</td><td>Framework » All</td><td>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.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/58548 58548]</td><td>Framework » All</td><td>SerialConnection: Added new Parities enumeration values Space and Mark.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/58902 58902]</td><td>Framework » All</td><td>Windows/Linux: Updated frameworks to use latest version of ICU 65.1, this mainly affects DateTime, TimeZone and Locale.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/58933 58933]</td><td>Framework » All</td><td>Added String.Characters iterator. Just like Text.Characters this iterator will iterate through all the Characters (including grapheme clusters) and not individual codepoints.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/59339 59339]</td><td>Framework » All</td><td>Widened Web EmailAddressField.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/59344 59344]</td><td>Framework » All</td><td>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).
 +
</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/59486 59486]</td><td>Framework » All</td><td>Added the following convenience methods to PopupMenu:
 +
 +
— SelectRowWithValue(targetValue As String)
 +
— SelectRowWithTag(targetValue As Variant)</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/59550 59550]</td><td>Framework » All</td><td>Added Color.ToString and FromString methods to match equivalent API 2.0 methods on other datatypes.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/59680 59680]</td><td>Framework » All</td><td>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.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/59936 59936]</td><td>Framework » All</td><td>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
 +
</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/60212 60212]</td><td>Framework » All</td><td>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
 +
</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/61021 61021]</td><td>Framework » All</td><td>Fixed text size and truncation when printing reports on PDF Document.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/54117 54117]</td><td>Framework » Linux</td><td>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.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/12822 12822]</td><td>Framework » Web</td><td>WebListbox now supports Single, Multiple and No Selection.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/13417 13417]</td><td>Framework » Web</td><td>Added WebComboBox control.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/13809 13809]</td><td>Framework » Web</td><td>XojoWebButton now has Cancel and Default properties just like it does on the desktop. </td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/14542 14542]</td><td>Framework » Web</td><td>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.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/15365 15365]</td><td>Framework » Web</td><td>WebListbox columns are now sortable.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/15601 15601]</td><td>Framework » Web</td><td>WebButtons now have a Cancel option which causes the button to fire when the ESC key is pressed.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/15639 15639]</td><td>Framework » Web</td><td>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.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/16038 16038]</td><td>Framework » Web</td><td>WebLinks can now have the appearance of a button.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/16749 16749]</td><td>Framework » Web</td><td>Pressing Return or ESC on a page or dialog which contains a Default or Cancel button will now automatically fire their Pressed events respectively.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/17424 17424]</td><td>Framework » Web</td><td>WebMapViewer now has support for Directions.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/17460 17460]</td><td>Framework » Web</td><td>WebButton now has a Press method which directly fires the Pressed event.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/18047 18047]</td><td>Framework » Web</td><td>WebMoviePlayer playback position can now be set precisely by specifying the position in fractions of a second.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/18048 18048]</td><td>Framework » Web</td><td>Added Read-Only Duration property to WebMoviePlayer.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/18068 18068]</td><td>Framework » Web</td><td>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.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/18181 18181]</td><td>Framework » Web</td><td>Added a DatePicker control to the web framework.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/18991 18991]</td><td>Framework » Web</td><td>Added UpdateBrowser method which pushes the current state of the control to the browser even if in the middle of a long running process.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/19812 19812]</td><td>Framework » Web</td><td>WebListbox now supports the selection type of "None".</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/19813 19813]</td><td>Framework » Web</td><td>Added WebListBox.SelectedRowColor for setting the selection color.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/23041 23041]</td><td>Framework » Web</td><td>Web projects now have PagePanel and TabPanel controls.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/23071 23071]</td><td>Framework » Web</td><td>The browser contextual menu is now shown if you don't assign your own page level contextual menu.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/26822 26822]</td><td>Framework » Web</td><td>HTMLViewer source can now be retrieved using "var code as String = EvaluateJavascript("document.html.outerhtml”)”.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/29417 29417]</td><td>Framework » Web</td><td>WebMenuItems can now include separators.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/32486 32486]</td><td>Framework » Web</td><td>The WebListbox now supports lazy loading data.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/33658 33658]</td><td>Framework » Web</td><td>Added a WebAudioPlayer control.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/35643 35643]</td><td>Framework » Web</td><td>WebMapViewer now supports StreetView.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/37388 37388]</td><td>Framework » Web</td><td>Contextual menus can now be added to controls in their Opening event.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/38067 38067]</td><td>Framework » Web</td><td>WebPopupMenus now use WebMenuItems under the hood which have a disabled property.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/40939 40939]</td><td>Framework » Web</td><td>WebTextArea now has a MaximumCharactersAllowed property for limiting the number of characters a user can enter.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/46795 46795]</td><td>Framework » Web</td><td>Web Framework now includes Bootstrap 3 controls.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/49714 49714]</td><td>Framework » Web</td><td>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.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/50746 50746]</td><td>Framework » Web</td><td>Added a command-line option (uploadpath) for overriding the location where upload temporary files will be created.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/59837 59837]</td><td>Framework » Web</td><td>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.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/59986 59986]</td><td>Framework » Web</td><td>Added Activated and Deactivated events to Session which fires when the app's tab or window is shown or hidden, depending on browser support.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/59988 59988]</td><td>Framework » Web</td><td>Session.UserDisconnected now fires when the web browser is closed.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/60007 60007]</td><td>Framework » Web</td><td>WebListbox underlying control now uses its Bootstrap 4 theme.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/60067 60067]</td><td>Framework » Web</td><td>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.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/60236 60236]</td><td>Framework » Web</td><td>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.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/60370 60370]</td><td>Framework » Web</td><td>WebMessageDialog is now available in the Library.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/60652 60652]</td><td>Framework » Web</td><td>Removed WebMoviePlayer.PlaybackReadyThroughEnd event.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/61043 61043]</td><td>Framework » Web</td><td>WebListbox now has a Pressed event.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/61202 61202]</td><td>Framework » Web</td><td>WebListBox.NoRowsMessage no longer has a default value.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/52330 52330]</td><td>Framework » macOS</td><td>Updated HTMLViewer on macOS to use WKWebView.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/54603 54603]</td><td>Framework » macOS</td><td>Updated the look of Listbox headers to match macOS behavior.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/22796 22796]</td><td>IDE » Layout Editor</td><td>The basic button control in the Library now has the same name and default caption across all platforms.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/51404 51404]</td><td>IDE » Layout Editor</td><td>All controls now use the same base Bootstrap theme.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/61004 61004]</td><td>IDE » Layout Editor</td><td>New TextAreas added to the layout now defaults to Characters for the UnicodeMode property.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/56394 56394]</td><td>IDE » Navigator</td><td>Added a new “Import” entry for the Module contextual menu, so it can import several Classes, Modules, Interfaces… at once.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/60715 60715]</td><td>IDE » Scripting</td><td>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.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/43531 43531]</td><td>IDE » Style Editor</td><td>WebStyles can now accept any CSS value.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/42922 42922]</td><td>IDE » Xojo Cloud</td><td>Xojo Cloud apps now each have their own domains.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/60718 60718]</td><td>Miscellaneous</td><td>Modernized Spotlight importer on macOS for Xojo project files.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/59076 59076]</td><td>Plugin SDK</td><td>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.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/60509 60509]</td><td>Reporting</td><td>Now it is possible to print Reports to PDFDocument instances.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/59361 59361]</td><td>XojoScript</td><td>Updated XojoScript to support API 2.0 feature set.</td></tr>
 +
<tr><td colspan=3>72 New Items</td></tr>
 +
 +
</table>
 +
<h3 class='typeheader'>Docs and Examples</h3>
 +
<table>
 +
 +
<tr><td>[http://feedback.xojo.com/case/58769 58769]</td><td>Documentation</td><td>Cleaned up various doc pages regarding usage of Application.Copyright, Application.Description and Application.Version.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/58804 58804]</td><td>Documentation</td><td>Added missing tables to HiDPI doc page (https://docs.xojo.com/UserGuide:HiDPI_Support) to indicate which properties are valid for the various picture types.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/60513 60513]</td><td>Documentation</td><td>UserGuide:Deploy Web App to Linux topic updated with link to Load Balancing XDC video.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/59603 59603]</td><td>Documentation » Miscellaneous</td><td>Updated Serial Device Tutorial so that proper control name (DeviceListUpdater) is used in code.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/61153 61153]</td><td>Documentation » Quick Start Guide</td><td>Added new Web Tutorial and Quickstart PDFs to the documentation folder.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/58941 58941]</td><td>Documentation » User's Guide</td><td>General Control Set page (https://docs.xojo.com/Control_Sets) in docs now has links to both desktop and web control set doc pages.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/60031 60031]</td><td>Examples</td><td>Removed unused variables/code in GradientExample project.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/60164 60164]</td><td>Examples</td><td>WordCounterGUI example now uses Shell.Completed event instead of ResultsReturned event.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/36500 36500]</td><td>Language Reference » Documentation</td><td>Added some clarifications to array section of Var doc page.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/55499 55499]</td><td>Language Reference » Documentation</td><td>Graphics.FontUnit and TextUnit pages now note that this is only available for Desktop projects.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/57159 57159]</td><td>Language Reference » Documentation</td><td>Cleaned up sample code on Double.ToText and Single.ToText pages.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/57160 57160]</td><td>Language Reference » Documentation</td><td>Cleaned up formatting problem in sample code for Xojo.Core.Date.ToText.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/57554 57554]</td><td>Language Reference » Documentation</td><td>Correct code error in sample code on Date.TotalSeconds page.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/57826 57826]</td><td>Language Reference » Documentation</td><td>ListBox.ColumnAlignmentAt page now indicates that this method uses the ListBox.Alignments enumeration.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/57835 57835]</td><td>Language Reference » Documentation</td><td>Added clarification about exceptions to SQLiteDatabase and DatabaseException pages.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/57924 57924]</td><td>Language Reference » Documentation</td><td>Added missing page for PopupMenu.RowTagAt.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/58180 58180]</td><td>Language Reference » Documentation</td><td>URLConnection.ResponseHeaders page now correctly shows iterator is a Pair.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/58513 58513]</td><td>Language Reference » Documentation</td><td>Fixed typo in RowSet.EditRow description.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/58543 58543]</td><td>Language Reference » Documentation</td><td>Fixed error in sample code on ListBoxRow.Columns page.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/58588 58588]</td><td>Language Reference » Documentation</td><td>Fixed type in syntax area of ColorGroup.AddColorPair page.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/58606 58606]</td><td>Language Reference » Documentation</td><td>Fixed sample code errors on RowSet page.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/58637 58637]</td><td>Language Reference » Documentation</td><td>Fixed a typo in sample code on String.ChrByte page.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/58638 58638]</td><td>Language Reference » Documentation</td><td>Fixed typo in sample code on SQLiteDatabase page.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/58706 58706]</td><td>Language Reference » Documentation</td><td>Fixed two bugs in example code for SQLite on the Database.Connect page.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/58729 58729]</td><td>Language Reference » Documentation</td><td>Updated docs to indicate that Picture.ImageAt is the replacement for Picture.IndexedImage.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/58803 58803]</td><td>Language Reference » Documentation</td><td>Doc pages for ContainerControl.EmbedWithin/EmbedWithinPanel indicate that the Top value of the ContainerControl is added to what is specified in the method call.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/58895 58895]</td><td>Language Reference » Documentation</td><td>Updated ColorGroup doc page to note Operator_Convert and Operator_Compare abilities.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/58958 58958]</td><td>Language Reference » Documentation</td><td>Rect.Contains page now also lists the declaration for Rect.Contains(X As Double, Y As Double) As Boolean.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/58995 58995]</td><td>Language Reference » Documentation</td><td>TextEdit.InsertionPoint page has been updated to be InsertionPosition as that is the actual method name added in API 2.0.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/59130 59130]</td><td>Language Reference » Documentation</td><td>Fixed sample code on MoviePlayer.OpenURL page.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/59208 59208]</td><td>Language Reference » Documentation</td><td>Fixed code example that adds a menu to the BevelButton.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/59216 59216]</td><td>Language Reference » Documentation</td><td>Fixed a few bugs in the code examples at the bottom of Single.ToText and Double.ToText pages.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/59238 59238]</td><td>Language Reference » Documentation</td><td>Removed ListBox.ColumnFromPoint and RowFromPoint pages from docs since those methods do not exist in the framework.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/59293 59293]</td><td>Language Reference » Documentation</td><td>Removed unnecessary While loop in SQLiteDatabase page sample code.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/59318 59318]</td><td>Language Reference » Documentation</td><td>FigureShape methods Add, AddAt, RemoveValue and RemoveAt have been updated to their actual names: AddCurve, AddCurveAt, RemoveCurve and RemoveCurveAt respectively.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/59333 59333]</td><td>Language Reference » Documentation</td><td>Graphics.AntiAliasMode page now properly shows the type as Graphics.AntiAliasModes enum.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/59345 59345]</td><td>Language Reference » Documentation</td><td>Window.Bounds sample code now uses Rect rather than Realbasic.Rect.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/59355 59355]</td><td>Language Reference » Documentation</td><td>Updated sample code on RectShape page to use BorderOpacity.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/59363 59363]</td><td>Language Reference » Documentation</td><td>GraphicsPath page now shows the correct CurrentPoint property.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/59368 59368]</td><td>Language Reference » Documentation</td><td>On RegEx page, updated notes to clarify that \b matches a word boundary and [\b] matches a backspace.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/59399 59399]</td><td>Language Reference » Documentation</td><td>Corrected sample code on NthField page.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/59406 59406]</td><td>Language Reference » Documentation</td><td>Added “Is” to Operator Precedence table.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/59455 59455]</td><td>Language Reference » Documentation</td><td>Updated link to official SQLite encryption docs.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/59456 59456]</td><td>Language Reference » Documentation</td><td>Updated Timer.CallLater doc page to make it clearer that the delegate for passing a parameter must use a parameter of type Variant.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/59477 59477]</td><td>Language Reference » Documentation</td><td>Now using correct enum in sample code on ListBox.Sort page.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/59536 59536]</td><td>Language Reference » Documentation</td><td>The IDE Scripting Project Commands page (https://docs.xojo.com/UserGuide:IDE_Scripting_Project_Commands) now shows that “Application Identifier” can be used with the PropertyValue method.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/59574 59574]</td><td>Language Reference » Documentation</td><td>The Boolean.ToString and FromString methods are now documented.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/59577 59577]</td><td>Language Reference » Documentation</td><td>Color.RGBA has been marked as deprecated. Color.RGB is the replacement function.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/59583 59583]</td><td>Language Reference » Documentation</td><td>TabPanel page now properly shows that the AddTab method is used to add tabs.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/59600 59600]</td><td>Language Reference » Documentation</td><td>Picture.IndexedImage sample code updated to use AddRow method for array.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/59620 59620]</td><td>Language Reference » Documentation</td><td>GraphicsPath.AddCurveToPoint no longer displays an incorrect restricted platform message.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/59658 59658]</td><td>Language Reference » Documentation</td><td>The missing closing parenthesis in the example code on the Array.Count page has been added.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/59687 59687]</td><td>Language Reference » Documentation</td><td>Updated XMLNode.XQL page with correct link to W3Schools Xpath Tutorial URL. </td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/59688 59688]</td><td>Language Reference » Documentation</td><td>Fixed typo on String.IndexOfBytes page.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/59690 59690]</td><td>Language Reference » Documentation</td><td>The last parameter of both Color.SelectedFromDialog as well as the second FolderItem constructor are now indicated as being optional.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/59721 59721]</td><td>Language Reference » Documentation</td><td>Added explanation the notes for RectControl.ContextualMenuAction about when to return true or false.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/59741 59741]</td><td>Language Reference » Documentation</td><td>Fixed a typo in the SSLSocket example code.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/59752 59752]</td><td>Language Reference » Documentation</td><td>Updated sample code for FolderItem.Exists.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/59791 59791]</td><td>Language Reference » Documentation</td><td>Replaced sourceString with stringVariable for arguments for String.Middle, String.Left, String.Replace and String.ReplaceLineEndings.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/60019 60019]</td><td>Language Reference » Documentation</td><td>Updated sample code on Pop page to use FolderItem iterator.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/60143 60143]</td><td>Language Reference » Documentation</td><td>Searching for “darkmode” in the Docs Wiki now redirects to the UserGuide:Dark Mode topic.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/60354 60354]</td><td>Language Reference » Documentation</td><td>WebFileUploader.UploadError now has more information in the Notes describing what could cause it and what the values can contain.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/60454 60454]</td><td>Language Reference » Documentation</td><td>Added Encoding property to list of properties on TextOutputStream page.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/60486 60486]</td><td>Language Reference » Documentation</td><td>Fixed a small error in the sample code on the Sound page.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/60569 60569]</td><td>Language Reference » Documentation</td><td>Added additional sample code to EmailAttachment page to demonstrate MIMEType usage.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/60728 60728]</td><td>Language Reference » Documentation</td><td>The SQLiteDatabase.AddDatabase password parameter is no longer documented as optional.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/60822 60822]</td><td>Language Reference » Documentation</td><td>The second example has been updated to use TextShape rather than StringShape.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/60836 60836]</td><td>Language Reference » Documentation</td><td>The example code for URLConnection.ResponseHeaders has been modified to reflect that the headers are pairs.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/60864 60864]</td><td>Language Reference » Documentation</td><td>Shell.Result is now listed as read-only.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/60981 60981]</td><td>Language Reference » Documentation</td><td>The Postgres.Connect page no longer incorrectly indicates that it returns a boolean.</td></tr>
 +
<tr><td>[http://feedback.xojo.com/case/61375 61375]</td><td>Language Reference » Documentation</td><td>The formatting issues with the TextArea.SelectionAlignment entry in the Language Reference have been resolved.</td></tr>
 +
<tr><td colspan=3>71 Docs and Examples</td></tr>
 +
</table>
  
 
[[Category:Release Notes]]
 
[[Category:Release Notes]]

Latest revision as of 13:34, 26 August 2020

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

Changes

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: https://icons.getbootstrap.com

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 (https://docs.xojo.com/UserGuide:HiDPI_Support) 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 (https://docs.xojo.com/Control_Sets) 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 (https://docs.xojo.com/UserGuide:IDE_Scripting_Project_Commands) 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