2018r3

Xojo 2018 Release 3, with over 120 changes and improvements, was released on October 23rd, 2018.

Major changes include:

  • macOS Mojave Dark Mode support for the Xojo IDE and your own apps

  • Windows improvements:

    • Now using native Label control for better performance

    • More accurate text rendering

  • Incremental Compilation for 64-bit and ARM enables faster debug builds

  • iOS projects now work with Xcode 10 and iOS 12 Simulator

  • SQLite updated to 3.24.0

  • New Documentation Wiki

Bug fixes (79 cases)

Case

Area

Description

15507

Build

Made it so that nonrelease and stage code are retrieved from bulit-in constants. You can access these as App.NonReleaseVersion and App.StageCode. Note that CFBundleVersion remains unchanged.

53515

Build

Fixed an issue where iOS projects couldn't be built on macOS 10.14.

53695

Build

A constant in Major Version, Minor Version, Bug Version or Non Release Version no longer causes a compilation error when then compiling for any target. Note there are related issues still to solve noted in case 53709 and 53710.

11079

Build Pipeline (IDE)

Missing external scripts are reported like other missing files.

53197

Compiler

Currency operations with Integers are now treated as Currency type.

53286

Compiler

Addressed an issue where a project with a large number of classes targeting macOS 64-bit could fail with a linker error.

53031

Crashes & Assertions » IDE Unhandled Exception

Undoing a delete no longer raises a NilObjectException.

15632

Database Plugins

Field schema skips deleted columns when returning the field list on PostgreSQL.

37806

Database Plugins

PostgreSQLDatabase no longer blocks other threads while executing a prepared statement, assuming the MultiThreaded property is set of course.

45928

Database Plugins

MySQLCommunityServer: TinyInt columns now returns negative values correctly for prepared statements.

53064

Database Plugins

MySQLCommunityServer: Getting the StringValue from a DatabaseField no longer returns garbage for unsigned smallints.

23056

Debugger

Singles display with more precision in the debugger so small differences in magnitude are shown.

52902

Debugger

Ptr's properly shows as 32 or 64-bit depending on the target.

53325

Debugger

Debugging static variables for 64-bit Window targets no longer crashes.

41715

Framework » All

Picture.RGBSurface no longer leaks a reference in Console apps.

53126

Framework » All

Using RectControl.DrawInto while a ContainerControl is being constructed now works again.

49221

Framework » Linux

PushButton Action event is now correctly raised on multi-touch touchscreens.

51999

Framework » Linux

TextField no longer ignores initial font size and style.

52311

Framework » Linux

PopupMenu control no longer automatically resizes to fit content.

53121

Framework » Linux

Controls on an initially hidden Groupbox are no longer incorrectly positioned.

53231

Framework » Linux

Text color on Labels now honor the initial TextColor property instead of defaulting to the system text color.

53271

Framework » Linux

Controls on a TabPanel are now offset correctly on open.

53414

Framework » Linux

Drawing Ovals, with a fractional width and/or height, now works correctly.

53509

Framework » Linux

TextField's selected text retains the default selection text color as long as the text remains the default black.

36834

Framework » Macintosh (Cocoa)

Fixed a Mac toolbar crash which could occur when removing an item or changing properties around the time of a mouse click.

42025

Framework » Macintosh (Cocoa)

On macOS, windows with their FullScreen property set to False can no longer be made full screen by the user.

52409

Framework » Macintosh (Cocoa)

Listbox header now uses the correct text color.

53241

Framework » Macintosh (Cocoa)

Worked around a crash where macOS sometimes cannot load the print progress window when the application is run from some SMB shares.

53340

Framework » Macintosh (Cocoa)

Listbox vertical scrollbar thumb can now extend all the way to the bottom of the Listbox again when the Listbox is embedded within a ContainerControl.

31388

Framework » Windows

BevelButton focus ring no longer overlaps the caption.

38198

Framework » Windows

Non-transparent ContainerControls now correctly paints their BackColor (if set).

52217

Framework » Windows

Optimized Windows UI performance by reducing the use of Direct2D drawing where possible, for example we are now using a native Win32 Label instead of relying on Direct2D.

52917

Framework » Windows

Even though an invisible control typically doesn't receive paint events, there are situations that can trigger it but we no longer invoke the Paint event in those situations.

52928

Framework » Windows

A Transparent control (like a Canvas) on a GroupBox, no longer flickers when the Transparent control repaints.

52947

Framework » Windows

Calling ClearRect on a clipped graphics no longer prevents further drawing.

53179

Framework » Windows

Plugin SDK: Draw/FillPolygon graphics functions now correctly respect the REALSetGraphicsOrigin settings on Windows.

53233

Framework » Windows

Fixed a DrawString miscalculation when printing at > 96 DPI.

53249

Framework » Windows

Dragging a MessageDialog window from one monitor to another with different scale factors no longer shrinks the dialog size to 0.

53273

Framework » Windows

A MoviePlayer on a ContainerControl no longer remains hidden on Windows when it should be visible.

53361

Framework » Windows

Some controls were not being clipped properly when DrawInto was used. This affected the Windows IDE in that some controls were overdrawing their bounds (like the Label control).

53485

Framework » Windows

Listbox.CellBackgroundPaint/CellTextPaint drawing is now offset correctly when DrawInto is used.

53592

Framework » Windows

Fixed an issue where editing the name of a method would crash the Windows IDE when the method name field lost focus.

53641

Framework » Windows

Listbox: Overwriting the cell content in CellTextPaint no longer ends up in an infinite invalidation/paint loop.

48804

IDE

Progress dialogs should be visible again.

52984

IDE

External method declarations no longer handle ByVal incorrectly.

52988

IDE

Fixed a typo in a connect to IDE debugging error message.

53026

IDE

Lower panels for find, errors and messages are visible again. The messages pane was changed to a text area to simplify the code, to make Linux, Windows and MacOs code paths the same, and to gain some speed when users use high volumes of DebugLog calls.

53343

IDE

You can now use attribute values that are signed numbers.

38465

IDE » Auto Complete

Custom menu item properties are shown in autocomplete.

45400

IDE » Auto Complete

Autocomplete properly completes parameters that follows the first one with a default value.

53247

IDE » Code Editor

Tick marks and line numbers in the editor gutter are now the same color as the user selected source code color.

53007

IDE » Debugger

Removal of the debug app is using the native file manager API on macOS and so should be much quicker on all volume types.

53013

IDE » FileIO

Importing an image set saved as text works better, although there are still ways in which there can be issues: 1) the save info is peculiar to the system it is created on - so moving from one machine to another (i.e. Mac to Windows) may result in this not being useful; 2) the fullpath is not cross platform so moving from one machine to another (i.e. mac to windows) may result in this not being useful; 3) the relative path may be different from the project you are importing the item from so it is still possible that image sets may not import the various images that make them up.

52829

IDE » Find & Replace

Searching for a property value that's in a member of a control array behaves properly when you search then select that instance.

53222

IDE » Find & Replace

Search and replace of method declarations properly updates the Navigator to avoid exceptions.

53093

IDE » Image Editor

Dropping in a 2x or 3x image when you have missing images won 't reset the base sizes unless the 2x or 3x would be of a different base size.

52887

IDE » Inspector

Subclasses of PushButtons no long ignore their height as set in the Inspector Behavior.

52945

IDE » Inspector

The properties reported as being sometimes misplaced (width, left, top, and height) are in the correct spots in the Inspector.

52948

IDE » Inspector

Return values that are arrays - single or multi dimensional - are handled properly.

53236

IDE » Language Reference

#If and other directives like it work better in the side bar of the LR and when clicked on in various examples in the LR.

52579

IDE » Layout Editor

Control locking changes get undone / redone and are visible in the locking Inspector.

53196

IDE » Layout Editor

Caption no longer overlays close button on popovers.

52507

IDE » Library

Custom web controls using the Web SDK scale their assigned icon for the large icon view in the Library.

53190

IDE » Menu Editor

Converting a menu from being a member of a menu to a top level menu entry shows the right properties.

51835

IDE » Miscellaneous

Windows IDE: Adding a new tab (when none exists) no longer causes artifacts to appear temporarily. This was mainly seen when running a project as that would add a new tab.

52486

IDE » Miscellaneous

Text selection color is retained as expected.

52589

IDE » Miscellaneous

Reloading an iOS project no longer results in a saving will lose data warning when saving.

52647

IDE » Miscellaneous

LLVM Linking errors now make more sense if more than one is reported at a time.

52700

IDE » Miscellaneous

Tooltip shows the location of all kinds of external items not just classes and modules.

52949

IDE » Miscellaneous

Windows IDE no longer flickers when switching between tabs.

53341

IDE » Miscellaneous

Implement Interface window uses the right text color for the selected row.

53554

IDE » Miscellaneous

ActiveX generated code no longer has missing #endif lines.

51892

IDE » Navigator

Sharpen up the orb for scope backgrounds on selected row in the Navigator when on HiDPI screens.

51944

IDE » Navigator

Drag image in Navigator is HiDPI-aware and draws less fuzzy on HiDPI screens.

53246

IDE » Preferences

Inactive text shows up as expected.

52234

IDE » Profiler

Profiling 64-bit Console/Web apps now works.

52597

IDE » Report Editor

Fixed a Report Editor NilObjectException.

53368

IDE » Scripting

FileDescription (and many other app settings) can be set from an IDE script. Refer to the list attached to this case or the IDE Scripting docs for PropertyValue.

52637

Remote Debugger Stub

Desktop Remote Debugger Stub correctly deletes the previous app when decompressing a new version again.

Changes (18 cases)

Case

Area

Description

52891

Database Plugins

SQLite plugin has been updated to 3.24.0.

52448

Framework » All

Setting a windows bounds using a rectangle no longer circumvents MinWidth and MinHeight.

52534

Framework » All

Removed Window.Graphics and Canvas.Graphics properties. Use the Paint event for drawing.

52819

Framework » Macintosh (Cocoa)

On macOS Labels, TextFields and TextAreas are now set to the automatic system colors to get the correct appearance on light and dark modes when text is set to opaque black (0,0,0,255) and backgrounds set to opaque white (255, 255, 255, 255).

52845

Framework » Macintosh (Cocoa)

On macOS, FillColor, TextColor and FrameColor now map to system colors so custom controls can do the right thing in dark mode.

53173

IDE

Messages panel uses the same font and size as the code editor.

45376

IDE » AutoLayout

The IDE tries to make a better guess at which edge to use when you select the relative to item. If you're editing the top constraint then the top of the relative to item will be selected. If you edit the bottom then the bottom will be selected. And so on.

53009

IDE » Code Editor

Code editor better supports dark mode and retains its functionality when a user loads a specific color theme.

53136

IDE » Code Editor

Clean gremlins also replaces characters like an non-breaking space (Windows = alt+space, macOS = option+space) as gremlins and replace them with the chosen replacement character.

53171

IDE » Code Editor

When you select a method from the method popup if it's derived from a super class the suitable call to super will be inserted much like it currently is for constructors and destructors.

53262

IDE » Code Editor

IDE font settings take a scale so code measuring text size (height and width) is much more accurate, especially on Windows.

53080

IDE » Error & Warning Panel

When showing warnings and errors after analyzing a project the panel its titled *Warnings & Errors”.

52738

IDE » FileIO

For the situation for when you don 't have a license installed (but do have licenses) and hit save you can download licenses and hit save again and the project will save as in the right format and where expected.

53226

IDE » FileIO

Trying to import a module as external that contains other classes and/or modules will display a dialog saying that this can 't be done and the item will instead be internally added to the project.

5315

IDE » Miscellaneous

As you select different colors in the code editor preferences pane the code editors showing are updated so you can see the effect of the color selections right away. Note that they do not change live as you select different colors in the color picker itself - you have to select the color and select OK in the color picker for the change to occur.

15432

IDE » Miscellaneous

You can now copy text from Messages panel.

52896

IDE » Miscellaneous

You can multiselect several warnings in the bottom Errors panel.

52130

Miscellaneous

Console Unhandled exception message now ends with a newline.

New items (11 cases)

Case

Area

Description

51391

Compiler

Session-based incremental compilation is now available for LLVM/64-bit targets. This means each Run after the first only recompiles what has changed, leading to faster debug times.

53144

Compiler

Enabled Xcode 10 signing and iOS 12 simulator support.

52391

Framework » Macintosh (Cocoa)

Mac Framework now supports macOS 10.14 Mojave Dark Mode.

53015

Framework » Macintosh (Cocoa)

Added a new AppearanceChanged event which fires when a user switches between Light and Dark mode on macOS Mojave.

52669

Framework » Web

The minimum available sockets are now configurable using the command-line option --minsockets for standalone web apps.

51337

Framework » Windows

Updated text rendering on Windows to use the GDI-compatible text renderer, which matches the text for Win32 controls for better consistency.

52798

Framework » Windows

Label controls on Windows now use the native Win32 control.

52973

Framework » iOS

IDE now adds a default plist entry for NSCameraUsageDescription.

53120

IDE » Build Automation

IDEs launched with the environment variable XOJO_AUTOMATION set to TRUE will now skip the Feedback Crash dialog and the Restore Previous Project dialog so the build automation process doesn't get paused.

52735

IDE » Code Editor

There's a new contextual menu available that will write a single #pragma unused line for each parameter to a method, event or computed property setter.

52912

IDE » Miscellaneous

Added SupportsDarkMode desktop project property.

Docs and examples (13 cases)

Case

Area

Description

1266

Documentation

Clarified usage of constants for AddressBookData.

53110

Documentation

Updated PostgreSQLDatabase.ReceivedNotification page to indicate the Extra parameter can receive a payload from another system.

53389

Documentation

Window.MenuBarVisible notes now correctly describe behavior when False (OFF).

53593

Documentation

Added missing EndOfLine.OSX property to EndOfLine docs.

52432

Documentation » User's Guide

System.DebugLog pages now note that you can use the Messages panel in the IDE to view the log output.

52366

Examples

Set Windows build to x86-64 in ScriptImaging XojoScript project.

52367

Examples

Fixed Label size in Interactive Shell example.

52900

Examples

Fixed EELogo path location in Eddie's Electronics web app.

53529

Examples

Fixed Declares in Platform-Specific/Windows/SetWindowIcon example for 64-bit.

53696

Examples

Fixed transparency for Examples/Desktop/ContainerControls/ContainerControlExample.

51569

Language Reference » Documentation

Removed extra “Text” in list of types that work with SortWith.

52697

Language Reference » Documentation

BitwiseAnd, BitwiseOr and BitwiseXor pages added since they behave differently than the similar methods in Bitwise module.

53644

Language Reference » Documentation

TargetMachO shown in docs.