Version: 2017 Release 3
Developer: Xojo Inc
Mac Platform: Intel
OS Version: OS X 10.9 or later
Web Site: http://www.xojo.com/
A powerful object-oriented software programming platform that offers you a wide range of tools that can be used for creating desktop, web, or mobile applications
The Xojo programming platform is designed to use the Xojo language to allow developers to create powerful and cross-platform applications by making use of object oriented tools.
As a result, Xojo can be successfully used by people that have just started creating software, but also includes powerful functions that provide the depth required by experienced programmers.
Clean and organized design
To help you access the language’s capabilities in a more intuitive manner, Xojo provides a simple graphical user interface.
The main window is separated in three areas: in the left panel you can view the project contents, the center is reserved for previewing the results, while the panel on the right allows you to customize the currently selected element.
Wide collection of predefined elements
Xojo comes with various types of buttons, input methods, objects, constants, operators, built-in methods and functions, and much more. Browse the included library to view all the available possibilities and include some of them in your own project.
Note that both the support area of the Xojo website and the software archive provide access to various resources, examples, templates, plug-ins, or scripts designed to help you get started.
Built-in Code Editor designed to help you test new apps right away
Xojo offers you the possibility to use its Code editor to start programming your application. Xojo is providing a straightforward language and also allows you to personalize the syntax highlighting pattern to match your own needs, among other things.
Xojo offers you the possibility to compile and run the applications to check the end results. Moreover, Xojo can analyze your project, displays all the resulted warnings and helps you understand what went wrong.
Powerful yet easy to use software development platform
The intuitive graphical user interface makes Xojo very easy to use even by inexperienced programmers, while the Xojo language provides the depth for developing more complex projects.
At the same time, the extensive documentation and the resources library, can also prove very useful if you just started making software.
What’s new in Xojo 2017 Release 3
- 49461: Build: Changes made to Launch Screens now properly appear when you run the iOS app.
- 49680: Build: Building iOS applications now strips “detritus” off of provisioning profiles to avoid code signing errors.
- 42815: Compiler: The Windows IDE can now properly link hundreds of classes when building for 64-bit Windows.
- 49890: Compiler: Fixed a regression that caused failed assertions in the linkers due to invalid imports.
- 49538: Crashes & Assertions » Crash: Fixed a crash with MemoryBlock.ColorValue under 64-bit that could happen when reading from the last 4 bytes of the MemoryBlock.
- 49887: Crashes & Assertions » Crash: Importing an ICNS file no longer causes a crash.
- 50241: Crashes & Assertions » Failed Assertion: Text projects checked on from one VCS on one OS to one using a different line ending can cause lots of blanks lines and subsequent reads of text projects to fail in odd ways. This case fixes a couple spots where this could occur so reading text projects is less vulnerable to odd check out issues from VCS systems.
- 49355: Crashes & Assertions » IDE Unhandled Exception: Stopping a debug run no longer causes an nil object exception.
- 49519: Crashes & Assertions » IDE Unhandled Exception: Dragging a second instance of a web dialog onto a web page no longer creates a control array initially.
- 49847: Crashes & Assertions » IDE Unhandled Exception: The autosave when running a project in the debugger now uses less memory as the project is directly written to temporary files rather than first stored into memory blocks.
- 50015: Crashes & Assertions » IDE Unhandled Exception: Autocomplete of Runtime exception no longer causes an exception in an IDE script Note that Runtime exception will NOT autocomplete either (which is by design for now)
- 48190: Database Plugins: MySQLCommunityServer no longer crashes preparing a SQLStatement when the results contains a MediumInt column.
- 49147: Debugger: Debug runs clean up correctly when ended.
- 8813: Framework » All: Tooltips on macOS now hide correctly instead of persisting.
- 42969: Framework » All: JSONItems with Circular References will now raise a JSONException with an error code 14 when serializing instead of a StackOverflowException in the middle of the framework code.
- 48608: Framework » All: Returning True from DragEnter and DragOver now correctly prevents the drop.
- 48841: Framework » All: JSONItem.Lookup now returns string values with the encoding set to UTF8 just as JSONItem.Value does.
- 49026: Framework » All: Exceptions raised in a thread now call the app's UnhandledException event instead of silently ignoring it.
- 49039: Framework » All: Overflow issue in profiler has been corrected. Incorrect calculation of percentage of run time in exported profile text files is obviously impacted and should be correct now.
- 49311: Framework » All: Collapsing a ListBox row now sets the expanded state correctly before calling user code.
- 49470: Framework » All: RGBSurface.Transform no longer affects alpha channel on Windows and Linux.
- 49720: Framework » All: Fixed a spurious OutOfBoundsException with MemoryBlock.ColorValue on 64-bit when there are fewer than 8 bytes left in the MemoryBlock.
- 49630: Framework » Linux: Picture.CopyColorChannels no longer aborts with an undefined symbol error for Console builds on Linux ARM.
- 49632: Framework » Linux: Xojo.IO.FolderItem no longer crashes on iterating non-existent paths.
- 50221: Framework » Linux: TextField center and right aligned text is now correctly offset.
- 43004: Framework » Macintosh (Cocoa): ListBox help tags now function on 64-bit macOS.
- 47605: Framework » Macintosh (Cocoa): Text on reports now draws properly for 64-bit apps.
- 49310: Framework » Macintosh (Cocoa): Listbox ctrl+click and right-click on a hierarchical widget now behaves consistently when a contextual menu is presented.
- 49672: Framework » Macintosh (Cocoa): The IDE no longer logs warnings about ignoring key bindings when running on macOS 10.12.
- 33446: Framework » Web: WebTextField.AppendText now works properly when the field already contains text.
- 39130: Framework » Web: WebMoviePlayer URLs are now trimmed before sending them to the browser.
- 43452: Framework » Web: WebPopupmenu now get focus when SetFocus is called.
- 43881: Framework » Web: Web Drag & Drop no longer raises an OutOfBoundsException if one of the origin coordinates couldn't be determined.
- 46179: Framework » Web: Non-Web controls placed on WebContainers no longer cause an IllegalCastException in the web framework.
- 46965: Framework » Web: Non-Web controls placed on WebContainers no longer cause an IllegalCastException in the web framework.
- 47820: Framework » Web: WebControl.HelpTag now correctly handles line endings.
- 47866: Framework » Web: WebTextField.CueText is now correctly escaped.
- 48987: Framework » Web: Setting a WebListbox.CellPicture to Nil no longer raises a NilObjectException.
- 49719: Framework » Web: Session.LanguageCode now has its encoding set to ASCII instead of being Nil.
- 49881: Framework » Web: Calling Session.Quit again disconnects browsers from your app.
- 19616: Framework » Windows: Submenus can now be disabled when there are no child items.
- 48799: Framework » Windows: Drag rectangles no longer look faded out depending on the size of the DragItem rect.
- 49271: Framework » Windows: Assigning an empty string to the Clipboard now removes the Text clipboard format from the Windows clipboard so that other clipboard formats (like pictures) can be treated as the primary source.
- 49330: Framework » Windows: Toolbar icons are now properly resized for the DPI scale.
- 49332: Framework » Windows: Toolbar text captions now automatically adjusts their size when the DPI scale changes.
- 49415: Framework » Windows: Xojo.Net.HTTPSocket requests on Windows that trigger AuthenticationRequired now properly clears the contents before a follow-up request is initiated with the correct authentication.
- 49767: Framework » Windows: A control initiating a popup menu (or potentially other scenarios where a new window is displayed) now properly receives its MouseUp event.
- 49183: IDE: Dragging IDE windows around behaves a lot better even with thousands of controls in a layout. Dragging IDE windows between screens may still see the pinwheel as the entire representation has to be rebuilt to account for resolution switches. Using container controls to limit the number of controls on a single window is still strongly encouraged.
- 49048: IDE » Auto Complete: Extension methods in external modules now also autocomplete.
- 49353: IDE » Auto Complete: Fixed a typo in the Syntax Help description for Variant.ColorValue.
- 49932: IDE » AutoLayout: Property value “Todo” is no longer set on top and bottom constraints.
- 17052: IDE » Code Editor: Altering the Inspector Behavior for classes that have instances on layouts get changes to the Inspector Behavior pushed to subclasses and instances on layouts. Note that this will not overwrite existing instances property values but any changes to Inspector Behavior visibility will be propagated.
- 46838: IDE » Code Editor: Folding a block of code then deleting an empty line above using the “delete key” (not backspace) now works.
- 48814: IDE » Code Editor: Automatic code reformatting takes effect when you click away from a line.
- 48965: IDE » Code Editor: Syntax tip area resizes as gutter width changes for code editor line numbers.
- 49566: IDE » Code Editor: Windows IDE code editor now refreshes properly after each key press.
- 49712: IDE » Code Editor: Typing “declare sub” followed by a return no longer causes an exception when the code cleaner is on.
- 50108: IDE » Debugger: Can debug to either a 32-bit or 64-bit stub.
- 49718: IDE » Error & Warning Panel: Exception when copying from the error report has been fixed.
- 49272: IDE » FileIO: Tab stops don’t come and go when saving a text project in some cases with control sets.
- 50119: IDE » FileIO: Images export as expected and can subsequently be imported as well
- 49001: IDE » Find & Replace: Search results are added to the tab history as you click through them so that back/forward work properly.
- 49852: IDE » Find & Replace: Replacing the array size on an array property declaration no longer also adds a default value.
- 49387: IDE » Inspector: Focus is retained in the property editor that caused the inspector to need to be rebuilt. This fixes a regression in r2 and 2.1
- 49489: IDE » Inspector: When an item is not compatible with anything (all flags disabled) we write out "false" for the compatibility flags instead of a blank string which means "compatible with everything”.
- 49526: IDE » Inspector: Renaming a delegate then collapsing the group row for delegates no longer erroneously results in the group row not being expandable.
- 49563: IDE » Inspector: Switching from 32-bit to 64-bit display settings for structures immediately redisplays the structure with recomputed sizes.
- 49588: IDE » Inspector: If the scope menu gets focus via the keyboard and you press shift-tab the focus now moves backwards.
- 49614: IDE » Inspector: MenuBar selection in Inspector, such as from the App or Window object, no longer includes a useless separator on Windows.
- 49675: IDE » Inspector: Controls that have a font setting panel in the inspector can now have the font size set. Also see related case 50221.
- 49686: IDE » Inspector: Cue Text and Text properties appear in consistent group for WebTextField, WebTextArea and WebSearchField.
- 49770: IDE » Inspector: You can now clear the iOS Entitlements field (in iOS Advanced Build Settings) if it had a value from previous versions. If it did not have a value, then this field is hidden as you should be using the Entitlement properties instead.
- 50217: IDE » Inspector: The Windows-only setting that include runtime dlls has had its label shortened.
- 48834: IDE » Layout Editor: External web containers no longer get dragged in at the wrong size.
- 49358: IDE » Layout Editor: Using the Browse item the iOS Tab Layout dialog and the SegmentedControl editors for iOS and desktop works now properly loads an Image.
- 49438: IDE » Layout Editor: Containers draw themselves properly when on another view and do not draw “unknown” icons for non-UI controls.
- 50089: IDE » Layout Editor: Canvases with their backdrop property set to an image which is missing individual resolutions now render properly in the Layout Editor.
- 49753: IDE » Library: Checked item in Library group selector is consistent with what group is actually showing.
- 49755: IDE » Library: Group selector on Library no longer remains selected.
- 49398: IDE » Licensing: Upgrade license dialog no longer cuts off the last words.
- 37469: IDE » Menu Editor: If you create a menu item array in the IDE, the indexes of the items are set properly.
- 48764: IDE » Miscellaneous: Closing the debug app tab no longer leaves another tab named the name of the app being debugged.
- 48798: IDE » Miscellaneous: Project Choose window now remembers its position and size. It will position itself fully on a single screen if you drag it to be partially on two different screens.
- 49043: IDE » Miscellaneous: Run Remote is now always enabled, regardless of the build settings.
- 49105: IDE » Miscellaneous: Windows with a background image set now draw correctly in the Layout Editor when resized instead of leaving artifacts.
- 49264: IDE » Miscellaneous: If an event definition with the name of the selected event already exists then you can’t create another.
- 49323: IDE » Miscellaneous: IDE Script Editor updates scrollbars as the windows is resized.
- 49444: IDE » Miscellaneous: Recent items menu has distinct portion of paths showing across ALL entries with files having the same name.
- 49507: IDE » Miscellaneous: Progress dialog shows up on the same screen as the window that created it.
- 49682: IDE » Miscellaneous: Image Sets can’t be made external since the items they contain already are external.
- 49757: IDE » Miscellaneous: Clear field indicator shows up as soon as there is content.
- 50485: IDE » Miscellaneous: Extra blank lines in property definitions are ignored correctly and no longer cause what appears to be project corruption.
- 49192: IDE » Navigator: Fixed a graphical glitch in Filter field.
- 49193: IDE » Navigator: Cancel button again appears when something is entered in the Navigator Filter field.
- 49738: IDE » Navigator: Entering a period as the first or only character in the Navigator filter field no longer causes an exception.
- 50155: IDE » Rendering: Undefined string constants, when used, no longer cause compilation to fail but are used as if they were the literal value (as desktop does).
- 49260: IDE » Report Editor: Report controls honor locks, and save and restore properly.
- 50068: IDE » Report Editor: Fonts on reports are the right size.
- 49623: IDE » Scripting: IDE Script Editor window uses the same kind and size of toolbar as the main window.
- 13860: IDE » Style Editor: Web style editor now fully supports undo and redo.
- 41065: IDE » Web Page Editor: Changes to web check boxes, web list boxes, web text controls and web pop up menus using the layout editor inline editors are done as actions so they can be undone.
- 49828: Lingua: Lingua no longer scrolls back to the top of the list when the list is scrolled down and a row is selected when only non-localized strings are shown.
- 47382: Remote Debugger Stub: 64-bit and ARM Console debuggers are now included.
- 48869: Remote Debugger Stub: Linux Remote Debugger Stub is now built with 2017r2.1.
- 50122: Remote Debugger Stub: Mac and Linux 64-Bit Debugger Stubs save preferences again.
- 50192: Remote Debugger Stub: Unnecessary edit copy sub menu removed.
- 49462: Database Plugins: Updated SQLiteDatabase plugin to SQLite 3.20.1.
- 49625: Debugger: Xcode 9 is now supported for building and debugging iOS applications.
- 40987: Framework » All: Framework has been updated to use OpenSSL 1.1.0e.
- 49678: Framework » All: Framework has been updated to use Crypto++ 5.6.5.
- 50092: Framework » All: AutoDiscovery, EasyTCPSocket, EasyUDPSocket events and methods now use Int32 for command parameters for compatibility with 64-bit.
- 49756: Framework » Web: App.HandleURL and App.HandleSpecialURL now have the Connection: close header set.
- 43702: Framework » Windows: Windows 8.1 and Windows 10 are included in the Windows manifest file.
- 50275: IDE: iOS plist entry for UIRequiredDeviceCapabilities specifies arm64.
- 48951: IDE » AutoLayout: Autolayout rule editor has a priority column for easier viewing of rules.
- 49350: IDE » Build Automation: Build Target Script Steps has line number toggle.
- 50306: IDE » Build Automation: When controlling the IDE using the IDECommunicator, the IDE will no longer show a dialog when the SaveFile command is issued if the IDE version is older than the project version.
- 45050: IDE » Code Editor: Code editor highlights matching blocks by drawing their “block matching lines” in blue and slightly fatter than the rest of the block matching lines.
- 48464: IDE » FileIO: The IDE now renames and deletes any obsolete files in text projects. This will: – rename the items (folders and files) – remove all the files – try and remove all the folders if they have been completely emptied (there are no user added items in the folder, such as ones they added from the Finder) – otherwise this will leave the renamed folder in place – write the items and all subitems in the new location
- 50291: IDE » Inspector: iOS devices are now grouped by iOS version and sorted alphabetically by device name in the Simulator Device menu.
- 49496: IDE » Language Reference: The IDE now creates a unique folder for the temporary files needed for the LR and cleans it up on quit.
- 49136: IDE » Miscellaneous: LSMinimumSystemVersion is written as 3 numeric parts as Apple indicates.
- 49340: IDE » Miscellaneous: IDE logging now prefixes items with [Xojo] instead of [RB].
- 49840: IDE » Miscellaneous: When projects have the same names the recent menu item will contain the part of the path that differ so it’s easier to distinguish which one is which.
- 48942: IDE » Picture Previewer: The first picture added to a new Image Set is also checked for being 72 PPI and consistent PPI horizontally and vertically as the other elements are.
- 49313: IDE » Rendering: Can name a regular method “the same” as what an event handler name would have been and no longer get compilation failures.
- 40915: IDE » Structure Editor: Projects from older IDEs that do not have a structure alignment attribute set will automatically get one added so they retain their old behavior when the compiler switches to natural alignment by default.
- 47787: Installer: Windows uninstaller now deletes folders created in the user's AppDataRoaming directory.
- 49168: Installer: Plugins, Templates and Scripts folders are now made user writable by the Windows installer.
- 49829: Lingua: Searching for a localization string by constant will now match partial strings.
- 50198: Miscellaneous: Ptr.Class no longer autocompletes as it is a remnant of a feature never released.
- 48542: Remote Debugger Stub: The 32-Bit macOS Desktop Debugger Stub has been removed as our supported macOS targets are now all 64-Bit. You can still debug 32-bit apps using the 64-bit Desktop Debugger Stub.
- 49991: Remote Debugger Stub: Desktop and Console Debugger stubs have been rebuilt with 2017r2.1 resulting in a speed boost.
- 47951: Framework » Web: WebTextArea now has a CueText property which displays on all supported browsers except IE9 (because it's not supported).
- 48641: IDE » Miscellaneous: Windows 64-bit desktop apps now display manifest settings in the Windows Build Settings (Advanced tab) for allowed Windows versions and user privileges. Windows: Set the specific versions of Windows your app supports. All are selected by default. Run As: The default is “Invoker”. You can also set to “Highest Available” or “Administrator” if you app requires additional permissions, such as to access the firewall or install a service.
- 11187: Lingua: Added a Scripting folder so that users can use XojoScript for manipulating translated text. The available context methods are: DefaultText (Read-only) contains the default text for the current constant, TranslatedText (Read/Write) contains the translated text for the current constant, ShowDialog is implemented identically to the IDEScripting version.
- 41210: XojoScript: XojoScript is now available in ARM builds.
Docs and Examples:
- 42089: Documentation: HTMLViewer.UserAgent page now notes that changing the property has no effect on Windows with the WebKit renderer.
- 44232: Documentation: Added PostgreSQLDatabase.AppName property to docs.
- 47635: Documentation: ListBox.ColumnCount page now shows correct maximum of 256.
- 49716: Documentation: Fixed a code error in User Guide UDP topic: http://developer.xojo.com/userguide/udp-communications
- 49734: Documentation: Clarified sample code on Raise doc page.
- 50186: Documentation: Wiki sidebar Migrating to Xojo Framework link updated.
- 48948: Documentation » Miscellaneous: Improved formatting of User Guide pages. Added Prev/Next links to the bottom of each page. Added table of contents to top of pages in desktop browsers with a link to generate PDF for the page. On mobile browsers, the table of contents is hidden.
- 49266: Documentation » Miscellaneous: The SQLiteBackup example now finds the DB on macOS when it is run before the project is saved.
- 29699: Documentation » User's Guide: Subclassing Controls page in User Guide now describes how property values get set for subclassed controls (http://developer.xojo.com/userguide/desktop-custom-controls).
- 47803: Documentation » User's Guide: User Guide Layout Editor page now mentions control parenting that occurs when you drag one control onto another.
- 48891: Examples: Text sent in SimpleChat example project is now properly encoded so it displays correctly when chatting between Windows and Mac.
- 49195: Examples: EmailSSLExample updated to use TLSv1.
- 49263: Examples: Examples/Communication/Internet/YouTube now uses WebKit renderer so that the videos display and play properly.
- 49285: Examples: Examples/Desktop/Controls/ListBox/ListBoxOverOnEvents added to demonstrate ListBox.DragOverRow, DropObjectOnRow events and ShowDropIndicator property.
- 49294: Examples: Examples/Advanced/Declares/WindowOpacity now works for macOS 64-bit and Linux GTK3.
- 49305: Examples: Examples/Desktop/ContainerControls/TabbedWebBrowser now properly closes browser tabs.
- 49314: Examples: Examples/Platform-Specific/Linux/GetDefaultControlSize now works with GTK+ 3 and 64-bit.
- 49322: Examples: Examples/Platform-Specific/Windows/CommandLink updated for HiDPI and 64-bit.
- 49498: Examples: Added Examples/iOS/Declares/TextFieldBorder to show how to remove/change an iOSTextField border.
- 49520: Examples: File->Close now also closes the Window in addition to removing it from the Recent Items (Examples/Desktop/Menus/WindowMenu ).
- 50383: Examples: Fixed typo in FileBrowser example.
- 46561: Language Reference » Documentation: Read-only properties now appear in Italic for all new Dev Center pages.
- 47971: Language Reference » Documentation: Added Len and LenB functions to String page.
- 48006: Language Reference » Documentation: Updated markup for #If…#Endif page so that it gets imported into built-in LR.
- 48715: Language Reference » Documentation: For ListBox.HeadingIndex, removed “obsolete” note since this property is still useful.
- 48767: Language Reference » Documentation: Added DragItem.MacData and MacDataAvailable to the Deprecations page as they’ve been deprecated since 2005r1.
- 49113: Language Reference » Documentation: XojoScript.CompilerError and CompilerWarning pages now link to appropriate Scripting Errors and Scripting Warning pages in Dev Center.
- 49118: Language Reference » Documentation: UnsupportedFormatException page now has correct Name in Class Summary.
- 49232: Language Reference » Documentation: Added back the SSLv23 constant to SSLSocket, SSLSocket.ConnectionType and WebApplication.Security pages.
- 49239: Language Reference » Documentation: Fixed typo on Dev Center Xojo.Core page (essentiall should be essentially).
- 49256: Language Reference » Documentation: Gmail note on SMTPSocket now refers you to SMTPSecureSocket.
- 49396: Language Reference » Documentation: Added “unix time” and “timestamp” to the search index so that they display the Xojo.Core.Date page in search results.
- 49397: Language Reference » Documentation: Added link to docs for FieldType values for GasReport and ListBoxReport examples.
- 49687: Language Reference » Documentation: Fixed typo on PopUpMenu.Change event page.
- 50145: Language Reference » Documentation: The link for FolderItem.MacFSRef is no longer duplicated and works properly.