Find out what is new in the release of LiveCode 4.5
LiveCode 4.5 is a major new release containing a number of new features together with a streamlined install process and improved web-plugin. This document describes all the changes that have been made – including bug fixes and new syntax. At the time of writing, this information has yet to been integrated into the dictionary or User's Guide.
• The installer will currently fail if you run it from a network share on Windows. Please copythe installer to a local disk before launching on this platform.• The Oracle dbdriver for Mac (PowerPC) is not present in this build.
The engine supports a variety of operating systems and versions. This section describes theplatforms that we ensure the engine runs on without issue (although in some cases with reducedfunctionality).
The engine supports the following Windows OSes:
Note: On 64-bit platforms the engine still runs as a 32-bit application through the WoW laye
The linux engine requires the following:
Note: The optional requirements (except for gksu and lcms) are also required by Firefox andChrome, so if your linux distribution runs one of those, it will run the engine.Note: If the optional requirements are not present then the engine will still run but the specifiedfeatures will be disabled.
The Mac OS X engine supports:
Note: The engine runs as a 32-bit application regardless of the capabilities of the underlyingprocessor.
The supported platforms that will be supported in 5.0 is currently being reviewed. However, it islikely that the following will be the case:
The structure of the IDE install has changed significantly in this release.Each distinct version has its own complete folder – multiple versions will no longer install side-byside:on Windows (and Linux), each distinct version will gain its own start menu (application menu)entry; on Mac OS X, each distinct version will have its own app bundle.
The default location for the install on the different platforms when installing for 'all users' are:
The default location for the install on the different platforms when installing for 'this user' are:
If you write plugins, or have code that relies on the location of IDE files then please ensure you usethe following access functions to locate them:
revEnvironmentToolsPath() The location containing the main IDE files.
revEnvironemntExternalsPath() The location of the externals that come with the IDE.
revEnvironmentPluginsPath() The location of the plugins that come with the IDE.
revEnvironmentRuntimePath() The location of the standalones that come with the IDE.
revEnvironmentDocumentationPath() The location of the documentation files.
revEnvironmentResourcesPath() The location of the resources that come with the IDE.
revEnvironmentUserCachePath() The location of the folder to use for caching files.
revEnvironmentUserPreferencesPath() The location of the folder to use for preference files.
revEnvironmentUserExternalsPath() The location of the folder to use for additional externals.
revEnvironmentUserPluginsPath() The location of the folder to use for additional plugins.
Important: Third-party IDE extensions must avoid placing any files inside the applicationbundle or under revEnvironmentToolsPath() (not least because you will probably not haveprivileges to do so!). Instead, they should use the user-externals and user-plugins paths asprovided. These paths are determined by the user's customization path setting, configurable inthe preferences.
The installer has been entirely replaced in this version. It is (hopefully!) a vast improvement overthe old installer, and now runs on Windows, Mac OS X and Linux.
At release the intention is that the installer will automatically detect whether authentication isrequired for the install and request it if needed.
Note: If your linux distribution does not have the necessary support for authentication (gksu) thenthe installer will run without admin privileges so will have to manually run it from an adminaccount to install into a privileged location.
On Windows, the installer hooks into the standard Windows uninstall mechanism. This is accessiblefrom the appropriate pane in the control panel.On Mac OS X, simply drag the app bundle to the Trash.On Linux, the situation is currently less than ideal:
At this stage there are likely to be issues with installs in certain situations. If you find that theinstaller fails to work for you then please file a bug report in the RQCC or email
In the case of failed install it is vitally important that you include the following information:
The license system has been replaced in this release.The new system ties your product licenses to a customer account system, meaning that you no longer have to worry about finding a license key after installing a new copy of LiveCode. Instead,you simply have to enter your email address and password that has been registered with our customer account system and your license key will be retrieved automatically.Alternatively it is possible to activate the product via the use of a specially encrypted license file.These will be available for download from the customer center after logging into your account. Thismethod will allow the product to be installed on machines that do not have access to the internet.
The open socket command no longer blocks on DNS resolution. Instead, if resolution is requiredthe command will return immediately and the DNS lookup will happen in the background. Ifresolution fails, then a socketError message is sent in the same was as if connection fails.For applications using hostNameToAddress directly, its syntax has been augmented:hostnameToAddress(hostname, [ callback ])If the callback parameter is specified then the call will return immediately and upon completion ofthe lookup, the callback will be invoked with the resolved address as a parameter.
Cursor support has been improved in several ways.The image will now automatically process any image to convert to a form suitable for display on the current platform and screen depth taking this burden off the developer. Specifically, the enginewill scale the image down to the appropriate size, and reduce the number of colors to the appropriate number of colors. Additionally, the engine has been updated to take advantage of support for larger and potentially alpha-blended cursors on platforms that support this. Specifically:
Note: It appears that alpha-blending support depends on the current screen depth on some platforms.
The export command can now produce Windows BMP format images in the same was at it previously did for gif and png:export target as bmp
The export command can now perform color reduction. To support this, the following new forms have been added:export target as ( gif | png | bmp ) with palette colorsexport target as ( gif | png | bmp ) with ( standard | optimized ) paletteexport target as ( gif | png | bmp ) with count color optimized paletteThe first form allows you to specify a list of up to 256 colors to use in the final palette. The second form will use either the standard 'websafe' palette, or will compute an optimized palette with at most 256 colors. The third form allows you to choose the size of the optimized palette to be generated. The number of colors can be at most 256. If the image has any sort of transparency, then this will utilize one palette entry. (In particular if you ask for a 256 color palette with a transparent image, you may get only 255 colors). In all cases, optional dithering will be performed as determined by its dontDither property.Note: It is a (relatively) slow process to compute an optimized palette and then remap an image against it – it should not be considered a real-time operation except for very small images.
Note: There is no support for exporting a JPEG with a reduce palette as this format is for continuous-tone images and as such the notion of palette makes no sense.
It is possible to export raw image data using the following forms:
export target as raw with palette colors
export target as raw with ( standard | optimized ) palette
export target as raw with count color optimized palette
export target as raw [ argb | bgra | abgr | rgab ]
The first three of these operate in the same way as for the other formats as described above except that instead of formatted image data you get the raw palette indices packed appropriately depending on the size of the palette:<= 2 colors will be 1 bpp<= 4 colors will be 2 bpp<= 16 colors will be 4 bpp<= 256 colors will be 8 bppThe final form allows export of the full 32-bit data of the image with 8 bits per component. In this case, the components are not pre-multiplied with any alpha channel, and appear ordered in memory in increasing bytes.e.g. The argb form will give you:
byte 0 = alpha
byte 1 = red
byte 2 = green
byte 3 = blue
Important: This feature is currently experimental. This means that it may not be complete, or may fail in some circumstances that you would expect it to work. Please do not be afraid to try it out as we need feedback to develop it further.
The engine will now attempt to use any embedded ICC color profile information that is present in JPEGs and PNGs.If a JPEG contains a color profile then the engine will attempt to use it to translate the image's colors to the default screen color space before display.When printing JPEGs, the original JPEG data will now be sent to the printer directly whenever possible, In particular, this means that any intermediate color matching for the screen that theengine performs does not affect the printed output.As an additional side-effect of color profile support, the engine now also supports YCCK and CMYK JPEG images.Note: Support for color profiles depends on the OS - in particular Windows XP and earlier only support ICC v2 profiles, Vista onwards supports ICC v4.
The engine printing system has been augmented with the ability to print to pdf. This feature uses the existing print-loop model and virtually no code changes are needed to make existing code use it.
To start a print loop that outputs directly to a pdf rather than the currently configured printer, use the following form:open printing to pdf filename [ with options optionArray ]This should be performed instead of the usual open printing command.Note: It is not necessary (and unwise!) to set the formatForPrinting option on stacks which are being printed to PDF.
The options array which can be optionally specified when opening a print loop for pdf allows you to add entries to the resulting PDF's Document Information Dictionary.The following keys are supported:Title, Author, Subject, Keywords, Creator, ProducerTheir values can be any string.
When inside a pdf print loop you can use additional commands to define hyperlinks and their targets.To define a target for an internal hyperlink, use the following form:print anchor name at anchorPointHere name is used to identify the anchor in related print link commands, and anchorPoint is the location on the current page to which any such link should jump to.To define a hyperlink use the following form:print link to target with rect linkRectangleIf target is a url, then the given rectangle will jump to that url when it is clicked. If target is not a url, it is assumed to be the name of an internal anchor as specified by the print anchor commandand clicking in the given rectangle will jump there instead.When printing fields, any text that has its linkText property set will be treated as if a print link command had been executed with the contents of the property as target, and the formattedRect ofthe text as rectangle.
The implementation of pdf printing resides in a dynamic library called revpdfprinter. The standalone builder will automatically include this in the appropriate place when building standalones.Any custom code that deals with standalones which use this feature must make sure that the revpdfprinter library resides next to the engine executable (On Mac OS X, this is inside the Contents/MacOS folder, not next to the bundle).
Sometimes it is necessary to perform operations on the local machine as an administrator, and a typical pattern for a GUI application doing this is for it to prompt for authentication at certain points.Modern operating systems do not permit a process to elevate itself, nor grant itself increased privilege. Instead, they only allow a running process to launch another process with increased privilege. Therefore, in order to support this, a new form of the open process command has been introduced that can launch a slave process with elevated permissions:open elevated process process [ for [ text | binary ] ( read | write | update | neither ) ]This form operates identically to the normal version, except that engine will ask the system to launch the given process with admin/root privileges.The standard way for a GUI application that needs to perform privileged operations to be structured is to split the application into two parts: a GUI front-end that interacts with the user, and a command-line back-end that is run with elevated permissions. These two parts can then talk to each other using a standard master-slave approach, or some other form of IPC such as sockets.Important: This feature is currently experimental. This means that it may not be complete, or may fail in some circumstances that you would expect it to work. Please do not be afraid to try it out as we need feedback to develop it further.
A number of issues with the open process command and the engine itself have, up until now, conspired to make it difficult (if not impossible!) to either run a slave process, or use the engine as slave on all platforms.These issues have been resolved in this version, thus making it straightforward to run another process and poll for input and output over stdin/stdout.
The typical form for this is along the following lines:local sSlaveProcesscommand startSlave pProcessopen process sSlaveProcess for text updatesend “monitorSlave” to me in 50 millisecsend startSlavecommand monitorSlaverepeat forever# Loop until there are no more lines to read.read from process sSlaveProcess for 1 line in 0 millisecsif the result is empty then# The slave has sent us something, so process it and loop for# (potentially) more data.else if the result is “timeout” then# There is nothing waiting for us, so exit repeatexit repeatelse if the result is “eof” then# The slave has terminated, so do any final processing and finish# monitoring.close process sSlaveProcessexit monitorSlaveelse# Some error has occurred!exit monitorSlaveend ifend repeatsend “monitorSlave” to me in 50 millisecsend monitorSlave
Some work has been done on storing and fetching settings from the videograbber.On Windows and Mac OS X, audio and video settings are now correctly retrieved and set using revVideoGrabSettings and revSetVideoGrabSettings.On Windows (when using DirectShow), the 'Camara Control' settings are now saved and restored via the grab settings commands. Specifically: pan, tilt, roll, zoom, exposure, iris, focus and flash.
Windows, Linux and Mac OS X all have an area where so-called 'status icons' can be displayed. On Windows this is the system tray on the bottom right of the start bar, on Linux this is typically the right of the panel at the top of the screen, and on Mac OS X this is on the menubar.The engine has support for adding a single status icon, and it can be configured using the statusIcon, the statusIconTooltip and the statusIconMenu:set the statusIcon to imageIdset the statusIconMenu to iconMenuSpecset the statusIconToolTip to toolTipHere imageId is the id of the image you wish to use as the icon. It will be scaled down automatically to the appropriate size for the platform and then set. The toolTip specifies what message appears when the user hovers over the status icon.The iconMenuSpec allows you to configure a menu that will appear when the user does a 'menu' click on the icon. This string uses a subset of the standard engine menu specification:[ * ] [ '(' ] [ '|' ]Here the number of tabs determines the depth of the menu (i.e. use this to create sub-menus). The optional tag is used when calling the statusIconMenuPick message.Before the engine displays the status icon menu, it will send a statusIconMenuOpening menu to the current card of the defaultStack. You can use this opportunity to change the icon menu before it is displayed, this is an analog to handling mouseDown in a menu button.When the user selects an item from the dock menu, the engine will send an statusIconMenuPick message to the current card of the default stack:iconMenuPick whichHere which will be a list of labels or tags (if specified) separated by '|' which determines which item was selected.In addition, the engine will send the following message in response to clicks on the icon:statusIconMenuClick buttonstatusIconMenuDoubleClick buttonYou can use these to perform an appropriate action.Note: If you wish to display a menu from the status icon you must use the statusIconMenu property, attempting to open a normal popup menu in response to one of the click messages is not guaranteed to work.Note: This syntax is only implemented on Windows at the moment and replaces the previously unsupported use of the icon and the iconMenu for this purpose. The properties specified above will have no effect on Mac OS X and Linux at this time.Important: This feature is currently experimental. This means that it may not be complete, or may fail in some circumstances that you would expect it to work. Please do not be afraid to try it out as we need feedback to develop it further.
To get a list of sub-keys in the Windows registry use the following function:listRegistry(parentKey)This will return a return-delimited list of sub-keys, i.e. those keys which are direct children of the given parentKey. The specified key should be in the same format as the other registry functions.Important: This feature is currently experimental. This means that it may not be complete, or may fail in some circumstances that you would expect it to work. Please do not be afraid to try it out as we need feedback to develop it further.
A randomBytes() function has been added to enable generation of arbitrary amounts of cryptographic-quality random data. To use this feature, the syntax is:randomBytes(byteCount)The function will return byteCount random bytes and uses the OpenSSL library's random data generator to do so.Note that the random data is derived from non-predictable sources where possible, meaning that it can (for the most part) be considered truly random. This is contrast to the random function which uses a pseudo-random number generator and randomSeed value.Important: This feature is currently experimental. This means that it may not be complete, or may fail in some circumstances that you would expect it to work. Please do not be afraid to try it out as we need feedback to develop it further.
The SHA-1 digest of a block of data can now be computed by using the following form:the sha1Digest of datasha1Digest(data)This function returns the sha-1 digest in the form of 20 (binary) bytes.Important: This feature is currently experimental. This means that it may not be complete, or may fail in some circumstances that you would expect it to work. Please do not be afraid to try it out as we need feedback to develop it further.
The encrypt and decrypt commands now support RSA public key encryption. The new forms supporting this are:encrypt message using rsa with ( public | private ) key key [ and passphrase passphrase ]decrypt message using rsa with ( public | private ) key key [ and passphrase passphrase ]Here key should be in PEM format, optionally protected by passphrase.The maximum length of a message that can be encrypted using RSA is the size of the key in bytes – 11. So, for a 512-bit key pair, the maximum encryptable message size is 53 bytes.
Public-private key pairs can be generated using the OpenSSL suite of command-line tools. For example:openssl genrsa -out private_key.pem 512openssl rsa -pubout -in private_key.pem -out public_key.pemWill generate a key pair of size 512-bits, placing the private key in private_key.pem and the public key in public_key.pem.For more information on these utilities see http://www.openssl.org/docs/apps/rsa.html and http://www.openssl.org/docs/apps/genrsa.html.
Use encrypt with a public key to encode a message that you only want to be decoded the holder of the private key.Use decrypt with a private key to decode a message that a sender has encrypted with its corresponding public key.Use encrypt with a private key to encode a message that a receiver can then verify has come from one of the holders of the private key (this is a signing operation).Use decrypt with a public key to verify that a message has been encoded with the corresponding private key, and there has come from one of its holders (this is a verify operation).
For signing, the maximum length of an encryptable message isn't really an issue since typically in that scenario it will be some sort of hash that would be being encrypted.For the more traditional encrypting scenario, however, the standard approach is to use public key cryptography to encrypt a random password which is then used with a symmetric cipher to actually encrypt the payload.Important: This feature is currently experimental. This means that it may not be complete, or may fail in some circumstances that you would expect it to work. Please do not be afraid to try it out as we need feedback to develop it further.
In previous versions it was necessary to set the sslCertificates property to the root certificates that HTTPS connections should be verified against. Support has now been added to locate and load the root certificates installed (and kept up to date) as part of the OS.This uses the standard root certificate keychain on Mac OS X, the standard root certificate store on Windows and uses a number of heuristics to locate this information on Linux.You can easily find out if the system-installed root certificates are being found by running the following command in the message box:get “https://www.google.com”put the result & return & itIf this results in an error about verification failure then it is likely that root certificates have not been found. Please let us know (particularly on Linux) if you find this simple test fails, making sure you give us full details of your system (e.g. Linux distribution and version).Important: This feature is currently experimental. This means that it may not be complete, or may fail in some circumstances that you would expect it to work. Please do not be afraid to try it out as we need feedback to develop it further.
The font support in the Linux engine has been completely overhauled.The engine now uses the pango library for all text layout, and renders text using the xft library.Additionally, the fontNames and related global properties will now reflect the full collection of fonts installed on the system via the fontconfig mechanism (this is the font selection system thatpowers pango).
If the linux distribution does not have the necessary libraries installed, the engine will fallback to using the old X11 font mechanism. This has vastly reduced support for unicode text, and renders without anti-aliasing.You can force this fallback by passing -xftoff as a command-line parameter to the engine.
Some work has been done to improve the appearance of applications on Linux. Although still not perfect, the native theme support should now correctly handle themes that have a transparent/alpha blended background on some of their parts.In particular, the default theme in the latest distributions such as Ubuntu 10 look much improved.
In order to provide ssl and industrial strength encryption, the engine utilizes the OpenSSL library.However, the OpenSSL team does not, unfortunately, guarantee binary compatibility between different versions. This has long caused an issue for the engine on Linux where the specific version the engine needs may not be present.In order to solve this issue, the linux engine no longer depends on any installed OpenSSL library and will, instead, (attempt to) load revsecurity.so.This loadable library is a custom build of the latest OpenSSL distribution (1.0.0a at time of writing) and includes both the ssl and crypto components.
This change introduces a new (optional) runtime dependecy for linux standalones. The standalone builder will automatically include this in the appropriate place when building standalones that have specified a need for the 'SSL and Security' library.Any custom code that deals with standalones which use this feature must make sure that the revsecurity library resides next to the engine executable.
In previous engines there were various support bundles present in the PlugIns folder inside the engine bundle. These are no longer required as their functionality has been integrated into the main engine executable.
Any code that builds standalones, or manipulates built standalones will need to be updated to not expect these to be present.
Previously unsupported syntax for manipulating the dock icon on Mac OS X is now experimental.
The current dock icon image can be set by using the global icon property:set the icon to imageIdThe engine will attempt to find an image with the given id, resize it to 128x128 and then set it as the dock icon for the application.This property has no effect on other platforms.Note: The image is only guaranteed to persist while the application runs, although in some cases the OS does appear to cache it beyond this.
In addition to changing the dock icon image, you can also configure the menu that appears when the user clicks on it.To set the dock icon menu use the global iconMenu property:set the iconMenu to iconMenuSpecHere, iconMenuSpec is a string describing the menu. This uses a subset of the standard menu specification syntax. The string should be a return-delimited list of items specified as follows:[ * ] [ '(' ] [ '|' ]Here the number of tabs determines the depth of the menu (i.e. use this to create sub-menus). The optional tag is used when calling the iconMenuPick message.Before the engine displays the icon menu, it will send a iconMenuOpening menu to the current card of the defaultStack. You can use this opportunity to change the icon menu before it is displayed, this is an analog to handling mouseDown in a menu button.When the user selects an item from the dock menu, the engine will send an iconMenuPick message to the current card of the default stack:iconMenuPick whichHere which will be a list of labels or tags (if specified) separated by '|' which determines which item was selected.Important: This feature is currently experimental. This means that it may not be complete, or may fail in some circumstances that you would expect it to work. Please do not be afraid to try it out as we need feedback to develop it further.
(bug fixes specific to the current build are highlighted in bold, bug fixes that have been reverted are stricken through)'open elevated process' fails on Linux if spaces in engine or command pathcrash when using 'open elevated process' on MacEngine fails to launch on Mac 10.3.9.8968 Manipulating the currentCard of the templateStack causes a crash8969 shell() does not block when it should on WindowsCrash after setting the label of a graphic to empty in certain circumstancesVolume control slider inaccessible in QT players on WindowsVideoGrabber settings can be reset to defaults before showing dialogs when using DirectXThe 'shortfilepath()' function does not clear the result on success on Windows.Switching a button to default to non-default causes redraw problem on Mac OS XrevBrowser crash on Windows when setting selected text to emptyPoor display of field borders on LinuxPasting unstyled text in Mac OS X can cause nothing to be pastedOn Windows and Mac OS X, 'read from stdin in ' does not function correctly in thecase of a piped child processNo output from PDF printing when running as PPC on Mac OS XMouse position 'drifts' away from click point on scrollbar as it is draggedIf a child process quits, data sent to the parent can be lost on Windows.First item of option menu doesn't hilite until another item has been.Failed Oracle connections don't report any error messageErrant mouse focusing can occur after showing a modal dialogDirectX VideoGrabber's compression dialogs don't workCrash when printing zero sized objects in some casesCrash when opening an option menu with look and feel set to MotifCertain VideoGrabber properties are not saved with settings when using DirectXCannot set the title of a stack if a QT player is present on Windows'the params' includes two copies of the handler name'Camera Control' properties including 'Exposure' are now saved in the videograbber'sGrabSettings call, when using DirectX on Windows.5 Images needs to be RLE compressed to be used as cursors1413 Some PNGs do not import correctly1690 'beep n' beeps (n-1) times2117 Engine blocks on DNS query2398 Cursor size limit3568 Crash on using a non-RLE compressed/color image when setting a cursor3977 Mac OS X cursors are scaled down to 16x166215 Arrow keys give keyUp message after typing into field6506 the watchedVariables doesn't support globals6753 Rotated image moves when toggling dontDither6866 Crash when fetching htmlText of field under certain circumstances7490 Default buttons render incorrectly on Linux7613 Crash when throwing an error in newButton handler7649 Filter command incorrectly removing empty lines7652 Some cursors turn white on Mac OS X7666 revDatabaseCursors function adds trailing comma7744 Parser allows duplicate parameters7792 Handlers can be compiled with builtin function names even though they cannot be invoked 7815 Ask file can't handle folder name in path longer than 31 characters on Mac OS X7872 Crash on testing if path containing ~ exists8064 Flip command crashes rev in certain circumstances8143 Left and right quotes and double-quotes don't appear when pasted into Rev from WordPad8264 Crash when using replaceText function in certain specific circumstances8268 Crash when compacting stack after deleting cards with background group8273 revDatabaseColumnIsNull reports False for NULL columns in SQLite8280 Stack behavior not resolved on open8327 Copying text from Safari can cause dataloss and strange characters on Mac OS X8351 SQLite query errors returning unhelpful generic error messages8427 Crash when exporting JPEG images in certain circumstances8549 revBrowser not loading htmlText before a url has been opened on Windows.8559 Setting the menuHistory of an option menu does not change the scroll position on Windows8560 Incorrect hiliting of tab buttons after using menuHistory8562 Crash when calling 'cancel printing' after 'open printing to pdf'8564 Image borders don't print to PDF8571 Setting the icon fails to set the dock icon on Mac OS X unless the image is edited first8572 printMargins causes issues when printing to pdf8573 Menu separators and disabled menu items not working in OS X Plugin.8593 Scrollbar thumb on list field can disappear8595 CMYK jpegs without an ICC profile fail to display8597 Crash in some cases when using graphic effects on images8598 Mac OS X tab buttons render with increased margin8601 Cannot slide a slider is startValue > endValue8610 Passkey property doesn't give any indication of whether the script is available8620 revDatabaseTableNames truncating data with large number of tables8621 revDatabaseTableNames doesn't remove trailing return character8622 Buttons not working properly in licensing dialog8624 Standalones not made executable on OS X if they had accented chars in path8627 Spanish dates have no spaces on Mac OS X8628 Problem when moving between different types of pulldown menu in specific circumstances8644 Empty line appears in openStacks on Windows when a menu is showing8650 Crash when operating ComboBox using keyboard on OS X8661 show/hide with visual effect doesn't take into bitmap effects8662 Printing to pdf doesn't take account of the printPaperOrientation8671 SQLite incorrectly returning empty for columns in some queries8716 Stacks containing large custom prop arrays won't load8746 Resizing a menubar group, or a menu button causes its accelerators to stop working.8769 Crash when using graphic effects on Linux in some cases8773 Player object cannot use https streams8848 Context menu clicks on datagrids in the IDE causes contents of the datagrid to be lost8888 In list behavior mode, 'the hilitedLines' are not preserved across fetching htmlText chunks8889 Video grabber set settings crashes if given an invalid parameter8929 Shell command blocks when it shouldn't8936 HTTPS only works if sslCertificates has been set correctly8943 Blocking url call doesn't start until an event message has been sent8946 Crash in script editor when editing specific script8947 Drag cursor doesn't get set to 'not allowed' on Mac OS X8956 QT Unloaded when it shouldn't be causing delay in first visual effect.
The update checker and its corresponding menu item in Help have been temporarily removed in dp-4. The version checking method is changing, and this option will re-appear in a subsequent build.
The affiliate registration item in the Help menu has been temporarily removed in dp-4. The method of affiliate registration is changing, and this option will re-appear in a subsequent build.
Use of the database query builder has been deprecated.To access its functionality, choose the Enable database query builder option on the Compatibility & Updates pane of the preferences.Note: The database query builder will be removed entirely in version 5.0.
Support for MacOS classic building has been removed. If you wish to build MacOS classic applications then you must use a previous version to do so.
Support for building for U3 on Windows has been removed. If you wish to build applications for U3 then you must use a previous version to do so.
It is now possible to specify what action UAC should take on Windows Vista and higher when the standalone is launched. You can choose one of the following options:
Default No UAC option is provided in the manifest.Save as Invoker The application will run with the same privileges as the process that invoked it.Highest available The application will be elevated to the highest privilege level the current user is allowed.Require administrator The application will be run as administrator after prompting the user for appropriate login/elevation rights.
Using the 4.5 standalone builder to build for Web will create revlets. These are compatible with the existing revWeb plug-in available from revweb.runrev.com.
An updated version of the IDE for producing LiveCode Applets and the associated LiveCode player will be made available in due course.Note: As the currently available revWeb plug-in uses the 4.0 engine, you must be careful to only use features that are present in that version.
The datagrid has been updated to version 1.0.2 build 10. The following changes have been made to it since 1.0.1:1.0.2 build 10 ColumnControlOfIndex now returns the long id of the control. The id being returned was only to be used internally and would not work outside of a script running in the data gid group itself.1.0.2 build 9 RefreshList now maintains the hilited line (index) in the data grid.1.0.2 build 8 Removed unnecessary lock/unlock screen in dgMouseDown when clicking with left mouse button.You can now pass multiple key/value pairs to SetDataOfIndex/Line.RefreshList now works with cached controls._CreateDragImageFromIndex and _CreateDragImageFromControl now reset the templateImage.Fetching dgText and dgData now restore persistent data if the control has yet to be opened.1.0.2 build 7 "column labels" was returning a comma delimited list instead of a line delimited list.arrowKey message is always passed now. Previously it was not passed if the data grid acted on the arrowKey message.The internal function that returned the list of visible controls was not always returning the proper controls and/or order of controls for tables.When refreshing data in indexes when the data grid had focus the focused control would revert to the card rather than staying within the data grid.Message catcher in dgList behavior was watching for setProp dgDataControl instead of getProp dgDataOfControl.Clicking in the vertical scrollbar area no longer selects rows when the scrollbar isn't displaying a thumb.Added dgClickLine, dgClickIndex and dgClickedInDataView.You can now set "dimmed hilite color".Added getprops for "text color", "effective text color", "header text color" and "effective header text color"._table.RepositionColumns was not setting "lock messages" to value it had when entering the handler.
Added in getProp for "border color" and "effective border color".1.0.2 build 6 AddLine now returns the line number of the newly added data.Added ColumnControlOfLine.Registry is no longer accessed unless registryRead is among the items of the securityPermissions property.Column header label, horiztonal and vertical scrollbars no longer have traversalOn set to true.The Data Grid no longer deletes row/column controls when setting the dgData/dgText or deleting the last row in a data grid.
This means no more error messages if any of the above events occur as the result of a handler called within a row/column behavior script.A ResetData message is now sent to rows (form) or column (tables) instances of the templates whenever it is being hidden and the data being displayed is empty. This allows the developer to reset any controls and clear any caches.Instances of a data grid form row/table column templates now receive the PreFillInData message when data in the row is being cleared and new data inserted.This allows the developer to clear any caches if need be.Messages sent to rows/columns are now trapped before getting to the Data Grid group. This insulates the outside world from these internal messages if not handledin the template behavior script.1.0.2 build 5 dgColumn name no longer accepts an empty string for a column name.1.0.2 build 4 Internal private function that returned list of visible controls would return more controls than there were actual records for tables that had less records than visible rows. This caused issues with visual feedback during drag reordering.When drag reordering the drop indicator was not being positioned properly when dragging above the first line of the grid.Drop indicator now draws all the way to the right in Data Grid forms.1.0.2 build 3 Custom column controls now inherit the standard column behavior or the "default column behavior" (if set) if no behavior has been assigned to the control.
1.0.2 build 2 Column headers were not properly aligned when redrawing the Data Grid.Column header labels were not being properly positioned when rednering if header alignment was centered.
1.0.2 build 1 If a Data Grid table didn't have any data in it then the horizontal scrollbar would not keep the column headers and columns in sync if the column width was wider than the visible area of the Data Grid.
Setting "fixed row height" now calls ResetList internally. This ensures that all dataand accompanying row hilites are redrawn properly based on new setting._VisibleSequences was not returning proper values in all cases. This affected dgVisibleLines.Added "header divider color" and "header divider threed color"AddData could potentially send "FillInData" with messages locked if a developer had locked messages before calling it.
(bug fixes specific to the current build are highlighted in bold)User image libraries created with conflicting ID rangesUser image libraries not sorted in drop-down listsStandalone settings does not update 'PDF Printer' check box correctlyChanged references to Revolution to LiveCode in various dialogs and windows8970 Ctrl-C fails in variable visualizerStandalone Builder doesn't include revsecurity.so when needed on LinuxStandalone Builder doesn't include externalsrevPrintField does not work well with 'open printing to pdf'Revolution appears in the re-license dialog.Resource Center can open in a corrupted state.Corrected 'LiveTalk' reference in about dialog.Standalone builder creates incorrect plist for Mac and fails to include default icon.5117 Custom functions called from msg box can't use variable values from debugger6505 WatchedVariables not supporting globals.7031 Icon chooser does not display user image libraries7136 lockMessages being displayed in the Message Box list makes no sense7291 Property inspector windowShape field behavior not the most friendly7700 Property inspector doesn't allow firstIndent to be set back to zero7879 Standalone builder won't allow custom plist to be removed from settings7929 revNumberOfRecords function incorrectly documented return value7970 Standalone builder gives unhelpful warning when attempting to include Oracle driver inLinux build7992 Data Grid cannot be created from main IDE menu bar8002 Property inspector doesn't allow changing stack name where only case is different8023 Inconsistency between creating Data Grid by dragging and by double clicking8046 Column resizing button in Data Grid inspector not disabling correctly8079 Dictionary doesn't reset scroll when changing entry8088 Script editor resizing problem on Mac OS X8142 Polygon tool can't draw polygons with more than 10 sides8147 Duplicate stack error when resuming suspended development tools8148 Various IDE windows resizing problems8152 Recent stack icons in Start Center not responding to mouse click8157 Stacks with "!" at beginning of name don't show properly in IDE Window menu8179 Launch document documentation needed improvement8206 Text clipping problem in Property Inspector8236 Logging message left in IDE
8286 Message box not showing error hints8291 Command + A doesn't work to select all in script editor find field8299 Command+w closes debugger when variable visualizer is focused8300 Documentation incorrect for password property8311 Documentation example problem for preOpenControl message8321 Script editor documentation pane doesn't disambiguate clashing keywords8376 Cancelling revBrowser navigation using browserCancel doesn't work8388 Script editor handler list not updating when closing tab8400 Build for Mac OS Classic checkbox incorrectly enabled on Windows and Linux8431 Typo in message box scrolling code throws error8438 Installer is PowerPC only and requires Rosetta to run8450 Messages sent to stack while building standalone with externals8454 revStudio dock icon badging is wrong8470 Standalone build fails when building for multiple platforms and using cursors8486 Dictionary resizing error8491 Documentation entries for revTalk objects contained incorrect syntax section8497 Variable viewer panes being incorrectly hidden when debugger regains focus8523 Line number in Script Editor overlaps horizontal scrollbar8536 Database external not included in Linux standalone with search for inclusions8546 Message box too picky about function syntax8548 Script editor handler list not updating after unlocking passworded script8579 Menu builder preview bar not working properly due to extra controls8608 Stacks with trailing spaces in their names fail to build on Windows8651 Graphic with showName and lineSize of zero breaks property inspector8655 LibUrl sending incorrect content-length header8715 Command-A not working on dictionary8719 Mnemonics for View and Edit in the main IDE menubar are the same8734 Application browser not working well with edit group mode8744 Images emptied by standalone builder with Copy Referenced files turned on8965 Pasting text into the S/E find field causes it to be overwritten rather than inserted8966 Cancelling installation does not work correctly.
Revision 1 MW Document created for issue with 4.5-dp-4.Revision 2 MW Updated engine bug fix list for 4.5-dp-5.Updated IDE bug fix list for 4.5-dp-5.Added section on new public-key cryptography support.Added section on new randomBytes support.Added section on SHA-1 digest support.Added section on root certificate discovery support.Revision 3 MW Updated engine bug fix list for 4.5-rc-1.Updated IDE bug fix list for 4.5-rc-1.Revised section on new licensing systemRevision 4 MW Fixed broken engine bug fix list.Revision 5 MW Updated engine bug fix list for 4.5-rc-2.Updated IDE bug fix list for 4.5-rc-2.Updated standalone builder 'Web' section.
Revision 6 MW Updated engine bug fix list for 4.5 release.Updated IDE bug fix list for 4.5 release.Updated licensing section.