PRODUCTS

Release Notes - Curl IDE 7.0

Known Issues - Curl IDE 7.0

Contents

Installer

Must log out and log in again to see linux start menu items

On Linux systems running the Gnome window manager, the Start Menu items are not displayed following installation of the Curl IDE.

Workaround: Log out and log back in to force the Start Menu items to display.

Linux start menu items not created for KDE

On some versions of Linux running KDE, installing the Curl RTE and Curl IDE does not create Start Menu entries.

Workaround: Run these applications from the command line.

Curl RTE => /opt/curl/surge/6/surge 
Curl IDE => /opt/curl/surge/6/surge-lab

Note that if more than one numbered subdirectory exists, you need to invoke the highest numbered one. That is, /opt/curl/surge/6/surge rather than /opt/curl/surge/5/surge

GUI and Graphics

Default Draw Operation Changed

The default DrawOperation for Renderer2d objects has changed from source to mask. This has the potential to affect any applet that performs its own rendering using the Renderer2d interface directly, without specifying a DrawOperation via with-render-properties. Previously, the default behavior was to ignore transparency; now, the default behavior is to respect transparency specified as a FillPattern or elements of a Pixmap. To preserve the previous behavior, simply wrap any rendering calls in:

{with-render-properties draw-operation =
    DrawOperation.source on renderer2d do 
        [your drawing code here]
}

Underline on trademark symbol on Linux

If an underline style is applied to a trademark symbol, the underline position may be offset relative to adjacent characters on certain Linux systems.

DrawableGraphic.occlusion-performance-mode limitation

There are three possible settings for DrawableGraphic.occlusion-performance-mode, "high-performance", "accurate-occlusion", and "best-effort". At the present time, "best-effort" is the same as "high-performance" mode. If your applet requires DrawableGraphic objects to overlap with other kinds of graphical objects, specify "accurate-occlusion" mode explicitly.

BasicConnectedRecordSet converts empty strings to null value

In a ConnectedRecordSet, empty strings in nullable columns get converted to nulls when the recordset is committed. This is an unusual case, and can be avoided by using stricter table definitions (specifically, non null constraints).

Letters in italics sometimes clipped

Any character has one bounding box that is appropriate for text layout and possibly a different bounding box that is appropriate for drawing. The Curl RTE uses the layout box in both cases. As a result, the first or last character in a line can sometimes be clipped slightly. The same effect is at times seen in most web browsers.

Directory names for Find in Directory are Case Sensitive

If you use the IDE's Find dialog to search in a directory, you can specify a regular expression for the file names to look for. On windows, this regular expression matching should be case insensitive, for example, the pattern "*.h" should match the file "WINERROR.H".

Modal Dialogs on Linux

Modal dialogs do not disable the parent window on Linux. They are still effectively modal, however.

XP and ATI 3d Rage PRo card shows graphics scrambling

In rare cases graphics output may be garbled. This has for example been observed with the ATI 3d Rage Pro card under Windows XP. These problems can often be fixed by installing the latest drivers from the manufacturers web site.

TextShape with Negative Scale Rendered Incorrectly

If you use a negative scale amount on a TextShape, the text should be rendered in a mirror image. This does not work correctly on all renderers. There is currently no workaround for this problem.

Transparent backgrounds and pointer event propagation

If a background is set on an object, it is assumed to be opaque. This means that even though you may see another object behind an object with a transparent background, pointer events are blocked by the object in front. The workaround is to unset the background of the object in front instead of setting it to "transparent".

QuickTest Playback of right-click Menus not Implemented

If you record a right-click menu action using Mercury QuickTest, it will not play back properly. In most cases the same action will be available on the main menu and/or via a keyboard shortcut. Recording one of these alternatives can be used as a workaround.

QuickTest playback not available until applet finished loading

QuickTest playback mechanism is not available until an applet has completely finished loading. This means that If an applet brings up a dialog while it is loading, QuickTest cannot be used to test the dialog. The solution is to use {after 0s do } to bring up the initial dialog. This will delay execution of the code until the applet has finished loading.

In QTP, GroupBox label Used to Describe Control

The QTP "test-name" property is not always the same as the test-name property on Curl controls. The QTP test-name is the control is the Curl test-name if there is one, otherwise it is the "description" of the control. Also, many controls do not have a description internally (such as a button label) so they look for a label preceding themselves and use that as the description. The first control in a GroupBox may therefore end up using the GroupBox label for its description. The workaround is to assign a test-name in the Curl code for this control.

Note on Language Support

The only languages fully supported and tested by the Curl RTE are U.S. English and Japanese. Most languages that read from left to right can be displayed and entered in a control in a Curl applet provided that the appropriate font is requested and is available on the system where the applet is running.

QTP user functions cannot have the same name as Curl objects when TEA-manager.xcurl is running

When using Mercury's QuickTest Professional (QTP) to test Curl applications, the test names given to the Curl controls in the appolication cannot be same as any QTP user function.

Unregister QTP button on control panel does not work on Vista

When running the Curl RTE and Mercury's QuickTest Professional on the Microsoft Vista operating system, you will only be able to use the Register and Unregister QuickTest button on the Curl RTE Control Panel unless you turn off User Access Control (UAC) on Vista.

Using CTRL+click or Apple Key+click on a link to a Curl applet does not open new tab

If you hold down the control key on a PC or the Apple key on a Mac and click on a link to a Curl applet, the linked applet will not open up in a new tab.

GDI+ can use invert-destination via GDI now

On Windows, if you perform 2D rendering with DrawOperation.invert-destination on a Renderer2d based on Microsoft's GDI+, instead of inverting the destination, the renderer will use a hatched pattern. (You will be using GDI+ if you set the global or View RenderingMode to high-quality, or if you use a Canvas, AntialiasedFrame, or offscreen Renderer2d with use-host-rendering? = false and support-advanced-draw-operations? = false.) Please note that this behavior may change in a future release of Curl.

Security issue with Clipboard.set-string and Clipboard.set-object

An unprivileged applet may not copy information to the clipboard unless it is done in response to a user gesture (mouse click or key press). A SecurityException will be thrown if this is attempted. This change was implemented in all supported versions of the Curl RTE to improve security.

The height of a DropdownList will shrink if an empty string is one of the list members

The height of a DropdownList may vary depending on the item selected, if the items in the list do not all have the same height. One common case that there is a blank item in the list. This can be coded to use a nonbreaking space for the label of the item where the value is the empty string:

{DropdownList
    "asd",
    "asdasda",
    {ListValueItem "", label = {text \ }}
}

Curl IDE, VLE and Documentation

Difficulties Checking Out Files With Incorrect Encoding

If a file with an incorrect character encoding has been checked into your source code repository and the IDE tries to check it out for editing, the operation may not work correctly. The workaround is to check out the file outside of the IDE before editing the file.

Incomplete file for Debugging

If you set a breakpoint at the top level of an applet loaded from an http URL, when you hit the breakpoint the file may be only partly displayed.

The recommended practice is to to use the IDE's server mapping feature to debug files from an http server. In the IDE, choose Preferences... from the Edit menu and select the General tab. Check the Enable URL mapping button and fill in the information required.

VLE Extension Editor Can't See Unsaved run-time Package Files

VLE Extension Editor will not be aware of any changes to files open in the IDE with changes that have not been saved. To work around this problem, save all modified files in the IDE before working with the Extension Editor.

Linux: User can launch IDE before package caching completes

Developers are not prevented from launching the Curl IDE on Linux before the installation process has completed; there is no visible indication that the installation has completed fully.

Workaround: After installing the Curl IDE, and once the 'rpm' command invocation has returned successfully, some installation tasks to compile and cache IDE packages continue in the background. Invoke 'ps' and look for instances of the 'surge' process. When none appear, installation is complete. On a very low end machine, or a very busy one, this background processing may take a few minutes. On more powerful machines, this step rarely takes more than 1 minute.

The Curl IDE will execute properly even if it is started before these background installation tasks complete. However, performance may suffer both initially and going forward, so waiting for background installation tasks to complete is strongly recommended.

pcurl evaluates conditional 'include's based on deployer's environment rather than on user's

Conditional includes in pcurled package files are evaluated based on the deployer's machine environment, not the user's. This behavior is wrong since the pcurl version should behave identically to the Curl source version, which evaluates conditional includes based on the environment where execution takes place.

A package should behave the same after pcurling as before. Use of api-version-switch, platform-switch, etc. can lead to misbehaviors in pcurled package files.

For example, consider this code fragment.

  {api-version-switch
   case "4.0" do
      {include "old-source-file.curl"}
   case "5.0" do
      {include "new-source-file.curl"}
   else
      {error "error"}
  }

This code will work fine during developer testing, but will include the version of the file which is chosen based upon the developer's api-version when the project is deployed.

Workaround: Do not use conditional includes in deployed packages.

Expanding a Large Array in the Debugger

Use care when expanding an array in the debugger. There is currently no limit on the number of items that can be displayed.

Changed project settings are not undone by Undo Checkout

Changed project settings are not undone by Undo Checkout. You must close and re-open the project after the undo operation. This problem only affects users that Undo Checkout on a project file, and only in the case where the project's target settings were changed.

Chart Invisible Until width and height are Set

In many circumstances a Chart object will be invisible unless you set the width and height explicitly. If you add a Chart to a layout in the VLE and it is not visible, try setting the width and height.

VLE Allows Top Level Objects for Wrong API Version

The VLE's New File and New Layout dialogs let users specify the type of container object to create for the layout's top-level object. However the VLE makes no attempt to limit this list to only the objects that are valid for the file's API version. For example, if you have a 3.0 project, open the VLE, and choose New File, the dialog shows a default API Version of 3.0. However, the list of top-level containers includes 5.0 containers such as TabAccordion. If you are working in an older project, be careful not to choose an inappropriate top level container.

VLE Extension editor Supports Current Version Only

The VLE Extension Editor only supports the current API version. To construct or modify a VLE Extension for a particular IDE version, you must install that IDE.

IE 7 thinks Curl applet is still loading when running file from the IDE

If you use Internet Explorer 7 with the tabbed browsing feature turned off, when you run a Curl applet you may see that IE 7 displays the animated spinning icon by the address filed, indicating that IE 7 thinks the applet is still loading although the file has completed loading.

If you reload the applet in IE 7, the animated spinning icon will stop when the appplet finishes loading.

Problems with IDE resync on deployment option

When using the option in the Curl IDE to resync on deployment, make sure to read the reccommended usages guidelines outlined in the Curl Documentation in chapter Caching and Synchronization: in Curl Developer's Guide -> Packaging Content -> Caching and Synchronization. < !-- 31979 -->

Debugger cannot find source for applet stopped due to RTE error

In the Classic IDE, if a runtime exception ocurred inside code for which there was no source information, the stack would be searched for the first frame where there was such information and that frame would be selected to show the error. In CDE2, the first frame in the stack is always selected whether or not it contains source information.

File Manipulation, I/O, OCC and Persistent Data

Curl exiting doesn't flush I/O buffers

If you open a Curl file, write to it and exit, any buffered data will be lost when Curl exits. This results in not all the data appearing in the file. In order to get around this problem, "flush" must be explicitly called, or the file must be closed before Curl exits.

curl://occ always opens in default browser

On Windows, OCC applets ("curl://occ/...") open in the default browser even when the Url is entered in the address field of a browser which is not the default.

Last Modified time sometimes shown as None with IIS server

The Last Modified time in the Temporary Internet Files is correctly set the first time a package is loaded, but on subsequent loads (with IE and Curl shut down while the package is edited to change it) the Last Modified Time is shown as None.

Because the 'resync-as-of' parameter in manifests and applets depends upon the Last Modified Time, manifests and applets appear to be up to date even when they have changed.

Workaround: No recommended workaround is known at this time. This problem appears to be a limitation in the IIS web server, so deploying to other web servers will avoid the problem. Changing the 'resync-as-of' time to a value in the distant future will force the applet or manifest to always reload, which is not advised for performance reasons.

Linux: Need support for 'network-offline-mode?'

'network-offline-mode?' is not supported on Linux.

Workaround: Use 'network-disconnected?' to determine whether or not the network is accessible as a close proxy for 'network-offline-mode?' on Linux.

curl://offline doesn't update the OCC applet from 6.0 to 7.0

Curl has redesigned its Occasionally Connected Computing (OCC) feature in its 7.0 release. In 7.0, OCC applets can be installed and registered with the host OS much like any other application, complete with launcher icons and uninstallers. Installed 7.0 applets run off the local disk and are automatically updated from the network when Curl detects an update on the applet's originating server.

With 7.0 installed, 6.0 OCC applets continue to behave as before. A 6.0 OCC applet runs its network copy when the network is available, falling back to the local copy only when its computer is offline. Because of this difference between 6.0 and 7.0, it is not possible to use Curl OCC's automatic applet updating feature to migrate a locally-installed OCC applet from version 6.0 to version 7.0 of the RTE.

If you have an OCC applet coded to the 6.0 API version of the Curl RTE, and you want to update it to use the improved OCC features of 7.0, you have two options. First, you can deploy the 7.0 version with a different URL from its 6.0 version. The 7.0 RTE will treat the new URL as a different applet and offer to install it as with any other new OCC applet it detects. An alternative is to instruct the users of your 6.0 applet to uninstall it before running the new 7.0 version of the applet. The 7.0 Curl Control Panel provides a new "Installed" tab to manage the local disk support for installed applets. Local support is organized by webserver hostname. Clicking the "Remove all local support for server" link will delete any legacy OCC applets installed using the Curl RTE versions 6.0 and earlier.

Operating System, Browser and Server Issues

IE Javascript problem with window containing Curl applet

If an applet is opened using JavaScript's window.open call in Internet Explorer, that window will not be closeable using window.close, unless the window.open call has happened again while the window was already open.

Workaround: If an HTML page with the applet in it using an EMBED/OBJECT/IFRAME tag is opened with window.open, then the window will be closeable with window.close. This bug is known to Microsoft, and may be fixed in future OS service packs.

browse-forward and browse-backward do not work on Konquerer 3.1.4

Applet.browse-forward and Applet.browse-backward do not work for applets running in a Konqueror 3.1.4 and early browser. If they are used, Konqueror will pop-up an error about javascript: not being supported.

Workaround: This may be fixed in more recent versions of Konqueror.

IDE does not unminimize existing Firefox window when running applets

If Firefox is your default browser, and it is running with its window minimized, when running an applet from the IDE, the applet runs in the browser, but the browser window remains minimized instead of being restored.

Issues with tabbed browsing in Firefox

The use of tabbed browsing in Firefox is not fully functional when viewing Curl applications.

Curl applet in POST response doesn't work in Konqueror 3.3.1

Any POSTed data sent to a Curl applet does not work correctly in Konqueror 3.3.1 and earlier.

Workaround: None known. This is a limitation in the Konqueror browser.

We treat all applets as sticky on mozilla-based browsers

In the following browsers, all Curl applets are "sticky". That is, they run as if '{applet.become-sticky}' appears in the applet source code. Therefore, browsing to the Url of an applet which is already in the browser history simply returns to the existing applet instance.

This limitation affects:

  • all versions of Netscape above 4.8
  • all versions of Mozilla
  • all versions of Firefox

Workaround: None. This is a limitation in the Mozilla-based browsers, which do not support providing history information to plugins.

Linux: Konqueror does not automatically notice new plugins

The Konqueror browser running under KDE does not automatically recognize the presence of the Curl plugin.

Workaround: In Konqueror, go to Settings -> Configure Konquerer -> Plugins -> Plugins Press the button labeled "Scan for new plugins".

Curl RTE on Fedora Core 3 over SSH

Recent versions of OpenSSH uses untrusted X11 cookies by default. This means you may experience errors when running Curl over SSH on Linux on Fedora Core 3. The earlier behaviour can be restored by setting ForwardX11Trusted yes in ssh_config. See the OpenSSH FAQ.

Crash when 127.0.0.1 is denied

Do not deny connections to ip address 127.0.0.1 in your firewall. The Curl RTE and Curl IDE rely on this loopback address for internal purposes. These products will not function if access to ports on this address are blocked.

Keyboard Focus in Mozilla Address Bar under Linux

If you are running a Curl applet using Mozilla on Linux, you may find that once the keyboard focus has been given to a Curl applet it is difficult to get it back to the browser address bar. This appears to be a bug in some versions of Mozilla.

Our Mozilla lacks Japanese resources

The Curl RTE on Linux will use a copy of the Mozilla browser which is included with the Curl RTE, when it needs to spawn a web-browser, if it can't find a suitable web-browser already installed on the machine. This copy of Mozilla only includes English resources, regardless of what language the user might use.

Cannot set Window Icon on TurboLinux

The Curl RTE cannot set the Window icon when running under TurboLinux.

IME Window Issues under Linux

Under Fedora Core 3, the IME window comes up with a title bar when it should not. There may then be problems with keyboard focus and with closing the IME window. However, if you start a new IME composition, the existing IME window will be closed. This appears to be a configuration problem on some systems.

Adding the following to /usr/X11R6/lib/X11/app-defaults/Kinput2 prevents kinput2's windows from getting focus for most window managers.

*SeparateConversion.input: false
*selectionShell.input: false
*auxShell.input: false

It has been reported that these app-default settings work for: fvwm2-2.4.5, sawfish-1.0.1, KDE3, icewm-1.0.9, enlightenment-0.16.5, scwm-0.99.6.2, twm (from XFree86 4.2.0).

They are unfortunately ignored by: blackbox-0.62.1, WindowMaker-0.80.0

For the window managers which observe these app-defaults settings it is an improvement, for the others nothing is changed.

Konqueror doesn't automatically notice new plugins

Each Curl user needs to manually invoke (by pressing the button) the Konqueror "Scan for new plugins" operation to force Konqueror to find the Curl plugin after Curl is installed. Otherwise, Konqueror does not find the Curl plugin and does not correctly display Curl applets.

Our installer is putting the plugin libraries in the right location. However, additions or removals of plugins are only noticed when a scan is done, either initiated by hand, or (on KDE) by "Scan for new plugin at KDE start up", which works as described. Note that it says KDE start up, not Konquerer start up.

Linux: "control-key shows mouse cursor" prevents Curl's control-key processing

On Linux, if you select "control-key shows mouse cursor" it prevents the Curl runtime from receiving the control-key state.

On Linux, Curl doesn't copy over Firefox profiles so user settings will be ignored

Curl RTE on Linux uses Mozilla based libraries to handle http: and https: URLs, and makes copies of the user's most recently used Mozilla profile to get various settings like Proxy servers to be used and client side certificates to use. However the Curl RTE does not copy over Firefox profiles, so Firefox users would need to run Mozilla to make changes to settings that would be seen by the Curl RTE.

IDE does not unminimize existing Firefox window when running applets

If Firefox is your default browser, and it is running with its window minimized, when running an applet from the IDE, the applet runs in the browser, but the browser window remains minimized instead of being restored.

Security warning when starting surge on Vista with IE 7 in protected mode

If you install the Curl RTE or Curl Lab on Microsoft's Vista with the process ieuser.exe running, when you try to load a Curl applet, you will get a security warning indicating that:

"A website wants to open web content using this program on your computer...."

To workaround this problem, you can:

  • make sure that ieuser.exe is not running when you install the Curl RTE, or,
  • reboot after installing the Curl RTE

In IE7 Quick Tabs view, Curl applications are displayed as icons.

Due to a limitation in Internet Explorer, the Internet Explorer 7 Quick Tabs view will show Curl language applets as just an icon, and will not show an image of the Applet content.

Curl applet open in both new tab and new window in IE with multi-tab setting

With newer versions of Internet Explorer, version 7.0 and newer, if you have IE set to use tabs and display new pages or links in a new tab, you can get a new version of a the Curl applet in a new tab each time you run the Curl applet from the IDE.

Workaround: Change the setting for opening new pages or links to open in the same page in IE.

API - Language Issues

Curl's cryptographic API fails on Win2K when used with Algorithm.rc2

The Curl RTE's cryptographic API (in the CURL.CRYPTO.CIPHER package) relies on the underlying operating system for its implementation. In Windows XP Service Pack 1, Microsoft changed the number of bits used by keys for the RC2 cipher such that encrypted data cannot be exchanged between Windows XP and earlier releases of Windows. Curl specifies a key length of 128 bits for RC2 on all its supported platforms, but on Windows before XP Service Pack 1, the Microsoft Cryptographic Provider used only 40 bits in an RC2 key. Your applications should not use CURL.CRYPTO.CIPHER.Algorithm.rc2 If you care about exchanging encrypted data with software running on older Windows operating systems.

Top-level syntax constants cannot be used as aliases

It is now possible to create aliases for macros and built-in syntaxes using the new 'def' syntax. For instance:

   def mydo = do
   {mydo
       {output "mydo"}
   }
This ability should be used sparingly since it can obviously lead to confusion. It is also now legal to use macros as parameterized type parameters.