<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
<html>
<head>
   <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
   <meta name="GENERATOR" content="Mozilla/4.7 [en] (WinNT; I) [Netscape]">
   <title>Eclipse Project SDK R0.9 - SWT Release Notes</title>
</head>
<body>

<table COLS=1 WIDTH="604" HEIGHT="45" >
<tr>
<td BACKGROUND="workbench.gif"><b>Eclipse Project SDK R0.9 - SWT Release
Notes</b></td>
</tr>
</table>

<h3>
Notices</h3>
(c) Copyright IBM Corp. 2000, 2001. All Rights Reserved.
<h3>
Table Of Contents</h3>
&nbsp;1. Known Issues
<h3>
99.1 Known Issues</h3>
<h4>
99.1.1 Wheel Mouse</h4>

SWT does not directly handle the extended messages sent by the wheel mouse.
If the correct driver is installed for the wheel mouse, the extended messages are mapped to 
cursor operations that are supported.

<h4>
99.1.2 Available Colors on 8-bit Linux</h4>

Typically, in Gnome Linux installs running with 8 bitplain visuals (i.e. 256 color mode), before the 
Eclipse application is started, you already do not have any free colors.  This may mean that Eclipse
is unable to allocate the default widget background color causing it to display a white background. 
The functionality,  however, is not affected.

<h4>
99.1.3 Motif Accelerators</h4>

Keyboard accelerators on motif are sensitive to the state of all modifier keys such as the Caps Lock, 
Num Lock and Scroll Lock keys.  For example, Ctrl 'S' is not the same as Ctrl 'S' with the Num Lock key on.  
If keyboard accelerators appear to not be working, please check the state of all other modifier keys.

<h4>
99.1.4 XInitThreads and Linux</h4>

SWT makes use of the XInitThreads system function to allow graphics routines to
be invoked from non-user-interface threads. However, the implementation of XInitThreads
on Linux has several issues, which cause the following SWT problems:

<dl>
<dt><b>Printing Support</b></dt>
<dd>The X printing extension implementation on Linux currently does not work for applications
    which are XInitThreads enabled. This makes it impossible for us to provide printing
    support on Linux. Until this is rectified, <code>Printer.getPrinterList()</code> will
    always return an empty array on the Linux platform.</dd>
<dt><b>Drag and Drop</b></dt>
<dd>On Motif, SWT only supports dragging between windows running on the same system process.
    In particular, dragging a file between Eclipse and another application will cause the
    drop target application to hang. This is a result of a bug in the Motif libraries for
    applications that are running XInitThreads.</dd>
<dt><b>IME Support</b></dt>
<dd>The Japanese IME support provided by Linux is currently incompatible with applications
    which are XInitThreads enabled, and will cause them to hang.</dd>
</dl>

<h4>
99.1.5 Disposing in a Focus Event</h4>

Applications should not dispose widgets in focus changing events.  Doing so  on Motif may cause Eclipse to terminate,
since Motif accesses the disposed widget within their internal focus change event handler.
Similar but less serious issues exist on Windows such that occasionally an SWT exception can be thrown.

<h4>
99.1.6 List and ComboBox on Windows NT</h4>

On Windows NT only, you should avoid creating items in a List or ComboBox with strings longer than 1000 characters.
Doing so may result in a General Protection Fault.  This has been fixed in more recent versions of Windows.

<h4>
99.1.7 BiDi Support</h4>

The StyledText widget now provides bidirectional language support for Hebrew and Arabic locales.
Currently, this support is available only on win32, and has several known problems. It should be
considered to be a preliminary implementation only.

<h4>
99.1.8 Cursor constructor arguments</h4>

In the constructor <code>Cursor(Device device, ImageData source, ImageData mask, int hotspotX, int hotspotY)</code>,
when both a source and mask argument are specified (i.e. mask is not null), the meaning of the two arguments is
reversed. That is, the "mask" argument should be the source image and the "source" argument should be the
mask image. This problem was discovered too late in the development cycle to be fixed for R1.0. The intent is to
fix this in a future release, potentially by introducing a new more general constructor.

<h4>
99.1.9 Use of the "&" character in TabFolder</h4>

The "&" character is not currently supported in TabFolder labels. Doing so on win32, will cause the
character which follows the "&" to be underlined as if it was a mnemonic, even though mnemonics are
not available for TabFolders. On other platforms, the "&" character will be displayed correctly, but
for portability reasons, it should be avoided.

<h4>
99.1.10  ToolBar on Windows</h4>

On Windows, you must create all tool bars with the FLAT style bit set. If you do not do this,
the "hot" (rollover) images of <em>all</em> toolbars may display incorrectly.
This will be fixed in a future release.

<h4>
99.1.11  Non ASCII strings on Linux</h4>

On Linux RedHat 6.2 only, you will not be able to display text that contains non
ASCII characters. This limitation is not present on Linux RedHat 7.1 or higher.

<p><a href="hglegal.htm"><img SRC="ngibmcpy.gif" BORDER=0 height=12 width=195></a>
</body>
</html>
