| Summary: | [Tree] Virtual tree SetData event sequence mismatch | ||
|---|---|---|---|
| Product: | [RT] RAP | Reporter: | Enrico Zanaga <ezanaga> |
| Component: | RWT | Assignee: | Project Inbox <rap-inbox> |
| Status: | RESOLVED FIXED | QA Contact: | |
| Severity: | normal | ||
| Priority: | P3 | ||
| Version: | 1.5 | ||
| Target Milestone: | 1.5 M6 | ||
| Hardware: | All | ||
| OS: | All | ||
| Whiteboard: | |||
Fixed by removing the checkData from Tree#clear (similar to TreeItem#clear). Added redraw to both Tree#setItemCount and TreeItem#setItemCount. JUnit test added. |
Usign a tree with SWT.VIRTUAL style, the behavior of SWT.SetData event listener differ from SWT. Given this code snippet: ====================== public static void casetestEventErrSequenceSWT_RAP() { Display display = new Display (); Shell shell = new Shell(display); Tree t = new Tree(shell, SWT.NONE | SWT.VIRTUAL); t.setBounds(0,0,400,400); t.addListener(SWT.SetData, new Listener () { public void handleEvent (Event event) { TreeItem item = (TreeItem) event.item; int i = item.getParent().indexOf(item); System.out.println( "set data item " + i ); item.setText( String.valueOf(i) ); } }); TreeItem t1 = new TreeItem(t, SWT.NONE); t1.setText("A"); TreeItem t2 = new TreeItem(t, SWT.NONE); t2.setText("B"); System.out.println( "clear item 0"); t.clear(0, false); System.out.println( "clear item 1"); t.clear(1, false); System.out.println( "set count"); t.setItemCount(1); shell.open (); while (!shell.isDisposed ()) { if (!display.readAndDispatch ()) display.sleep (); } display.dispose (); } ====================== When run in SWT, the sequence is: clear item 0 clear item 1 set count set data item 0 When run in RAP, the sequence is: clear item 0 set data item 0 clear item 1 set data item 1 set count