JDK-6691328 : DragSourceContext returns unexpected cursor
  • Type: Bug
  • Component: client-libs
  • Sub-Component: java.awt
  • Affected Version: OpenJDK6,7
  • Priority: P3
  • Status: Closed
  • Resolution: Fixed
  • OS: generic
  • CPU: generic
  • Submitted: 2008-04-21
  • Updated: 2012-03-22
  • Resolved: 2011-05-17
The Version table provides details related to the release that this issue/RFE will be addressed.

Unresolved : Release in which this issue/RFE will be addressed.
Resolved: Release in which this issue/RFE has been resolved.
Fixed : Release in which this issue/RFE has been fixed. The release containing this fix may be available for download as an Early Access Release or a General Availability Release.

To download the current JDK release, click here.
7 b29Fixed
Related Reports
Relates :  
Relates :  
Test case

Fails on:
*openJDK 6*: b08 (/java/re/openjdk/6/promoted/ea/b08/openjdk/binaries/linux-ubuntu)
*JCK*: 6b b21 JCK-runtime
*platform*:  ubuntu 8.10 (Hardy Heron), Windows
Passes on: *JDK6uX*

For java.awt.dnd.DragSourceContext if current cursor is null, after updateCurrentCursor() operation, method getCursor() returns unexpected result - instead of DragSource.DefaultCopyDrop it returns DragSource.DefaultCopyNoDrop.

Please see attached independent test source.
It fails with the message:
bad cursor: sun.awt.windows.WCustomCursor[CopyNoDrop32x32], expected: sun.awt.windows.WCustomCursor[CopyDrop32x32] 
bad cursor: sun.awt.X11.XCustomCursor[CopyNoDrop32x32], expected: sun.awt.X11.XCustomCursor[CopyDrop32x32]

SUGGESTED FIX http://sa.sfbay.sun.com/projects/awt_data/7/6691328/

EVALUATION This is a regression of the fix for 6535356. The fix incorrectly modifies the updateCurrentCursor method of the java.awt.dnd.DragSourceContext class, by mistake the target actions is set to DnDConstants.ACTION_NONE; the udiffs are: // do defaults processing Cursor c = null; + targetAct = DnDConstants.ACTION_NONE; switch (status) { - default: - targetAct = DnDConstants.ACTION_NONE; case ENTER: case OVER: case CHANGED: int ra = sourceAct & targetAct;