2016r4 Release Notes

From Xojo Documentation

You are currently browsing the old Xojo documentation site. Please visit the new Xojo documentation site!

(December 6, 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.

Download Xojo today.

Release Notes

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> 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'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 &h values and &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'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'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 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.