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 |
---|---|---|
|
Lingua is able to save over existing files again. |
|
Build |
Icons generated by the IDE again have the correct color information. |
|
Build |
The IDE no longer generates code to set a computed property that has no setter. |
|
Build |
iOS applications now launch correctly in the Xcode 8 simulators. |
|
Build |
Localization behaves as expected again on macOS Sierra. The CFBundeDevelopmentRegion value is no longer set to a local specific language. |
|
Crashes & Assertions > IDE Unhandled Exception |
Fixed the “scratch dir root” NilObjectException that can sometime occur. |
|
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. |
|
Crashes & Assertions > IDE Unhandled Exception |
Should no longer get a NilObjectException when an update occurs for the Feedback handler. |
|
Crashes & Assertions > IDE Unhandled Exception |
SVG's are NOT usable as image elements, so the IDE now properly rejects them. |
|
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. |
|
Crashes & Assertions > IDE Unhandled Exception |
Fixed a NilObjectException that could occur with some corrupt project files. |
|
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. |
|
Crashes & Assertions > IDE Unhandled Exception |
A volume going offline as a file is dragged should no longer cause an IOException. |
|
Crashes & Assertions > IDE Unhandled Exception |
Right-clicking on the Event Handlers item of a control set in the Navigator no longer causes a NilObjectException. |
|
Crashes & Assertions > IDE Unhandled Exception |
Older IDEs were not reloading image items properly when they had to use relative paths under some circumstances. |
|
Crashes & Assertions > IDE Unhandled Exception |
Custom table cells cannot be embedded in custom table cells. |
|
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. |
|
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. |
|
Crashes & Assertions > IDE Unhandled Exception |
Reloading this project no longer causes Invalid Argument Exceptions |
|
Framework > All |
ListBoxes with headers redraw as expected in the IDE when you alter the ColumnCount or InitialValue properties in the Inspector. |
|
Framework > All |
Calling constructors via introspection now always invokes the correct one. |
|
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. |
|
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. |
|
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. |
|
Framework > Linux |
Sound.IsPlaying now works correctly on newer versions of libgstreamer. |
|
Framework > Macintosh (Cocoa) |
Fixed a regression with Thread.Resume that prevented the thread from continuing execution. |
|
Framework > Web |
Non-web controls placed on WebContainers and WebDialogs no longer cause compile-time errors. |
|
Framework > Web |
HandleSpecialURL calls on Xojo Cloud now work from both index.cgi and the cgi file with the app's name. |
|
Framework > Web |
Non-Web controls can now be placed on WebContainers and WebDialogs. |
|
Framework > Web |
ContextualMenuAction and DropObject are no longer available for WebTimer. |
|
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. |
|
Framework > Web |
Image placed in WebImageViews are now shown at the correct size on HiDPI screens. |
|
Framework > Web |
CGI applications now transfer all incoming headers to the WebRequest instead of only a few select ones. |
|
Framework > Web |
Exceptions in Session.Close no longer prevent subsequent sessions from closing properly. |
|
Framework > Web |
WebPictures drawn to WebCanvases which are on a WebDialog draw again. |
|
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. |
|
Framework > Web |
Web Control IDs now have more entropy and should not be reused quite as quickly. |
|
Framework > Windows |
Windows is now scaling the menu item icon in HiDPI mode if an image set is not found. |
|
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. |
|
Framework > iOS |
iOS controls report top and left correctly. |
|
IDE |
The Insert menu is now disabled for read-only projects (as set by the file system). |
|
IDE |
Inspector and Library palette windows remember their size and position on Windows and Linux. |
|
IDE |
Changed how the color portion of an icon is read into the IDE so that rendering icons works more predictably. |
|
IDE |
IDE opts out of the auto tabbing feature in Sierra. |
|
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). |
|
IDE > Build Automation |
Completely rewrote Copy Files Step so it handles paths with special characters in them correctly. |
|
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). |
|
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). |
|
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. |
|
IDE > Code Editor |
Deleting a group of overloaded methods by the group row that contains all overloaded methods now works. |
|
IDE > Code Editor |
You can now go to the end of the last line of a note using cmd (ctrl) + down arrow. |
|
IDE > Code Editor |
Now preserve leading and trailing spaces on copy and paste. |
|
IDE > Code Editor |
Code indentation when printing no longer moves the right margin in as code gets more and more indented. |
|
IDE > Constant Editor |
Convert to constant now uses TitleCase for the name. |
|
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 “…”. |
|
IDE > Constant Editor |
Turn off auto spellcheck and text replacements in constant default value Inspector field. |
|
IDE > FileTypes Editor |
Expanding or collapsing the file types editor no longer affects all open windows and projects. |
|
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. |
|
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. |
|
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. |
|
IDE > Inspector |
Soft and Obj-C labels are aligned to the left like others and compress similarly. |
|
IDE > Inspector |
Compatibility flags for events and event definitions are not used and so are no longer shown. |
|
IDE > Inspector |
The + icon in Inspector Behavior window no longer has a grey background. |
|
IDE > Inspector |
iOSImageView again shows the Image property in the Inspector. |
|
IDE > Inspector |
IDE validates column widths settings for web listbox as it does the desktop listbox. |
|
IDE > Inspector |
The drop-down of available images used in the Inspector no longer shows the same images twice. |
|
IDE > Inspector |
Properties that use the integer property editor can be set using a literal value or #<constant> syntax.</constant> |
|
IDE > Inspector |
Tab order of iOS Entitlements in Inspector is fixed. |
|
IDE > Inspector |
Fixed a NilObjectException that could occur in some cases with a BevelButton on a large window layout. |
|
IDE > Inspector |
iOS Capabilities (Entitlements) Inspector labels no longer get truncated. |
|
IDE > Inspector |
Can once again use a constant to set listbox column widths. |
|
IDE > Inspector |
Ellipsis in method declarations are no longer retained as part of the declaration. |
|
IDE > Inspector |
Fixed a typo in the iOS Entitlements Inspector. |
|
IDE > Inspector |
The iPad Pro's size now shows in the simulator selection menu. |
|
IDE > Language Reference |
Language Reference search field resizes as the splitter is moved. |
|
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. |
|
IDE > Language Reference |
Local LR entries for TextOutputStream.Append and Create no longer show twice. |
|
IDE > Language Reference |
Updated local LR to remove links to non-existent local content. |
|
IDE > Layout Editor |
Canvas backdrop updates appropriately. |
|
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. |
|
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. |
|
IDE > Layout Editor |
Can now set images for iOSSegmentedControl segments using the Inspector. |
|
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. |
|
IDE > Layout Editor |
Added commas to Auto-Adjust Tab Order dialog box text. |
|
IDE > Layout Editor |
Lines draw as expected in the IDE (particularly noticeable with vertical or horizontal lines). |
|
IDE > Layout Editor |
Canvas backdrop updates appropriately in the IDE. |
|
IDE > Library |
Rotated the Library line icon 90 degrees left to match drawing. |
|
IDE > Miscellaneous |
Getter and setter rows of a computed property in the Navigator have the right set of contextual menu items. |
|
IDE > Miscellaneous |
Back and forward should work much better (but are still per tab at this time). |
|
IDE > Miscellaneous |
Attempting to use a desktop report project item in a web project now results in compilation errors instead of crashing the IDE. |
|
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. |
|
IDE > Miscellaneous |
Long &h values and &c values are correctly recognized in the Constant Editor as number and color types, respectively. |
|
IDE > Miscellaneous |
Deleting items should no longer cause back / forward function to fail. |
|
IDE > Miscellaneous |
Top level domain is remembered when you alter the app bundle identifier in the Project Chooser. |
|
IDE > Miscellaneous |
Cancelling the opening of a document no longer causes an unintended exception. |
|
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. |
|
IDE > Miscellaneous |
Preferences “Search” has been relabelled as “Find” since you access this via the Find menu item. |
|
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. |
|
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. |
|
IDE > Miscellaneous |
Missing image representations are once again flagged and warned about on project load. |
|
IDE > Miscellaneous |
Properties no longer double up quotes when duplicated, copied/pasted, have their scope changed or are made shared/not shared. |
|
IDE > Miscellaneous |
Convert to constant is now a sheet window on OS X like other assistant windows. |
|
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. |
|
IDE > Miscellaneous |
Controls that cannot be in the tab order are skipped when using the auto tab ordering. |
|
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. |
|
IDE > Miscellaneous |
Make it so multiline captions in WebRadioButtons do not work since projects set up with one would not have reloaded it anyway. |
|
IDE > Miscellaneous |
A folder named Windows no longer confuses back / forward function. |
|
IDE > Miscellaneous |
Switching to the iOS build settings pane is faster and flickers less. |
|
IDE > Navigator |
Row text for Navigator is determined and shown correctly. |
|
IDE > Navigator |
Renaming or otherwise altering a method's signature properly reorganizes and refreshes the Navigator. |
|
IDE > Navigator |
A NilObjectException is no longer generated when manually creating a duplicate named constant via drag and drop in the IDE on Windows. |
|
IDE > Project Editor |
Properties no longer double up quotes when duplicated, copied.pasted, have their scope changed or are made shared/not shared. |
|
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. |
|
IDE > Project Editor |
Tab captions update when project item name is changed. |
|
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. |
|
IDE > Project Editor |
Items contained by two levels of folders no longer draw the wrong scope background. |
|
IDE > Report Editor |
Option-dragging a control on a report layout now makes a copy of the control instead of crashing the IDE. |
|
IDE > Report Editor |
Double clicking a report control in the library adds it to a report. |
|
IDE > Report Editor |
You will no longer get an exception when trying to add a non-report control to a report. |
|
IDE > Scripting |
XojoScript editor toolbar buttons no longer lose their transparency when clicked. |
|
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. |
|
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. |
|
IDE > Scripting |
Script Editor window once again reflects the name of the script being edited. |
|
IDE > Window Editor |
Tabbing through Inspector fields automatically scrolls up or down as needed to bring fields that are not visible into view. |
|
IDE > Window Editor |
Popup menu takes on the expected initial value appearance in the IDE. |
|
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. |
|
Introspection |
Overridden methods now only appear once in introspection. |
|
Introspection |
MethodInfo.Invoke now obeys the language's rules for calling overridden methods. |
|
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. |
|
Plugin SDK |
Fixed an ABI compatibility with plugins that use the Format function. |
Changes (24 cases)
Case |
Area |
Description |
---|---|---|
Build |
iOS apps that do not support all orientations for the iPad automatically include the “RequireFullScreen” plist key. |
|
Framework > All |
Application.UseGDIPlus is now deprecated. |
|
Framework > All |
Removed deprecated NewPicture. Please use the Picture constructor instead, which has better error and bounds checking. |
|
Framework > Web |
WebListbox Cells can now be set to a WebPicture. |
|
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. |
|
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. |
|
IDE > Code Editor |
The “Go To” contextual menu will let you jump to the declaration line for the local variable. |
|
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. |
|
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. |
|
IDE > Layout Editor |
PagePanels show as transparent in the layout editor like they are at runtime. |
|
IDE > Miscellaneous |
Brazilian Portuguese has a separate localization entry from Portuguese. |
|
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. |
|
IDE > Miscellaneous |
If bookmarks or breakpoints are displayed in the Pane and one is added / removed then the list is updated accordingly. |
|
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. |
|
IDE > Miscellaneous |
New preferences pane allows user to reorder the language lists in the IDE. |
|
IDE > Miscellaneous |
Extract string constant dialog has an extra option to make a dynamic constant. |
|
IDE > Miscellaneous |
Extract interface dialog is now resizable. |
|
IDE > Miscellaneous |
Added 20x20 1x, 2x, and 3x sizes that are needed for iOS App Icons. |
|
IDE > Navigator |
Navigator Filter field accepts a path (similiar to Go To Location) and will got to that path if it can. |
|
IDE > Scripting |
Added BuildForAppStore property to the IDE's scripting context so you can set that flag using build automation. |
|
IDE > Xojo Cloud Uploader |
Deploying to Xojo Cloud now automatically caches libs on the server to make repeated uploads faster. |
|
Miscellaneous |
iOS ImageMaker tool now lets you set a background color for the generated App Icon images. |
|
Plugin SDK |
Added new Plugins SDK function REALGraphicsReleaseDC, this should be pair with any calls to Graphics.Handle (or its equivalent REALGraphicsDC). |
|
Remote Debugger Stub |
Remote Debugger Stub now includes the icu libs on Linux. |
New items (9 cases)
Case |
Area |
Description |
---|---|---|
Framework > Web |
WebContainers now have options for explicitly Horizontal or Vertical scrollbars. |
|
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 |
|
Framework > iOS |
Added Xojo.Threading.Thread to iOS Library items. |
|
IDE |
Added a new IDE Communication protocol to allow two-way communication and capture of load and compile errors (instead of showing dialogs). |
|
IDE > Code Editor |
Extract Method now uses a dialog to allow you to easily set the name, parameters, return type and scope. |
|
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. |
|
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 |
|
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. |
|
Introspection |
Introspection now provides methods for interface types. |
Docs and examples (19 cases)
Case |
Area |
Description |
---|---|---|
Documentation |
Replacement pattern for “Replaced with the entire target string before match.” is now noted on RegEx page as $`. |
|
Documentation |
Added Picture.CopyColorChannels method to Doc Wiki. |
|
Documentation |
DevCenter now links to http://www.xojo.com/learn for Introduction to Programming with Xojo book. |
|
Documentation |
Documentation for Window.BitmapForCaching now clearly states the image returned has no mask and only supports an alpha channel. |
|
Documentation |
Added CPU Compatibility section to System Requirements page. |
|
Documentation |
Updated Picture docs to reflect changes to graphics support on Windows. |
|
Documentation |
IDE Scripting “Sublocations” command now notes that passing empty string returns all top-level project items. |
|
Examples |
Added CanvasDragDrag example for iOS (thanks to Michel Bujardet). |
|
Examples |
The desktop CanvasDrawDrag example now correctly scales Pixel results so that you cannot drag when you click outside the ovals. |
|
Examples |
Added iOSTableDataSource example that uses SQLite database. |
|
Language Reference > Documentation |
WebSearchField now notes that the Recent Searches menu only appears with WebKit-based browsers. |
|
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. |
|
Language Reference > Documentation |
Removed out-of-date images from iOSToolButton page. |
|
Language Reference > Documentation |
iOSApplication page is now included in offline Reference Guide. |
|
Language Reference > Documentation |
Fixed typo in iOSImage.FromFile sample code. |
|
Language Reference > Documentation |
iOSSQLiteDatabase now contains information on how prepared statements and value binding works. |
|
Language Reference > Documentation |
Xojo.IO.TextOutputStream now appears in local Ref Guide viewer. |
|
Language Reference > Documentation |
CurrentMethodName no longer appears twice in documentation. |
|
Language Reference > Documentation |
Added doc page for the NetworkInterface.Loopback shared property added in 2016r2. |