2016r4

Released December 6th, 2016.

This Xojo release has over 170 changes and improvements, with a major focus on Windows support and the IDE.

  • Windows HiDPI support is finalized.

  • Windows Graphics subsystem now uses Direct2D and DirectWrite for improved drawing speed and modern graphics support.

  • Windows builds now have a setting to automatically include Universal Windows Runtime DLLs.

  • You can now easily convert Pictures (in Desktop and Web projects) to Image Sets.

  • Improved Extract Method refactoring tool.

  • Navigator Filter search improvements.

  • Improved IDE tab handling with Back/Forward support.

  • WebContainers can now have Horizontal and/or Vertical scrollbars.

  • Faster Xojo Cloud uploading.

  • Added WebListBox.CellPicture method.

  • Introspection now works with Interface types.

  • Beta of new IDE Communication protocol for automating Xojo builds.

Bug fixes (130 cases)

Case

Area

Description

45595

 

Lingua is able to save over existing files again.

45305

Build

Icons generated by the IDE again have the correct color information.

45412

Build

The IDE no longer generates code to set a computed property that has no setter.

45711

Build

iOS applications now launch correctly in the Xcode 8 simulators.

45787

Build

Localization behaves as expected again on macOS Sierra. The CFBundeDevelopmentRegion value is no longer set to a local specific language.

44201

Crashes & Assertions > IDE Unhandled Exception

Fixed the “scratch dir root” NilObjectException that can sometime occur.

44627

Crashes & Assertions > IDE Unhandled Exception

A situation on OS X that could occur occasionally when trying to debug an application no longer causes the IDE to report a NilObjectException. Instead the IDE reports that the application could not be launched.

44696

Crashes & Assertions > IDE Unhandled Exception

Should no longer get a NilObjectException when an update occurs for the Feedback handler.

44986

Crashes & Assertions > IDE Unhandled Exception

SVG's are NOT usable as image elements, so the IDE now properly rejects them.

44988

Crashes & Assertions > IDE Unhandled Exception

Fixed a NilObjectException that could occur if you add a toolbar button, undo that addition, then add another toolbar button.

45131

Crashes & Assertions > IDE Unhandled Exception

Fixed a NilObjectException that could occur with some corrupt project files.

45300

Crashes & Assertions > IDE Unhandled Exception

Trying to write a localized string set to a file that is locked by another app no longer crashes the IDE.

45323

Crashes & Assertions > IDE Unhandled Exception

A volume going offline as a file is dragged should no longer cause an IOException.

45339

Crashes & Assertions > IDE Unhandled Exception

Right-clicking on the Event Handlers item of a control set in the Navigator no longer causes a NilObjectException.

45378

Crashes & Assertions > IDE Unhandled Exception

Older IDEs were not reloading image items properly when they had to use relative paths under some circumstances.

45472

Crashes & Assertions > IDE Unhandled Exception

Custom table cells cannot be embedded in custom table cells.

45569

Crashes & Assertions > IDE Unhandled Exception

IDE no longer raises an illegal cast exception with an iOSContainer that has been created by inserting a generic class then changing its super to iOSContainerControl.

45635

Crashes & Assertions > IDE Unhandled Exception

Make it so if a person moves/deletes the app that was just built in a postbuild script we no longer fall over trying to run the app.

46087

Crashes & Assertions > IDE Unhandled Exception

Reloading this project no longer causes Invalid Argument Exceptions

25275

Framework > All

ListBoxes with headers redraw as expected in the IDE when you alter the ColumnCount or InitialValue properties in the Inspector.

44247

Framework > All

Calling constructors via introspection now always invokes the correct one.

44556

Framework > All

System.NetworkInterfaceCount and System.GetNetworkInterface once again treats each IP address assigned to an underlying network interface as its own object. This was a regression in 2016r2.

45096

Framework > All

Instead of an unrecoverable failed assertion, Application.ExecutableFile now gives Nil if the application has been deleted or an error occurs finding it. This is a behavior change.

45475

Framework > All

Passing a value larger than the number of interfaces in the system to System.GetNetworkInterface now raises an OutOfBoundsException instead of triggering a failed assertion. This was a regression in 2016r2.

45484

Framework > Linux

Sound.IsPlaying now works correctly on newer versions of libgstreamer.

45248

Framework > Macintosh (Cocoa)

Fixed a regression with Thread.Resume that prevented the thread from continuing execution.

16130

Framework > Web

Non-web controls placed on WebContainers and WebDialogs no longer cause compile-time errors.

33590

Framework > Web

HandleSpecialURL calls on Xojo Cloud now work from both index.cgi and the cgi file with the app's name.

39872

Framework > Web

Non-Web controls can now be placed on WebContainers and WebDialogs.

43425

Framework > Web

ContextualMenuAction and DropObject are no longer available for WebTimer.

44360

Framework > Web

The session shutdown mechanism has been refactored so there's less chance of it getting stuck when lots of sessions are being removed at the same time.

44698

Framework > Web

Image placed in WebImageViews are now shown at the correct size on HiDPI screens.

45108

Framework > Web

CGI applications now transfer all incoming headers to the WebRequest instead of only a few select ones.

45449

Framework > Web

Exceptions in Session.Close no longer prevent subsequent sessions from closing properly.

45487

Framework > Web

WebPictures drawn to WebCanvases which are on a WebDialog draw again.

45490

Framework > Web

Fix a bug in WebLink which could cause the URL set in the IDE to stay clickable in the background of the control when a new URL was set in code.

45874

Framework > Web

Web Control IDs now have more entropy and should not be reused quite as quickly.

44611

Framework > Windows

Windows is now scaling the menu item icon in HiDPI mode if an image set is not found.

44888

Framework > Windows

Passing a negative value to System.GetNetworkInterface now raises an OutOfBoundsException instead of triggering a failed assertion. This was a regression in 2016r2.

45507

Framework > iOS

iOS controls report top and left correctly.

43945

IDE

The Insert menu is now disabled for read-only projects (as set by the file system).

44933

IDE

Inspector and Library palette windows remember their size and position on Windows and Linux.

45155

IDE

Changed how the color portion of an icon is read into the IDE so that rendering icons works more predictably.

45629

IDE

IDE opts out of the auto tabbing feature in Sierra.

45427

IDE > Auto Complete

Autocomplete now works better with local variables declared using a constructor with parameters containing other local variables (such as Dim p As New Picture(myPic.Height, myPic.WIdth).

45203

IDE > Build Automation

Completely rewrote Copy Files Step so it handles paths with special characters in them correctly.

30217

IDE > Code Editor

Ctrl+Enter and Ctrl+Return on Windows and Linux add the line continuation as expected. Opt+Return on OS X also does this (Opt+Enter on OS X was already doing this and needed no adjustment).

30843

IDE > Code Editor

You can remove the implements clause from a method that has one in a class that does not actually implement the interface. Note that you should not analyze or run a project that has such a set up (see related case 45163).

30880

IDE > Code Editor

Selecting lines that extend way beyond the right edge of the code editor no longer results in rapid jumping of the scroll bar back and forth.

31253

IDE > Code Editor

Deleting a group of overloaded methods by the group row that contains all overloaded methods now works.

31469

IDE > Code Editor

You can now go to the end of the last line of a note using cmd (ctrl) + down arrow.

42517

IDE > Code Editor

Now preserve leading and trailing spaces on copy and paste.

45112

IDE > Code Editor

Code indentation when printing no longer moves the right margin in as code gets more and more indented.

45168

IDE > Constant Editor

Convert to constant now uses TitleCase for the name.

45219

IDE > Constant Editor

Constant editor summary text no longer shows poorly truncated text. If it has to clip the text it will suffix it with “…”.

45301

IDE > Constant Editor

Turn off auto spellcheck and text replacements in constant default value Inspector field.

45447

IDE > FileTypes Editor

Expanding or collapsing the file types editor no longer affects all open windows and projects.

43679

IDE > Find & Replace

Find and replace no longer permits replacing a control name to make two controls with the same name that are not in a control set.

45002

IDE > Find & Replace

When using Find, advancing and advancing with selection, as well as backing up and backing up with selection, are consistent across OS X, Windows and Linux.

27261

IDE > Inspector

You can now use a dynamic constant for WebApplication.LaunchMessage, DisconnectMessage and HtmlHeader properties. Note that these cannot use dynamic constants in conjunction with the user's browser settings because these values are app-specific. They are read and assigned when your app launches and are based on the language set on the server running the web app.

43275

IDE > Inspector

Soft and Obj-C labels are aligned to the left like others and compress similarly.

43352

IDE > Inspector

Compatibility flags for events and event definitions are not used and so are no longer shown.

43459

IDE > Inspector

The + icon in Inspector Behavior window no longer has a grey background.

44595

IDE > Inspector

iOSImageView again shows the Image property in the Inspector.

45070

IDE > Inspector

IDE validates column widths settings for web listbox as it does the desktop listbox.

45093

IDE > Inspector

The drop-down of available images used in the Inspector no longer shows the same images twice.

45146

IDE > Inspector

Properties that use the integer property editor can be set using a literal value or #<constant>&nbsp;syntax.</constant>

45189

IDE > Inspector

Tab order of iOS Entitlements in Inspector is fixed.

45267

IDE > Inspector

Fixed a NilObjectException that could occur in some cases with a BevelButton on a large window layout.

45312

IDE > Inspector

iOS Capabilities (Entitlements) Inspector labels no longer get truncated.

45384

IDE > Inspector

Can once again use a constant to set listbox column widths.

45537

IDE > Inspector

Ellipsis in method declarations are no longer retained as part of the declaration.

45599

IDE > Inspector

Fixed a typo in the iOS Entitlements Inspector.

45745

IDE > Inspector

The iPad Pro&#39;s size now shows in the simulator selection menu.

45230

IDE > Language Reference

Language Reference search field resizes as the splitter is moved.

45313

IDE > Language Reference

Language Reference tips are accessible via the new help button on the viewer and the tips show in the same font as other items.

45351

IDE > Language Reference

Local LR entries for TextOutputStream.Append and Create no longer show twice.

45502

IDE > Language Reference

Updated local LR to remove links to non-existent local content.

43230

IDE > Layout Editor

Canvas backdrop updates appropriately.

44879

IDE > Layout Editor

Windows now scales the non-client areas of a Window (like the title bar and menus). Note: This requires at minimum Windows 10 Anniversary edition to work.

44995

IDE > Layout Editor

iOSButtons draw their text in whatever color you've selected. Note that the button must be visible (Visible = ON) in the Inspector.

45086

IDE > Layout Editor

Can now set images for iOSSegmentedControl segments using the Inspector.

45197

IDE > Layout Editor

Option-dragging an iOSButton on the layout results in a new instance that has its enabled set the same as the original.

45214

IDE > Layout Editor

Added commas to Auto-Adjust Tab Order dialog box text.

45374

IDE > Layout Editor

Lines draw as expected in the IDE (particularly noticeable with vertical or horizontal lines).

45532

IDE > Layout Editor

Canvas backdrop updates appropriately in the IDE.

45150

IDE > Library

Rotated the Library line icon 90 degrees left to match drawing.

26233

IDE > Miscellaneous

Getter and setter rows of a computed property in the Navigator have the right set of contextual menu items.

28094

IDE > Miscellaneous

Back and forward should work much better (but are still per tab at this time).

29564

IDE > Miscellaneous

Attempting to use a desktop report project item in a web project now results in compilation errors instead of crashing the IDE.

29763

IDE > Miscellaneous

IDE properly restores and propagates the visible toolbar state when the IDE is reopened. In addition, changing the toolbar visible state in one window correctly propagates the change to others.

31877

IDE > Miscellaneous

Long &amp;h values and &amp;c values are correctly recognized in the Constant Editor as number and color types, respectively.

39162

IDE > Miscellaneous

Deleting items should no longer cause back / forward function to fail.

39586

IDE > Miscellaneous

Top level domain is remembered when you alter the app bundle identifier in the Project Chooser.

41282

IDE > Miscellaneous

Cancelling the opening of a document no longer causes an unintended exception.

43101

IDE > Miscellaneous

Subclasses that have updated view behavior now reflect that when dragged from the Library on to a layout, which they previously did when dragged from the Navigator to a layout.

43377

IDE > Miscellaneous

Preferences “Search” has been relabelled as “Find” since you access this via the Find menu item.

43391

IDE > Miscellaneous

Duplicating more than one method at a time creates the new methods with names that are consistent with what you would get if you did the group by hand one after the other.

43580

IDE > Miscellaneous

Adding / removing an event implementation in a super is reflected in instances already on layouts and the events you can add to the instances.

44670

IDE > Miscellaneous

Missing image representations are once again flagged and warned about on project load.

44882

IDE > Miscellaneous

Properties no longer double up quotes when duplicated, copied/pasted, have their scope changed or are made shared/not shared.

44992

IDE > Miscellaneous

Convert to constant is now a sheet window on OS X like other assistant windows.

45075

IDE > Miscellaneous

Make it so you cannot drag layout items from a project type that support these types into one that does not. For example, you cannot drag a Window into an iOS project, or an iOSView into a desktop project.

45134

IDE > Miscellaneous

Controls that cannot be in the tab order are skipped when using the auto tab ordering.

45303

IDE > Miscellaneous

Fixed the case where someone sets an image representation to something like an icns or tiff where that source image has many representations itself.

45333

IDE > Miscellaneous

Make it so multiline captions in WebRadioButtons do not work since projects set up with one would not have reloaded it anyway.

45465

IDE > Miscellaneous

A folder named Windows no longer confuses back / forward function.

45867

IDE > Miscellaneous

Switching to the iOS build settings pane is faster and flickers less.

45053

IDE > Navigator

Row text for Navigator is determined and shown correctly.

45055

IDE > Navigator

Renaming or otherwise altering a method's signature properly reorganizes and refreshes the Navigator.

45147

IDE > Navigator

A NilObjectException is no longer generated when manually creating a duplicate named constant via drag and drop in the IDE on Windows.

20674

IDE > Project Editor

Properties no longer double up quotes when duplicated, copied.pasted, have their scope changed or are made shared/not shared.

24544

IDE > Project Editor

The filter field is cleared making the Navigator show the full project before a search result or error is jumped to which should reduce confusion on what is getting filtered.

25056

IDE > Project Editor

Tab captions update when project item name is changed.

26281

IDE > Project Editor

When you have a locked tab you can not use the Filter to navigate away from the tab nor can you use the Navigator's forward / backward or jump items to navigate away. These features are re-enabled when the tab is unlocked.

30713

IDE > Project Editor

Items contained by two levels of folders no longer draw the wrong scope background.

29891

IDE > Report Editor

Option-dragging a control on a report layout now makes a copy of the control instead of crashing the IDE.

42821

IDE > Report Editor

Double clicking a report control in the library adds it to a report.

45104

IDE > Report Editor

You will no longer get an exception when trying to add a non-report control to a report.

43808

IDE > Scripting

XojoScript editor toolbar buttons no longer lose their transparency when clicked.

45063

IDE > Scripting

The IDE scripting commands BuildMac, BuildWin32, BuildLinux report TRUE when you have This Computer selected and you are on OS X, Windows or Linux respectively.

45196

IDE > Scripting

IDE will refuse to have multiple copies of the same script open in different script editor windows. Instead, the existing window will be brought to the front.

45198

IDE > Scripting

Script Editor window once again reflects the name of the script being edited.

25514

IDE > Window Editor

Tabbing through Inspector fields automatically scrolls up or down as needed to bring fields that are not visible into view.

29087

IDE > Window Editor

Popup menu takes on the expected initial value appearance in the IDE.

29225

IDE > Window Editor

Removing a control from a control set that has events added no longer leaves you with a new row for the control that is not expandable.

20821

Introspection

Overridden methods now only appear once in introspection.

45536

Introspection

MethodInfo.Invoke now obeys the language&#39;s rules for calling overridden methods.

38788

Plugin SDK

REALInterfaceRoutine is no longer deprecated and a crash was fixed. This should be used in favor of REALLoadObjectMethod because it handles explicit interface implementation correctly.

45476

Plugin SDK

Fixed an ABI compatibility with plugins that use the Format function.

Changes (24 cases)

Case

Area

Description

45135

Build

iOS apps that do not support all orientations for the iPad automatically include the “RequireFullScreen” plist key.

45513

Framework > All

Application.UseGDIPlus is now deprecated.

45819

Framework > All

Removed deprecated NewPicture. Please use the Picture constructor instead, which has better error and bounds checking.

13521

Framework > Web

WebListbox Cells can now be set to a WebPicture.

45114

Framework > Web

Added a method named WebRequest.GetRequestHeaderNames() as String() which returns the names of all headers that were set for the request so a user can access them all instead of randomly guessing.

13099

IDE > Code Editor

If you select a group of source lines in the search pane you can set or clear bookmarks and break points via a contextual menu.

28161

IDE > Code Editor

The “Go To” contextual menu will let you jump to the declaration line for the local variable.

42720

IDE > Icon Editor

Make it so you can select all images and masks using the existing menu shortcuts. And when all items are selected pressing delete removes all images and masks at once as it does for each individual pane already.

45188

IDE > Inspector

Several iOS entitlements are not just on/off but have options that you need to select. Previously enabling the entitlement also showed the options selector. Now the selector is accessible separately.

43916

IDE > Layout Editor

PagePanels show as transparent in the layout editor like they are at runtime.

64

IDE > Miscellaneous

Brazilian Portuguese has a separate localization entry from Portuguese.

31609

IDE > Miscellaneous

Make it so as you relocate files in a Text project you get asked less and less to relocate missing items. Now the project loading stores a list of all locations visited so far and tries to use those to resolve missing files.

40431

IDE > Miscellaneous

If bookmarks or breakpoints are displayed in the Pane and one is added / removed then the list is updated accordingly.

44991

IDE > Miscellaneous

Image Set editor has a new contextual menu that allows you to select an image from the file system rather than use drag and drop.

44997

IDE > Miscellaneous

New preferences pane allows user to reorder the language lists in the IDE.

45059

IDE > Miscellaneous

Extract string constant dialog has an extra option to make a dynamic constant.

45061

IDE > Miscellaneous

Extract interface dialog is now resizable.

45428

IDE > Miscellaneous

Added 20x20 1x, 2x, and 3x sizes that are needed for iOS App Icons.

27885

IDE > Navigator

Navigator Filter field accepts a path (similiar to Go To Location) and will got to that path if it can.

44688

IDE > Scripting

Added BuildForAppStore property to the IDE&#39;s scripting context so you can set that flag using build automation.

45268

IDE > Xojo Cloud Uploader

Deploying to Xojo Cloud now automatically caches libs on the server to make repeated uploads faster.

45359

Miscellaneous

iOS ImageMaker tool now lets you set a background color for the generated App Icon images.

45604

Plugin SDK

Added new Plugins SDK function REALGraphicsReleaseDC, this should be pair with any calls to Graphics.Handle (or its equivalent REALGraphicsDC).

45929

Remote Debugger Stub

Remote Debugger Stub now includes the icu libs on Linux.

New items (9 cases)

Case

Area

Description

36959

Framework > Web

WebContainers now have options for explicitly Horizontal or Vertical scrollbars.

41277

Framework > Windows

Windows: Graphics now renders using Direct2D, it also introduces the following changes: Pictures - Only creates 32-bit depth Pictures now, this is now the same as with the other platforms - Alpha pictures are now premultiplied, this affects RGBSurface and accessing raw picture data in plugins Graphics - HandleTypeHDC - when acquired on a Graphics object originating from a Picture all drawing done on the HDC will not be flushed to our Diretc2D backed surface until the Picture is drawn Deprecated - Application.UseGdiPlus - Graphics.HandleTypeGdiPlusGraphics

45631

Framework > iOS

Added Xojo.Threading.Thread to iOS Library items.

41495

IDE

Added a new IDE Communication protocol to allow two-way communication and capture of load and compile errors (instead of showing dialogs).

19722

IDE > Code Editor

Extract Method now uses a dialog to allow you to easily set the name, parameters, return type and scope.

45046

IDE > Miscellaneous

The Windows build settings include an option to copy the Windows Universal C runtime redistributable DLL's next to the built Windows exe. When you enable this a warning dialog is shown to explain why Microsoft does not recommend this distribution technique.

41990

IDE > Navigator

Navigator filter supports a new “type” operator for filters that allow you to specify what type of items to display in the Navigator. Now you can use: - a filter that matches a name (same as always) - a filter that includes a “type spec” like: - type:property which will find only properties - type:shared% which will find anything that is a “shared whatever” - a list of types like above (ie/ type:property,constant would find anything that matched that is a property or constant) OK so what does this all mean? * You can do use a filter that just filter by name and the Navigator will find everything that includes “name” in it * You can use a filter that is name type:property and the Navigator will find everything that includes “name” in it that is a property (just property not computed property or shared or shared computed) * You can use a filter that is name type:property,constant and the Navigator will find everything that includes “name” in it that is a property or constant * You can use a filter that is name type:%property,constant and the Navigator will find everything that includes “name” in it and is any kind of property (yeah you can wildcard the types) * You can use a filter that is type:%property,constant and the Navigator will find everything that is ANY kind of property or constant

44419

IDE > Navigator

You can now use the contextual menu to select Pictures in the Navigator to convert them to Image Sets. The selected picture becomes the first image in the newly created Image Set.

45573

Introspection

Introspection now provides methods for interface types.

Docs and examples (19 cases)

Case

Area

Description

45297

Documentation

Replacement pattern for “Replaced with the entire target string before match.” is now noted on RegEx page as $`.

45306

Documentation

Added Picture.CopyColorChannels method to Doc Wiki.

45426

Documentation

DevCenter now links to http://www.xojo.com/learn for Introduction to Programming with Xojo book.

45456

Documentation

Documentation for Window.BitmapForCaching now clearly states the image returned has no mask and only supports an alpha channel.

45519

Documentation

Added CPU Compatibility section to System Requirements page.

45818

Documentation

Updated Picture docs to reflect changes to graphics support on Windows.

45832

Documentation

IDE Scripting “Sublocations” command now notes that passing empty string returns all top-level project items.

45608

Examples

Added CanvasDragDrag example for iOS (thanks to Michel Bujardet).

45616

Examples

The desktop CanvasDrawDrag example now correctly scales Pixel results so that you cannot drag when you click outside the ovals.

45796

Examples

Added iOSTableDataSource example that uses SQLite database.

45322

Language Reference > Documentation

WebSearchField now notes that the Recent Searches menu only appears with WebKit-based browsers.

45459

Language Reference > Documentation

Updated ReDim page to clarify that variables and expressions can be used for the new upper bound size. Redirected wiki pages for Dim and ReDim to Dev Center.

45498

Language Reference > Documentation

Removed out-of-date images from iOSToolButton page.

45501

Language Reference > Documentation

iOSApplication page is now included in offline Reference Guide.

45575

Language Reference > Documentation

Fixed typo in iOSImage.FromFile sample code.

45702

Language Reference > Documentation

iOSSQLiteDatabase now contains information on how prepared statements and value binding works.

45708

Language Reference > Documentation

Xojo.IO.TextOutputStream now appears in local Ref Guide viewer.

45747

Language Reference > Documentation

CurrentMethodName no longer appears twice in documentation.

45814

Language Reference > Documentation

Added doc page for the NetworkInterface.Loopback shared property added in 2016r2.