| Summary: | Drag and Drop operation fails in tree for nodes which have to be scrolled to | ||
|---|---|---|---|
| Product: | [Technology] Jubula | Reporter: | Oliver Goetz <Oliver.Goetz> |
| Component: | Core | Assignee: | Zeb Ford-Reitz <zeb.ford-reitz> |
| Status: | CLOSED FIXED | QA Contact: | Oliver Goetz <Oliver.Goetz> |
| Severity: | blocker | ||
| Priority: | P3 | CC: | alexandra.schladebeck, zeb.ford-reitz |
| Version: | 1.0.0 | ||
| Target Milestone: | Juno M6 | ||
| Hardware: | All | ||
| OS: | All | ||
| Whiteboard: | |||
|
Description
Oliver Goetz
The component where the action is performed is a ScrolledComposite. This also happens in TCB, in our nightly tests the error did only occur on windows (XP, Vista, 7). I created a test case for this ticket and moved it into windows broken TS. Furthermore I´m increasing the priority to blocker since this error occurs now in nightly tests. It looks like Jubula performs some scrolling during the drag and drop. Since the drag and drop is performed entirely within a single Display.syncExec() call, the drop and the scrolling do not play nicely together. The end result is that the drop occurs on the wrong element. The solution is to split the drag and the drop operations into two separate Display.syncExec() calls. The problem with that so far has been that triggering the drag operation seems to block the UI thread, blocking further calls to Display.syncExec() until some other event occurs (e.g. the physical mouse is moved). I tried posting some MouseMove events between the separated Display.syncExec() calls, and the results look promising. http://git.eclipse.org/c/jubula/org.eclipse.jubula.core.git/commit/?id=6e831c36940ef46f4d7a25f99751dabd78157157 fixes the problem when dropping on Tree nodes. http://git.eclipse.org/c/jubula/org.eclipse.jubula.core.git/commit/?id=a1e7828cf273b634b8457e0c65ccea6fabf9e8af contains additional fixes for this bug. I suspect that the timing problem that was causing the bug was a combination of constrained resources of a virtual machine, a relatively large tree, and non-trival logic in the drop operation. This error does not occur anymore in our nightly tests so I´m closing this ticket as fixed. |