Xojo 2014 Release 2 has hundreds of fixes and improvements.

  • Web: Can now add and remove toolbar buttons dynamically at runtime.

  • Web: Can now add and remove segments on Segment Controls dynamically at runtime.

  • Web: Text Area now has a ScrollPosition property.

  • Web: Text Area and Text Field now have a SelectAll method.

  • Web: ListBox now has a separate style for selected rows.

  • Web: Improved speed of CGI web apps.

  • PostgreSQL: Added support for root SSL certificates.

  • IDE: Inspector properties reorganized to make better use of available space.

  • IDE: Can now add plist files to project to include in built app.

  • Added 20+ new example projects.

  • Release introduces new single platform desktop license.

  • Release introduces new Xojo Enterprise license that includes all licenses, priority support, 8 hours of custom Xojo training, and more.

Bug fixes


32565 All: Assigning to Range's StartPos or Length properties now actually changes the value.

25533 All: StyledText's RTF parsing speed has been improved.


33271 Compiler: Array properties with a default value of Nil are now initialized to Nil instead of an empty array. This has the potential to break code as projects that used Nil as a default value for an array will now actually get what they asked for and uses of that array will raise NilObjectExceptions.

31743 Compiler: Converting a double literal to a single is no longer dependent on the user's locale. For example, when assigning "3.14" to a Single, it used to become simply "3".

33643 Compiler: Fixed a crash where the If operator would have incorrect reference counting.

33320 Compiler: Improved the error message emitted when an operator is unsupported for the operands given.

32280 Compiler: Improved the error messages received when an object or array property has a default value specified.

21765 Compiler: IncludeFunctionNames is now respected by the Mach-O linker. The Mach-O linker only emits local symbol table information if IncludeFunctionNames is set to True.

Note that IncludeFunctionNames does not control introspection metadata or class setup information, so tools such as'strings' will still reveal information.

28356 Compiler: Operator_Subscript now works when the object being subscripted was passed ByRef.

26603 Compiler: The bitwise Not operator now works with all integer expressions and not just local variables.

33361 Console: Console applications no longer leak the arguments array.

32522 Console: Picture.FromData no longer loses alpha channel information.

31707 Console: SSLSockets that are set to secure and told to listen no longer leak.

30291 Creating a computed property no longer leaves the original property name with the original name


32119 Database: MSSQLServerPreparedStatement.SQLExecute (or SQLSelect) no longer crashes.

31927 Database: MySQLCommunityServer no longer causes failed assertions when SQLSelect/SQLExecute are invoked while other threads are running.

32400 Database: RecordSet.Update/Delete now works with SQLiteDatabase where a PRIMARY KEY contains special tokens like a single-quote. It also now works if you have a BLOB as a PRIMARY KEY.


26555 Debugger: Hex canvas scrolls to the bottom and the odd/even row highlighting lines up better.

33284 Desktop: Control.Index no longer raises a ThreadAccessingUIException when called from a non-main thread.

9973 Desktop: Listbox headers that do NOT use a constant (starts with a # ) for the first column now work as expected and resolve any/all constants for any initial values.

32973 Desktop: Optimized WindowCount function, most noticeable on Cocoa.

29256 Framework: A space at the beginning of a string used in the Val function will process properly when converting hexadecimal values. For example, getting Val of a string like " &h1" will work the same as a string like " 1"; both will return a value of 1.

25725 Framework: JSONItem now properly handles empty arrays and no longer converts them to empty objects when serializing.


33117 IDE (Windows/Linux): A window with a Backdrop image is no longer scaled when the picture is larger than the window size.

32670 IDE: A NilObjectException in Templates Window has been fixed.

32307 IDE: A single locked control, alone or in a selected group of controls, prevents you from trying to alter the locking settings as it makes no sense.

27605 IDE: Analysis Warning settings are saved with the project rather than being global settings. Known Issue : Changing the analysis warnings does not dirty the project (see 33556).

33075 IDE: Array methods are no longer suggested in Code Editor contexts where they are incorrect.

32910 IDE: Changing a property for multiple selected items in the Web Layout Editor no longer causes an exception.

33460 IDE: Changing a value thats in a text field then clicking the color selector will commit any pending changes.

30583 IDE: Changing a web page to a web container no longer results in instances of the container being members of a control array.

29960 IDE: Changing a Web Style property now dirties the project.

32927 IDE: Changing the width of the Navigator does not reset the scroll position.

33468 IDE: Clicking a boolean slider commits pending changes.

32338 IDE: Clicking Deploy doesn't Build and clicking Build doesn't Deploy.

33461 IDE: Clicking the interfaces buttons commits pending changes.

33458 IDE: Clicking the locking inspector commits pending changes.

33459 IDE: Clicking the pop up menu for enum and pictures editors commits pending changes.

33673 IDE: Code Editor no longer allows you to edit the declaration line by clicking very high up in the code body.

6288 IDE: Constants now default to NUMERIC since that IS the behavior they exhibit if you just leave the popup set to no selected type.

28395 IDE: Controls that are private on a container are not shown in the autocomplete for the instances placed on other containers or windows.

32393 IDE: Deleting build steps from any target works now works as expected.

26713 IDE: Double-clicking a control on the Layout Editor no longer results in an empty list box

21266 IDE: Dragging a new indeterminate progress bar from the Library now actually configures it as indeterminate on web projects.

33336 IDE: Dragging an instance of a subclass of TextInputCanvas no longer results in an erroneous control array.

32908 IDE: Empty columns at the beginning of a row are no longer dropped in the initial value for WebListBox rows.

32866 IDE: Ensure that Line controls do not get added as 1 pixel in height and width.

32645 IDE: Fix copy file steps when running on OS X for any target (OS X or others where it gets built locally then sent to the remote stub).

33119 IDE: Fixed a crash that could occasionally happen on OS X when the code editor was closed.

33607 IDE: Fixed a few more places where the IDE could hang during a Xojo Cloud deployment.

26347 IDE: Fixed up issues drawing the code folding markers in the Code Editor.

32671 IDE: Fixes to retain Inspector property values better when moving to different areas of the IDE.

33182 IDE: Inline editing of a WebListBox with special characters in the header no longer messes up the headers.

33107 IDE: Introspection types show up in autocomplete as expected.

33071 IDE: Language Reference content updated.

32593 IDE: Line Control is no longer invisible or offset improperly on layouts.

26220 IDE: Made fixes so that Inspector fields text changes are now properly retained. This does not fix all situations, but should address most of them. If other situations are found, please report them as new cases.

33855 IDE: Managing to get a carriage return inserted while the bracket highlighting is in progress is no longer possible.

33219 IDE: Moving around in the navigator using the keyboard while debugging no longer causes an exception.

33147 IDE: Now prevents the creation of a Control Set from a ContainerControl.

32871 IDE: Parameters with default values like:

c As Color = &cFF0000

no longer show as:

c As Color = &&cFF0000

27079 IDE: Preferences > Proxy will accept a value that does NOT start with a 0.

33742 IDE: Projects are no longer marked as dirty by just clicking around the IDE.

31881 IDE: REALControl and RealFontStyle no longer appear in autocomplete.

32777 IDE: Relocate is only enabled if the item was NOT located when opening the project. It's not intended to be used as a means to swap classes around in a project.

32748 IDE: Removing a subclass of container control no longer causes a NilObjectException.

32403 IDE: Removing one item that is missing from a Copy File Step no longer causes an assertion.

32775 IDE: Row highlights behave as expected in the Profiler and do not accumulate.

30255 IDE: Run / Resume in the toolbar updates appropriately so its in the correct state.

33572 IDE: Saving and reloading a project with external items no longer asks you to relocate them unnecessarily when they have not moved.

31570 IDE: Search and replace changes update the Navigator right way (instead of waiting for a manual refresh).

32912 IDE: Selecting a group of controls and then deselecting one and pressing the arrow keys no longer causes an exception.

33180 IDE: SessionShutDownThread shows in the Debugger stack listing when you quit a thread.

30142 IDE: Several obsolete bits of information are no longer written to binary, XML and text project formats.

33692 IDE: Stack overflows caused by deleting some project items have been fixed.

33760 IDE: Switching from a group of selected items to one item updates the Inspector properly.

24398 IDE: Switching tabs using cmd-{ and cmd-} on OS X works as documented with appropriate short cuts for Windows and Linux. It behaves like a circular buffer so you can cmd-{ or cmd-} continuously and it just wraps around.

33054 IDE: Tabs in the Inspector are in this order: ID, Advanced, then any others.

11383 IDE: The Comment / Uncomment toolbar button works as expected. Contextual menu items and menu bar items for Comment also update as appropriate based on the current line and selection.

33661 IDE: The IDE no longer has issues reading in a project that has relative paths in the vcp manifest that contain "//".

32606 IDE: Trying to load a copy file step that had files that were in paths that did not exist no longer drops the item . Now they load and are marked as invalid/missing in the Copy File Step Editor.

32588 IDE: Web views no longer get out of bounds exception when resizing.

33715 IDE: WebContainerControls no longer cause exceptions if their width or height is set to zero.

33952 IDE: WebStyle no longer requires multiple clicks to step over it in the debugger.

33185 IDE: When debugging web projects, you should no longer have situations where you have to repeatedly use Step Over to actually step over single lines of code.

33962 IDE: When selecting a bunch of items to print (including folders), the items and their contents will print.

32846 IDE: When switching selected items the pane in the Inspector doesn't change unless it has to (e.g. you have the Advanced tab selected and the new item you select doesn't have such a tab).

32402 IDE: Windows and Container Controls appear properly in a print out and do not have contents offset.

33130 IDE: Windows and Linux menu bar now have an accelerator key for the top Insert menu item accessed via Alt-I.

32995 IDE: Xojo Cloud builds no longer fail if Use Build Folder is turned off.


32071 Linux: Getting the selection's paragraph alignment in a TextArea control now works properly. This affected how StyleData was saved so now paragraph alignment also is stored properly.

32560 Linux: ReplaceAll no longer crashes when mixing different encodings that do not have a full representation.

33022 Linux: When using DragItem, an opaque DragPicture now draws properly over controls instead of sometimes behind certain controls. No guarantees can be made for a non-opaque DragPicture, but we do the best we can to draw over controls instead of behind them.


33611 MacCocoa: No longer crashes when showing a sheet window when there's no parent. It now logs to the IDE's message pane then does nothing (matching the Carbon framework's behavior).

30401 Macintosh: Built applications only load the required plugins instead of any library that happens to be in the frameworks folder.

33126 Plugins SDK: REALGetStringData no longer crashes under low memory situations and instead returns false.

23824 SQLiteDatabase: Attempting to connect to a database with a bad EncryptionKey now correctly reports the error code as #26 instead of #21. Since REALSQLDatabase is deprecated it won't be fixed there.


32712 Web: Apostrophes in WebTextField.CueText no longer cause JavaScript errors.

28070 Web: Calling AddHandler on a WebTimer now works properly.

30193 Web: Calling WebCanvas.Refresh or WebCanvas.Invalidate in the Open event no longer causes a JavaScript error.

33065 Web: CSS Gradient backgrounds now render properly on IE11.

33100 Web: Feedback thank you page now redirects users back to the app instead of just the Host.

33375 Web: FillOval and DrawOval now draw correctly on non-english systems.

33222 Web: Mobile Safari version number is now detected properly.

30766 Web: Non-visual controls no longer interfere with or capture mouse/touch events.

31610 Web: Session.ConfirmMessage is no longer displayed if a JavaScript error occurs and the user submits the report.

34051 Web: Sheet and Modal WebDialogs can now be moved by changing the Left and Top properties without moving the background.

19783 Web: WebAnimator now accepts negative values for RotateX, RotateY and RotateZ.

29276 Web: WebApplication.HandleSpecialURL now puts the QueryString and content into the correct WebRequest properties when running as CGI.

33350 Web: WebContainer Javascript framework no longer triggers its shown event regardless of whether the event has been implemented.

27553 Web: WebContainer Open and Shown events now fire properly when created through EmbedWithin in another control's Open event.

31817 Web: WebContainers added via EmbedWithin no longer have an exponentially increasing interactivity delay.

28718 Web: WebContainers now enable and disable their contained controls properly.

22575 Web: WebDialog widths can now be changed at runtime.

33313 Web: WebDialogs created in code no longer leak.

32833 Web: WebGraphics.DrawString no longer causes JavaScript errors for apostrophes, quotes and backslashes.

33420 Web: WebHTMLViewer no longer raises an exception when calling LoadPage with an empty string.

33512 Web: WebListbox now refreshes itself properly when it is populated with enough rows to cause the vertical scrollbar to appear in the Open event.

19311 Web: WebMapLocation now changes encoding to UTF8, which is the way Google wants it.

32887 Web: WebMapViewer now connects to the map provider using the same protocol as was used to load the WebPage.

31035 Web: Webpages no longer leak memory when they are closed.

23167 Web: WebSegmentedControl.SegmentCount can now be set at runtime.

31785 Web: WebSegmentedControl.SegmentCount can now be set in the Open event.

33447 Web: WebSegmentedControl.Selected method works again.

30289 Web: WebTextField now sends text entered by autocomplete or autofill to the server automatically.

33500 Web: WebTimers no longer intercept mouse clicks.

33515 Web: WebToolbar default gradient renders properly on IE8 & IE11 again.

30847 Web: WebToolbar now renders correctly on IE10.

26649 Web: WebToolbar.ItemCount now returns the correct number of items.

26648 Web: WebToolbarMenu no longer shows its menu if the toolbar is disabled.

32944 Web: WebYouTubeMovie now plays over HTTP and HTTPS.

31004 WebSDK: Added missing iOS Background example to WebSDK folder.


32426 Windows/Linux: MsgBox and MessageDialog modality is now consistent, i.e. MsgBox is now always app-modal, and MessageDialog is app-modal when called with ShowModal and window-modal when called with ShowModalWithin.

33396 Windows: A BevelButton configured with HasMenu now draws the menu arrow again on Windows (was broken if the theme was anything but classic theme).

31484 Windows: A BevelButton on a ContainerControl, whose BackColor is set, now inherits the ContainerControl's background color instead of the Window. This fixes the edges around the BevelButton not drawing with the right color.

33085 Windows: Converting date/time to string now sets the string encoding properly when the format locale is different from the system locale.

33305 Windows: Dragging outside your app no longer freezes/crashes on Windows 8.

8248 Windows: FolderItem dragging from one Xojo app to another now works.

32134 Windows: ListBox headers and borders no longer flicker on Windows when adding rows (this mainly affected users running on Classic theme).

27083 Windows: Now properly handles mouse wheel events from un-dentented (i.e. precision) mice, and mouse gestures (i.e. scrolling on touch screens with your fingers).

33049 Windows: WebKit based HTMLViewer no longer crashes the app when one of our drag objects enters it.

Total: 141

New items

29883 Database: Added PostgreSQLDatabase.SSLAuthority As FolderItem property, this represents the root SSL certificate file.

27581 IDE: Constants shows similarly to properties in the info bar above the editor when you click on one.

24339 IDE: Inspector control sizes have been compressed and Inspector layout improved to reduce scrolling.

31336 IDE: Moved Group Box to the Organizers group in the Library.

28090 IDE: Purchase license dialog now has a sign in button right on the dialog to make it easier to check for updated licenses. Message is also expanded to give users a better idea of what action to take.

21581 IDE: Users can add a plist xml file to a project to augment the plist generated by the IDE.

Notes : Having more than one added to a project is NOT recommended as there is no fixed order for them to be added. Any items USER plists create that duplicate keys the IDE creates will be over written by the IDE (basically you can't replace or augment entries the IDE creates) Only top level keys are dealt with (keys that are immediately children of PLIST > DICT in the Plist XML format)

33363 Plugin SDK: Added new REALnewInstanceOfClass function to create a new object based on the class's REALclassDefinition.

29171 SQLiteDatabase: Updated to SQLite version 3.8.5.

30101 Web: Added x-frame-options header to prevent clickjacking attacks.

18340 Web: Use WebToolbar.AppendItem to add WebToolbarItems to a WebToolbar at runtime.

33173 Web: Use WebToolbar.RemoveItem to remove WebToolbarItems at runtime.

32201 Web: WebContainer now has constants for the three possible values of the ScrollbarsVisible property: ScrollbarsAutomatic, ScrollbarsAlways and ScrollbarsNever.

22898 Web: WebListBox has a new SelectionStyle property for setting the style of selected rows.

15608 Web: WebListBox now has a HeaderStyle property for setting the style of the header. Web: WebListBox now has a ColumnHeaderStyle method for setting/getting the style of individual headers.

16938 Web: WebTextArea now has a ScrollPosition property.

23787 Web: WebTextField and WebTextArea now have a SelectAll method.

17572 Web: WebYouTubeMovie now supports changing the URL at runtime.

Total: 18


31571 All: IllegalCastException messages now give more information as to what went wrong.

33293 Compiler: OS X binaries now have the MH_NO_HEAP_EXECUTION flag set, which is more secure.

32236 Debugger: On Linux, the terminal emulator used when launching a command line application now lets the system decide what's best, instead of hardcoding xterm.

33533 Framework: Introspection metadata is now loaded much less aggressively.

33109 IDE: A space, or series of spaces, as the initial part of the filer will not cause it to run. If there is text following the space(s) it will run.

32596 IDE: Computed properties show up as their own entry in a profile instead of being subsumed by whatever called them.

4849 IDE: Copy File Steps now shows missing file names (fixed as part of 32606).

24073 IDE: When deploying to Xojo Cloud, projects with the StageCode < 3 will now have a suffix appended to the app name of -Dev, -Alpha or -Beta.

15524 IDE: You can now multi-select in the Issue Resolution dialog and the "check all" button works appropriately with multi-select.

32536 Linux: Optimized drawing pictures with mask, or white transparent.

32556 Linux: Optimized MouseDrag so that it no longer causes the event loop to run continuously. MouseDrag events are now dispatched on a set frequency as to not cause 100% CPU usage and unresponsiveness due to time intensive code in user's MouseDrag event. In the IDE this means resizing/moving controls on the layout editor no longer exhibits a noticeable delay when the mouse is released.

33792 Macintosh: Changed the way the OS version is retrieved for compatibility with future versions of OS X.

33379 SQLiteDatabase: Extension loading is now disabled by default. A new property called LoadExtensions can be set to enable/disable extension loading as desired.

32498 Web: AddHandler and RemoveHandler now work on built-in web controls.

33254 Web: Application arguments are now passed to the Open event.

32664 Web: Minor speed improvements for CGI apps.

30100 Web: Standalone apps now set the X-Content-Type-Options header to "nosniff".

33557 Web: WebControlWrapper now has a shared method which developers can override to dynamically add items to the HTML <head> tag when a session is being created.

33410 Web: WebHTMLViewer now uses http://www.example.com/ instead of http://www.xojo.com/ as the default URL.

33517 Web: WebToolbar Captions are no longer selectable, Icons are no longer draggable.

21611 Windows: Updated WebKit based HTMLViewer to CEF3 (1650.1562).

Total: 21

Docs and examples

16223 DocLangRef: Added links to Database.ErrorCode page for the error codes for various database engines.

33431 DocLangRef: Added TargetXojoCloud links to #If..#Endif page.

33860 DocLangRef: Added WebSegmentedControl.Caption to list of methods; Updated WebSegmentedControl.Segment method to show that you can also pass it a picture.

5099 DocLangRef: Clarified parameters to HTMLViewer.LoadPage.

32926 DocLangRef: Clarified that the Application class can only be used in Desktop apps.

33465 DocLangRef: Clarified usage of octal values for FolderItem.Permissions.

33487 DocLangRef: Fixed formatting of example code for HTMLViewer.IsAvailable.

29174 DocLangRef: Fixed page name for MenuItem.Constructor to show Tag As Variant.

32950 DocLangRef: Fixed typo in example code for Database.ErrorMessage.

33260 DocLangRef: Fixed typos in example for MajorVersion, MinorVersion, BugVersion and NonReleaseVersion.

31996 DocLangRef: Minor improvement to TextInputStream example code.

31314 DocLangRef: Minor updates to TextInputStream.ReadAll. Removed TextInputStream.Read page as it was not used (TextInputStream.Read links to Readable.Read).

31782 DocLangRef: Removed examples that refer to unavailable TAPITest.rbp project.

32981 DocLangRef: Removed reference to pre-Xojo IDE from AttributeInfo page.

33407 DocLangRef: Removed reference to Real Software in EmailMessage.Headers page.

33377 DocLangRef: Removed WebControl.MouseDrag event handler.

33259 DocLangRef: Since UserCancelled now works with Cocoa apps, removed warning that it did not.

32728 DocLangRef: Updated EncodeBase64 page to indicate that CRLF is used when wrapping the generated text.

33303 DocLangRef: Updated HTMLViewer.SecurityChanged to indicate it only works on Windows with the Native renderer.

31983 DocLangRef: Updated RSA encryption docs.

24692 DocLangRef: Updated SQLiteDatabase page to note that AES-128 encryption is used when encrypting the databases. Also added link to SQLite encryption doc page.

32022 DocLangRef: Updated Timer page with a Note section on how to use them to update the UI.

33380 DocLangRef: WebListBox.ListIndex no longer indicates it is read-only.

32554 DocLangRef: WebPage Close event and method now go to links for the WebPage rather than the WebControl.

31377 DocUserGuide: Fixed numbering of graphics in ListBox section of Book 2.

29485 DocUserGuide: Updated Tab Order Editor screen shot in User Guide Book 1: Fundamentals.

32465 Examples: Fixed incorrect Shell type for property in WebSessionContext example.

33649 Examples: Fixed IPCSocket example to use NativePath to set the IPCSocket path.

Total: 28

Release Total: 208