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

Bug 371860

Summary: [Tree] Virtual tree SetData event sequence mismatch
Product: [RT] RAP Reporter: Enrico Zanaga <ezanaga>
Component: RWTAssignee: 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:

Description Enrico Zanaga CLA 2012-02-17 04:13:47 EST
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
Comment 1 Ivan Furnadjiev CLA 2012-02-17 04:55:51 EST
Fixed by removing the checkData from Tree#clear (similar to TreeItem#clear). Added redraw to both Tree#setItemCount and TreeItem#setItemCount. JUnit test added.