JDK-4404363 : Fix for 4387938 broke Drag & Drop on all supported platforms
  • Type: Bug
  • Component: client-libs
  • Sub-Component: java.awt
  • Affected Version: 1.4.0
  • Priority: P1
  • Status: Closed
  • Resolution: Fixed
  • OS: linux,solaris_8,windows_nt
  • CPU: x86,sparc
  • Submitted: 2001-01-12
  • Updated: 2002-01-11
  • Resolved: 2001-01-23
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.
Other
1.4.0 betaFixed
Related Reports
Relates :  
Description
The fix for RFE 4387938 broke DnD on Solaris, Linux, and Windows.
MMouseDragGestureRecognizer fails to recognize a drag gesture,
since an assertion in mapDragOperationFromModifiers() doesn't allow
drag if the event modifiers include something other than the old mouse 
button modifiers and key modifiers. Now event modifiers include new
mouse button modifiers, so this assertion fails.
As a result a drag cannot be initiated from Java drag source.

Comments
CONVERTED DATA BugTraq+ Release Management Values COMMIT TO FIX: merlin-beta FIXED IN: merlin-beta INTEGRATED IN: merlin-beta VERIFIED IN: merlin-rc1
14-06-2004

SUGGESTED FIX *** /tmp/geta12569 Fri Jan 12 21:19:42 2001 --- WMouseDragGestureRecognizer.java Fri Jan 12 21:20:39 2001 *************** *** 63,68 **** --- 63,77 ---- protected static final int ButtonMask = InputEvent.BUTTON1_MASK; + protected static final int FullMask = + InputEvent.BUTTON1_MASK | + InputEvent.BUTTON1_DOWN_MASK | + InputEvent.BUTTON1_CHANGED_MASK | + InputEvent.SHIFT_MASK | + InputEvent.SHIFT_DOWN_MASK | + InputEvent.CTRL_MASK | + InputEvent.CTRL_DOWN_MASK; + /* * modifier masks */ *************** *** 123,129 **** protected int mapDragOperationFromModifiers(MouseEvent e) { int mods = e.getModifiers(); ! if ((mods & ~(ButtonMask | ModMask)) != 0) { return DnDConstants.ACTION_NONE; } --- 132,138 ---- protected int mapDragOperationFromModifiers(MouseEvent e) { int mods = e.getModifiers(); ! if ((mods & ~FullMask) != 0) { return DnDConstants.ACTION_NONE; } *** /tmp/geta12607 Fri Jan 12 21:36:10 2001 --- MMouseDragGestureRecognizer.java Fri Jan 12 21:37:03 2001 *************** *** 63,68 **** --- 63,83 ---- protected static final int ButtonMask = InputEvent.BUTTON1_MASK | InputEvent.BUTTON2_MASK | InputEvent.BUTTON3_MASK; + protected static final int FullMask = + InputEvent.BUTTON1_MASK | + InputEvent.BUTTON2_MASK | + InputEvent.BUTTON3_MASK | + InputEvent.BUTTON1_DOWN_MASK | + InputEvent.BUTTON2_DOWN_MASK | + InputEvent.BUTTON3_DOWN_MASK | + InputEvent.BUTTON1_CHANGED_MASK | + InputEvent.BUTTON2_CHANGED_MASK | + InputEvent.BUTTON3_CHANGED_MASK | + InputEvent.SHIFT_MASK | + InputEvent.SHIFT_DOWN_MASK | + InputEvent.CTRL_MASK | + InputEvent.CTRL_DOWN_MASK; + /* * modifier masks */ *************** *** 124,130 **** int mods = e.getModifiers(); int btns = mods & ButtonMask; ! if ((mods & ~(ButtonMask | ModMask)) != 0 || !(btns == InputEvent.BUTTON1_MASK || btns == InputEvent.BUTTON2_MASK || btns == InputEvent.BUTTON3_MASK --- 139,145 ---- int mods = e.getModifiers(); int btns = mods & ButtonMask; ! if ((mods & ~FullMask) != 0 || !(btns == InputEvent.BUTTON1_MASK || btns == InputEvent.BUTTON2_MASK || btns == InputEvent.BUTTON3_MASK
11-06-2004

EVALUATION The assertions are overly constraining. They should be loosened. See Suggested Fix. david.mendenhall@east 2001-01-12
12-01-2001