Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read this important communication.

Bug 338211

Summary: DND styles seeming change randomly while typing
Product: [Eclipse Project] e4 Reporter: Paul Webster <pwebster>
Component: UIAssignee: Eric Moffatt <emoffatt>
Status: RESOLVED FIXED QA Contact:
Severity: blocker    
Priority: P3 CC: emoffatt, remy.suen
Version: unspecified   
Target Milestone: 4.1 M6   
Hardware: All   
OS: All   
Whiteboard:
Attachments:
Description Flags
session log
none
DnDManager patch v1
none
use the non-indexed 'add' if the index is out of range... none

Description Paul Webster CLA 2011-02-25 07:49:36 EST
Created attachment 189791 [details]
session log

I clicked on the Problems view tab, and got an error.  I wasn't actually dragging and dropping at the time, although I got the error again when I showed the problems view and tried to move it back into the first position (which appear to work) and then clicked on it (which didn't).  The full log is attached.

eclipse.buildId=I20110224-2000
java.fullversion=JRE 1.6.0 IBM J9 2.4 Linux amd64-64 jvmxa6460sr9-20101124_69295 (JIT enabled, AOT enabled)
J9VM - 20101124_069295
JIT  - r9_20101028_17488ifx2
GC   - 20101027_AA
BootLoader constants: OS=linux, ARCH=x86_64, WS=gtk, NL=en_US
Command-line arguments:  -os linux -ws gtk -arch x86_64 -data /opt/pwebster/workspaces/e4


Error
Fri Feb 25 07:49:52 EST 2011
Internal Error

java.lang.ArrayIndexOutOfBoundsException: Array index out of range: -1
at org.eclipse.emf.common.util.BasicEList.addUnique(BasicEList.java:446)
at org.eclipse.emf.common.notify.impl.NotifyingListImpl.doAddUnique(NotifyingListImpl.java:393)
at org.eclipse.emf.common.notify.impl.NotifyingListImpl.addUnique(NotifyingListImpl.java:351)
at org.eclipse.emf.common.util.AbstractEList.add(AbstractEList.java:345)
at org.eclipse.e4.ui.workbench.addons.dndaddon.StackDropAgent.dock(StackDropAgent.java:217)
at org.eclipse.e4.ui.workbench.addons.dndaddon.StackDropAgent.drop(StackDropAgent.java:248)
at org.eclipse.e4.ui.workbench.addons.dndaddon.DnDManager.finishDrag(DnDManager.java:265)
at org.eclipse.e4.ui.workbench.addons.dndaddon.DnDManager.startDrag(DnDManager.java:241)
at org.eclipse.e4.ui.workbench.addons.dndaddon.DnDManager$3.handleEvent(DnDManager.java:118)
at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
at org.eclipse.swt.widgets.Display.filterEvent(Display.java:1525)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1257)
Comment 1 Paul Webster CLA 2011-02-25 08:22:21 EST
I'm getting in a lot of situations where merely clicking on a tab will "move" the tab.

PW
Comment 2 Remy Suen CLA 2011-02-25 12:05:56 EST
1. Try to drag parts around. You will get a green rectangle.
2. Add a while loop to your code somewhere  (by typing, do not copy/paste).

while {
}

3. Try to drag stuff around. You no longer get the green rectangle feedback.
4. You will probably get floating half-transparent shells or an AIOOBE (see bug 338211).
5. Add a 'long' to your loop (by typing, do not copy/paste).

while {
  long l = 0;
}

6. Try to drag stuff around. Now you get a green rectangle with said part's content inside it.
Comment 3 Remy Suen CLA 2011-02-25 12:07:53 EST
Created attachment 189832 [details]
DnDManager patch v1

A key listener is randomly changing the DND styles.
Comment 4 Remy Suen CLA 2011-02-25 12:42:34 EST
(In reply to comment #3)
> Created attachment 189832 [details]
> DnDManager patch v1

Patch released to HEAD.
Comment 5 Remy Suen CLA 2011-02-25 14:46:56 EST
Verified with I20110225-1300.
Comment 6 Paul Webster CLA 2011-02-28 11:24:10 EST
I just got the AIOOBE again with I20110225-1300


!SESSION 2011-02-28 09:37:27.970 -----------------------------------------------
eclipse.buildId=I20110225-1300
java.fullversion=JRE 1.6.0 IBM J9 2.4 Linux amd64-64 jvmxa6460sr9-20101124_69295 (JIT enabled, AOT enabled)
J9VM - 20101124_069295
JIT  - r9_20101028_17488ifx2
GC   - 20101027_AA
BootLoader constants: OS=linux, ARCH=x86_64, WS=gtk, NL=en_US
Command-line arguments:  -os linux -ws gtk -arch x86_64 -data /opt/pwebster/workspaces/e4

!ENTRY org.eclipse.e4.ui.workbench 4 0 2011-02-28 11:27:06.909
!MESSAGE Internal Error
!STACK 0
java.lang.ArrayIndexOutOfBoundsException: Array index out of range: -1
	at org.eclipse.emf.common.util.BasicEList.addUnique(BasicEList.java:446)
	at org.eclipse.emf.common.notify.impl.NotifyingListImpl.doAddUnique(NotifyingListImpl.java:393)
	at org.eclipse.emf.common.notify.impl.NotifyingListImpl.addUnique(NotifyingListImpl.java:351)
	at org.eclipse.emf.common.util.AbstractEList.add(AbstractEList.java:345)
	at org.eclipse.e4.ui.workbench.addons.dndaddon.StackDropAgent.dock(StackDropAgent.java:217)
	at org.eclipse.e4.ui.workbench.addons.dndaddon.StackDropAgent.drop(StackDropAgent.java:248)
	at org.eclipse.e4.ui.workbench.addons.dndaddon.DnDManager.finishDrag(DnDManager.java:257)
	at org.eclipse.e4.ui.workbench.addons.dndaddon.DnDManager.startDrag(DnDManager.java:233)
	at org.eclipse.e4.ui.workbench.addons.dndaddon.DnDManager$3.handleEvent(DnDManager.java:110)
	at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
	at org.eclipse.swt.widgets.Display.filterEvent(Display.java:1525)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1257)
	at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3537)
	at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3170)
	at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$7.run(PartRenderingEngine.java:842)
	at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
	at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:758)
	at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:87)
	at org.eclipse.ui.internal.Workbench$3.run(Workbench.java:542)
	at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
	at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:524)
	at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)
	at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:115)
	at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196)
	at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110)
	at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79)
	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:344)
	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:60)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:37)
	at java.lang.reflect.Method.invoke(Method.java:611)
	at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:622)
	at org.eclipse.equinox.launcher.Main.basicRun(Main.java:577)
	at org.eclipse.equinox.launcher.Main.run(Main.java:1410)
	at org.eclipse.equinox.launcher.Main.main(Main.java:1386)
Comment 7 Paul Webster CLA 2011-02-28 11:25:29 EST
Clicking on the problems view makes it hop around :-)

PW
Comment 8 Remy Suen CLA 2011-02-28 11:26:59 EST
Mm yes, this problem seems to occur even with the "simple" DND style. I got it just now also.
Comment 9 Eric Moffatt CLA 2011-02-28 11:27:50 EST
Created attachment 189964 [details]
use the non-indexed 'add' if the index is out of range...


use the non-indexed 'add' if the index is out of range...
Comment 10 Eric Moffatt CLA 2011-02-28 11:29:17 EST
Committed in >20110228. Applied the patch.
Comment 11 Eric Moffatt CLA 2011-02-28 11:29:41 EST
The above fix should at least get rid of the AIIOB's...
Comment 12 Remy Suen CLA 2011-02-28 11:38:18 EST
This other problem will occur if you drag the first element to the left, so that green bar is right left of the tab as if it's no-op. Though this too might be fixed by Eric's change.

java.lang.ArrayIndexOutOfBoundsException
	at java.lang.System.arraycopy(Native Method)
	at org.eclipse.emf.common.util.BasicEList.addUnique(BasicEList.java:446)
	at org.eclipse.emf.common.notify.impl.NotifyingListImpl.doAddUnique(NotifyingListImpl.java:393)
	at org.eclipse.emf.common.notify.impl.NotifyingListImpl.addUnique(NotifyingListImpl.java:351)
	at org.eclipse.emf.common.util.AbstractEList.add(AbstractEList.java:345)
	at org.eclipse.e4.ui.workbench.addons.dndaddon.StackDropAgent.dock(StackDropAgent.java:217)
	at org.eclipse.e4.ui.workbench.addons.dndaddon.StackDropAgent.drop(StackDropAgent.java:248)
	at org.eclipse.e4.ui.workbench.addons.dndaddon.DnDManager.finishDrag(DnDManager.java:257)
	at org.eclipse.e4.ui.workbench.addons.dndaddon.DnDManager.startDrag(DnDManager.java:233)
	at org.eclipse.e4.ui.workbench.addons.dndaddon.DnDManager$3.handleEvent(DnDManager.java:110)
	at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
	at org.eclipse.swt.widgets.Display.filterEvent(Display.java:1262)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1052)
	at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:4126)
	at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3715)
	at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$7.run(PartRenderingEngine.java:842)
Comment 13 Eric Moffatt CLA 2011-04-14 10:11:23 EDT
Is this still an issue ? It's a 'blocker' marked against M6...
Comment 14 Remy Suen CLA 2011-04-14 10:26:23 EDT
(In reply to comment #13)
> Is this still an issue ? It's a 'blocker' marked against M6...

Think the AIOOBEs and DND styles randomly changing have been fixed anyway.