Xojo 2014 Release 1 add the ability to deploy your web apps to Xojo Cloud. It also has several other new features including:

  • MoviePlayer uses AVFoundation on OS X to support Mac App Store.

  • New If operator for single-line If statements that can be used as expressions.

  • New Crypto functions for DER and BER conversion.

  • CancelBuild IDE Script command.

  • Added WebTextField.CueText property.

  • Can specify the network interface to use for web apps.

  • WebContainers scroll properly on mobile devices.

  • Added HeaderPressed and HeaderStyle properties to WebListBox.

  • Added TargetRemoteDebugger constant to know when the remote debugger is being used.

  • Much improved tab behavior within IDE.

Full details are below.

Bug fixes


31607 All: Crypto.RSAVerifySignature no longer throws an exception when verification fails.

32341 All: Fixed a crash with strings that would occur on OS X given certain memory allocation patterns.

13053 All: Getting the type info of a Report no longer raises a NilObjectException.

31962 All: Introspecting the introspection classes no longer leaks implementation details.

31968 All: Introspection no longer shows computed property getters and setters as MethodInfo objects.

31423 All: PostgreSQL dylib is no longer included when you compile for and use SQLiteDatabase in a project. This also more generally affects plugins that depend on classes in other plugins.

19146 All: Setting a shared property via introspection no longer crashes.

2759 All: Setting property values via introspection now does proper type checking when the property's type is an object.


31280 Compiler: An error is now reported when a label is defined multiple times in a single function.

31514 Compiler: Fixed a bug that would cause CType to generate incorrect code if the value passed in was already of the requested type.

31787 Compiler: Malformed property declarations like "blah(33( As Integer" no longer cause syntax errors in the wrong place or cascading errors.

20414 Compiler: No longer gives incorrect errors when parsing a structure field that has no type specified.

32048 Compiler: The stack is now 16-byte aligned on all platforms.

23656 Compiler: Variant properties with default values now work correctly and don't cause crashes.

31190 Console Debugger Stub: Path Parser no longer hangs if a UNC Remote path is given for the downloads folder.


26219 Database: MSSQLServerDatabase now works with MS SQL Server 2012 (it worked previously only if you had an older SQL Native Client installed like MS SQL Server 2008).

26701 Database: MySQLCommunityServer: after RecordSet.Update is called we can no longer guarantee the contents of the RecordSet, so we now clear the contents instead of leaving it in a bad state where the same record continues to be updated.

10788 Database: OracleDatabase: inserting, updating, and retrieving an Oracle date now properly inserts/updates/retrieves the time.

32253 Database: PostgreSQLDatabase no longer returns wrong double values on Windows 8 if the localization uses a non-period decimal sign.

29581 Database: SQLiteDatabase: RecordSet now supports updating/deleting a record on a table that has a compound/composite key. Before it would update/delete multiple rows based on whichever primary key was found first.


31325 Debugger: No longer crashes when going to the 'Runtime' viewer's contents.

29730 Debugger: No longer shows compiler-generated functions like AddHandler.Stub.0.


31923 Desktop: ListBox: pressing the "End" key on a listbox without a vertical scrollbar no longer asserts when there is only one page (or an empty set) of rows.

31363 Enumerations cannot have items that are blank

31120 Framework: Fixed RegEx.Replace (with ReplaceAllMatches = True) so that we're finding all matches at once and replacing them instead of finding the first match, replacing that, and finding again with the modified string, since the modified string can change what is matched.

31625 Framework: XojoScript: Fixed a rare crash that could occur when a script with classes has finished running.


10629 IDE: #pragma, #if, #else, #endif will all apply the same standard case as other keywords in autocomplete (initial letter is capitalized).

29266 IDE: A carriage return can no longer be used in the attribute editor or for attributes themselves.

15390 IDE: A directory of files when added to a Build Automation Copy Files step now copies all its contents recursively to the target.

31285 IDE: A project with a web control wrapper that has no data for its Navigator icon no longer causes an exception.

31408 IDE: Add Menu handler on OS X no longer uses an Apple system keyboard shortcut.

31282 IDE: An issue that could result in a text (VCP) project manifest referring to an old version of a file that used project items with names that required special characters (umlauts etc) has been fixed.

31281 IDE: An issue where build scripts may not read properly has been fixed.

17184 IDE: Array keyword now autocompletes.

32 IDE: Arrays of classes with members that are arrays autocompletes properly.

16284 IDE: Cancelling the edit of a platform-specific instance of a constant using the multi-line editor dialog no longer dirties a project.

29045 IDE: Changing the name of a control that is a member of a control set leaves that control still selected.

30647 IDE: Check Project for errors rebuilds the error list every time.

1237 IDE: Code indentation works much better when you have #if /#endif surrounding normal code.

28963 IDE: Copy and paste of code no longer renders autocomplete ineffective.

31739 IDE: Creating a constant with a duplicate name in a class or module is no longer possible.

31247 IDE: Cutting part of the name out of the method name combo box no longer clears the whole name.

4703 IDE: Default web pages and default windows can be external in plain text projects. Previously every time you reloaded the project you'd have to reset this.

31121 IDE: Double-clicking a control on the Layout Editor when it is scrolled no longer makes it select the wrong item to add the events to.

29863 IDE: Edit Super class is in the contextual menu again. It opens the super in a new tab when you select it.

10886 IDE: Exporting and importing of localization data no longer has issues if there are nested modules with the same name as the full path is now used.

19398 IDE: Extension methods for Interfaces now autocomplete.

31211 IDE: Fixed a NilObjectException that could occur when loading old recent items.

30219 IDE: Fixed issue with controls bleeding through parent ContainerControls.

31564 IDE: Fixed the property inspector groups for WebTextField.

31910 IDE: Graphics for Windows and Linux updated - should look better.

31472 IDE: Implementing an interface optionally adds #pragma error instead of #error.

10126 IDE: Improved speed of Layout Editor.

26854 IDE: In the Code Editor, you can now extend the selection word by word.

31426 IDE: Local variable declarations are found for autocomplete regardless of whether there is a bunch of white space preceding them or not.

30810 IDE: Methods and properties that are inherited, as in the case of Introspection.PropertyInfo, are in the autocomplete list where they might not have been before.

31087 IDE: Notes in text (VCP) projects can once again be edited after the initial save of a project.

30555 IDE: Now ignore the scroll wheel on property editors that use a combo box (method name, menu handler name and text font).

29736 IDE: Object is now in the autocomplete list.

26295 IDE: Option-tab has no special meaning so behaves like pressing Tab and will trigger autocomplete.

28364 IDE: Pressing Ctrl-D duplicates the selected item in the Layout Editor.

31397 IDE: Pressing Option (on OS X) or Alt (on Windows and Linux) when closing a tab closes all other tabs, leaving the "left most" tab open.

31145 IDE: Profile data is not hidden when you filter or clear the filter.

30809 IDE: Renaming a folder that has the same name as an existing super class no longer renames the super class in the instances.

6721 IDE: Replacing a fully selected word in auto complete with the autocomplete selection of the same thing is no longer offset to the left by the length of the selected item.

31263 IDE: Rows that start with "Main Thread" or "Thread (xxxx)" will now jump to the right item in the project source code when double-clicked.

30775 IDE: Selecting a group of objects in the report editor is no longer quite so slow.

21315 IDE: Shared method parameters now autocomplete properly.

9898 IDE: Shift-Option-Up and Shift-Option-Down in the Code Editor extend the selection as expected.

31438 IDE: Standardize format won't change the NAME of the method being used in a declare if it matches the name of a Xojo module, class, etc.

14727 IDE: The local variable declared in a "Catch <identifier>" or "Catch <identifier> as type" autocompletes properly within the Catch portion of the code.

32006 IDE: The tab order on the Project Chooser has been fixed.

31537 IDE: Using a folder with special characters in the name in a build copy step properly saves and restores in various project types.

10225 IDE: Using special characters (like ƒ) in the name of a file / folder now works.

31342 IDE: When debugging a Carbon app, the debugger no longer crashes when looking at contents of a ContainerControl.

3899 IDE: When you do a "super return" (shift-return) to close a line starting with #if the matching #endif is set to the same case as the #if.

31394 IDE: When you select an error in the error listing it jumps to the right item in the Navigator.


24054 Linux IDE: Now recognizes if Feedback is installed.

30046 Linux: Dragging and dropping an item (that was initiated outside of your application) on to a control that sits on a TabPanel now properly drops it to that child control instead of the TabPanel.

32066 Linux: FolderItem.CopyFileTo now preserves symlinks


32047 MacCocoa/MacConsole: An issue where FolderItem.Item erroneously returned Nil has been fixed.


10785 RegEx: a replacement pattern, when there is no subexpression, no longer yields odd results

11583 RegEx: enforced replacement pattern subexpression limit to 50 as documented. This also changes how we treat octal values, the following rules are now applied: \120 => treated as an octal \55 => treated as an octal (since it exceeds our limit of 50 subexpressions) \12 => treated as an octal iff it exceeds the subexpression limit It is suggested that you use the $ instead as this avoids a lot of ambiguity.


31331 Web: Calling DeleteAllRows from within WebPopupMenu.Open no longer incorrectly removes rows added afterwards.

32112 Web: CGI WebApp mutex now gets cleared properly when calling App.Quit.

31561 Web: Fixed a bug in WebDeviceLocation which caused the Open event to not fire properly, which in turn caused other code to fail when the Open event javascript exceptions were fixed.

31293 Web: Fixed a regression in WebListBox where adding rows in the constructor would fail.

31726 Web: The undocumented FileCount and FileAtIndex methods have been removed from WebApplication.

31675 Web: WebHTMLViewer now scrolls properly on iOS and Android devices.

18286 Web: WebImageView now appears disabled when it is.

29332 Web: WebListBox now appears disabled when it is.

31117 Web: WebListBox.DeleteAllRows, RemoveRow, ScrollTo and Selected methods no longer cause Javascript errors if called before the Shown event.

31670 Web: WebSDK javascript methods are no longer sent to browsers if no WebControlWrapper subclasses are present in the project.

31344 Web: WebSegmentedControl no longer fires the Action event if ListIndex changes due to a non-user action.


31011 Windows IDE: Fixed issue where the IDE would not display in the taskbar after opening a project.

30948 Windows: Calling Window.Show on a minimized window now correctly restores a previously maximized window to its maximized state.

31761 Windows: ComboBox.Text now correctly returns the text in the ComboBox instead of relying on the ListIndex to match the Text (outside the selection change event), which is not a guarantee on Windows

32063 Windows: Fixed BevelButton drawing in Classic theme, also fixed drawing the focus ring (this even affected non-classic themes).

28154 Windows: Format now works properly when the user changes the default decimal/thousands separator for the English locale

31180 Windows: Initiating another drag in the Listbox.DragRow event no longer crashes.

26165 Windows: Listbox.CellHelpTag now disappears when the window is deactivated (via Alt-Tab on Windows).

31535 Windows: MouseWheel now works for windows on non-primary screen.

31089 Windows: Repositioning an ActiveX control before it's fully activated/shown can cause the ActiveX control to crash (depending on how the ActiveX control handles that particular case). We now defer this until the control is actually activated/shown to prevent crashes.

31847 Windows: RoundRectangle and Oval controls no longer draw on top of other controls that are above its z-order.

8212 Windows: SerialPortCount/SerialPort no longer opens each available port as it enumerates through them.

30933 Windows: Shell no longer crashes with commands that exceed 4096 characters in length.

24952 Windows: Shortcut keys F10 to F24 now work. Total: 107

New items

17204 All: Improved the message of the exception raised when assigning to a read-only computed property via introspection.

3827 All: Introspection.PropertyInfo now has an IsComputed property to differentiate computed properties from simple properties.

28626 Compiler: Added the If operator to the language.

The If operator behaves much like C/C++'s ternary operator, VB's IIf, or VB.Net's If operator. It takes three parameters: a boolean for the conditional, the value to be returned if the conditional evaluates to true, and the value to be returned if the conditional evaluates to false.

The return type would be the common type between the two values. For example, if an Int8 and an Int32 were passed in, the result type would be Int32. Having no common type would result in a compile error.

For example, this code would print "Big number": Dim myInteger As Integer = 41 MsgBox If(myInteger > 40, "Big number", "Small number")

3988 Compiler: Locally scoped constants can now use constant expressions as their values.

31113 Framework: Added new Crypto DER and BER encoding functions: Crypto.DEREncodePrivateKey( privateKey As String ) As MemoryBlock Crypto.DEREncodePublicKey( publicKey As String ) As MemoryBlock Crypto.BERDecodePrivateKey( privateKey As String ) As MemoryBlock Crypto.BERDecodePublicKey( publicKey As String ) As MemoryBlock

13755 Framework: TargetRemoteDebugger has been added. It is true when remote debugging.

32324 IDE: "This Computer" has been removed from the Build Settings for Web projects.

31150 IDE: Added CancelBuild IDE Script Pre-Build command.

30185 IDE: If you enter an app name in the new project pane that will be the default name for saving.

30916 IDE: New "buy" dialog, logo, etc. added.

31766 IDE: Selecting multiple controls now identifies each control in the selection.

30232 IDE: Tabs are are now variable sized.

24090 IDE: The IDE on OS X now collects more information about failed assertions and crashes and will submit it automatically with the Feedback report.

31115 IDE: The inspector groups "Control Set", "Font", "Focus Control" and "Database Binding" are now on the advanced tab.

16871 IDE: When Alt (Windows), Shift (Linux) or Option (OS X) are pressed as the IDE starts, it will not load any saved UI state.

14793 Web: Added CueText property to WebTextField which is available on all supported browsers except IE8 and IE9.

31788 Web: Added two command line parameters for setting which NIC interface to use for secure and non-secure connections.

--NetworkInterfaceIndex=0 --SecureNetworkInterfaceIndex=1

The values correspond to the indexes returned when you enumerate NetworkInterfaces using the System class.

14097 Web: ShowURL now takes an optional parameter "InNewWindow as Boolean" which defaults to False, which asks the browser to open the URL in a new window. If the browser has popup windows disabled, this method will fail silently.

27913 Web: WebContainers now behave better on mobile devices with regards to scrolling. Touch-scrolling is now only enabled if you have scrolling set to Always or Auto and there is overflow content.

17238 Web: WebListBox now has a HeaderPressed event and a HeaderStyle property. Total: 20


31446 Console: Failed framework assertions now cause the process to abort instead of continuing in an unknown state.

31168 Desktop: All uses of QuickTime and QTKit have been removed. As part of this, the following have been removed from the framework:


  • EditableMovie

  • QT3DAudio

  • QTEffect

  • QTEffectSequence

  • QTGraphicsExporter

  • QTGraphicsExporter

  • QTSoundTrack

  • QTTrack

  • QTUserData

  • QTVideoTrack

  • System.QuickTime

MoviePlayer properties:

  • MoviePlayer.EditingEnabled

  • MoviePlayer.PlayerType

  • MoviePlayer.PlaySelection

  • MoviePlayer.QTMovieController

  • MoviePlayer.QTVRNode

  • MoviePlayer.QTVRNodeCount

  • MoviePlayer.QTVRPan

  • MoviePlayer.QTVRPanMax

  • MoviePlayer.QTVRPanMin

  • MoviePlayer.QTVRPanTiltSpeed

  • MoviePlayer.QTVRTilt

  • MoviePlayer.QTVRTiltMax

  • MoviePlayer.QTVRTiltMin

  • MoviePlayer.QTVRZoom

  • MoviePlayer.QTVRZoomMax

  • MoviePlayer.QTVRZoomMin

  • MoviePlayer.QTVRZoomSpeed

  • MoviePlayer.Rate

  • MoviePlayer.SelLength

  • MoviePlayer.SelStart

MoviePlayer methods:

  • MoviePlayer.Clear

  • MoviePlayer.Copy

  • MoviePlayer.Cut

  • MoviePlayer.Paste

  • MoviePlayer.QTVRHotSpotCount

  • MoviePlayer.QTVRHotSpotID

  • MoviePlayer.QTVRNodeTypeObject

  • MoviePlayer.QTVRNodeTypePanorama

  • MoviePlayer.QTVRTriggerHotSpot

  • MoviePlayer.QTVRTriggerHotSpotNames

  • MoviePlayer.Undo

FolderItem methods:

  • FolderItem.CreateMovie

  • FolderItem.OpenEditableMovie

Global methods:

  • GetQTCrossFadeEffect

  • GetQTGraphicsExporter

  • GetQTSMPTEEffect

28995 IDE: You can now tear off tabs and there is a spill-over menu on the right when there are too many tabs to display.

31683 MacCocoa: A new MoviePlayer control has been written which does not rely on QuickTime/QTKit.

31685 MacCocoa: The Cocoa framework is now a framework bundle inside of the Frameworks folder instead of a dylib.

31709 Plugins SDK: Functions and types relating to QuickTime have been removed from the SDK. Stubs remain in place in the runtime in order to avoid older plugins crashing, but the stubs are all no-ops. Total: 6

Docs and examples

31148 DocLangRef: Added missing ReadAll method to StandardInputStream.

32386 DocLangRef: Added missing StringShape.TextUnit property.

30719 DocLangRef: Added missing WebListBox.MultiLine property.

31558 DocLangRef: Changed ContainerControl Super from "Window" to "Object".

31248 DocLangRef: Correct info for result of asynchronous HTTPSecureSocket.Post.

31493 DocLangRef: Fixed incorrect example code for WebPicture.Preload.

31568 DocLangRef: GetFolderItem can use GetSaveInfo strings.

31483 DocLangRef: On MenuBar page, changed name of default menu bar to MainMenuBar.

30121 DocLangRef: Removed WebDialog.Hidden event.

32103 DocLangRef: Updated descriptions for RecordSet.Field and RecordSet.IdxField.

30662 DocLangRef: Updated Structure topic to indicate that a Variant can contain a Structure.

31439 DocLangReg: Updated SQLite version for SQLiteDatabase.

31379 DocUserGuide: Cleaned up placement of figures for ListBox section.

32346 DocUserGuide: Fixed incorrect Const example.

31277 DocUserGuide: Fixed label for Figure of Remote Debugger Stub.

31186 DocUserGuide: Fixed typo in DrawPicture example in "Graphics and WebGraphics section".

31378 DocUserGuide: User Interface book: Fixed Label on ListBox Figure 2.57.

18022 Examples: Added Communication/Internet/GoogleMaps example to show how to display an interactive Google Map using an HTMLViewer.