### Eclipse Workspace Patch 1.0 #P org.eclipse.swt Index: Eclipse SWT/win32/org/eclipse/swt/widgets/Tree.java =================================================================== RCS file: /cvsroot/eclipse/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/Tree.java,v retrieving revision 1.568 diff -u -r1.568 Tree.java --- Eclipse SWT/win32/org/eclipse/swt/widgets/Tree.java 30 Mar 2011 13:51:42 -0000 1.568 +++ Eclipse SWT/win32/org/eclipse/swt/widgets/Tree.java 1 Apr 2011 20:40:37 -0000 @@ -4208,8 +4208,12 @@ while (hItem != 0) { tvItem.hItem = hItem; OS.SendMessage (handle, OS.TVM_SETITEM, 0, tvItem); - int /*long*/ hFirstItem = OS.SendMessage (handle, OS.TVM_GETNEXTITEM, OS.TVGN_CHILD, hItem); - select (hFirstItem, tvItem); + int state = (int)/*64*/OS.SendMessage (handle, OS.TVM_GETITEMSTATE, hItem, OS.TVIS_EXPANDED); + if ((state & OS.TVIS_EXPANDED) != 0) { + int /*long*/ hFirstItem = OS.SendMessage (handle, OS.TVM_GETNEXTITEM, OS.TVGN_CHILD, hItem); + select (hFirstItem, tvItem); + } + hItem = OS.SendMessage (handle, OS.TVM_GETNEXTITEM, OS.TVGN_NEXT, hItem); } } @@ -4334,18 +4338,8 @@ tvItem.stateMask = OS.TVIS_SELECTED; int /*long*/ oldProc = OS.GetWindowLongPtr (handle, OS.GWLP_WNDPROC); OS.SetWindowLongPtr (handle, OS.GWLP_WNDPROC, TreeProc); - if ((style & SWT.VIRTUAL) != 0) { - int /*long*/ hItem = OS.SendMessage (handle, OS.TVM_GETNEXTITEM, OS.TVGN_ROOT, 0); - select (hItem, tvItem); - } else { - for (int i=0; i