112390 - [Viewers] JUnit error in JFacePerformanceSuite
diff --git a/bundles/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/Tree.java b/bundles/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/Tree.java
index 112c6d9..2d11eaf 100755
--- a/bundles/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/Tree.java
+++ b/bundles/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/Tree.java
@@ -1202,8 +1202,11 @@
int findIndex (int hFirstItem, int hItem) {
if (hFirstItem == 0) return -1;
if (hFirstItem == hFirstIndexOf) {
- if (hFirstIndexOf == hItem) return 0;
if (hLastIndexOf == hItem) return lastIndexOf;
+ if (hFirstIndexOf == hItem) {
+ hLastIndexOf = hFirstIndexOf;
+ return lastIndexOf = 0;
+ }
int hPrevItem = OS.SendMessage (handle, OS.TVM_GETNEXTITEM, OS.TVGN_PREVIOUS, hLastIndexOf);
if (hPrevItem == hItem) {
hLastIndexOf = hPrevItem;
@@ -1260,8 +1263,11 @@
int findItem (int hFirstItem, int index) {
if (hFirstItem == 0) return 0;
if (hFirstItem == hFirstIndexOf) {
- if (index == 0) return hFirstItem;
if (lastIndexOf == index) return hLastIndexOf;
+ if (index == 0) {
+ lastIndexOf = 0;
+ return hLastIndexOf = hFirstIndexOf;
+ }
if (lastIndexOf - 1 == index) {
--lastIndexOf;
return hLastIndexOf = OS.SendMessage (handle, OS.TVM_GETNEXTITEM, OS.TVGN_PREVIOUS, hLastIndexOf);
diff --git a/bundles/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/TreeItem.java b/bundles/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/TreeItem.java
index 1a6e15c..78320ca 100755
--- a/bundles/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/TreeItem.java
+++ b/bundles/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/TreeItem.java
@@ -201,27 +201,23 @@
static int findPrevious (Tree parent, int index) {
if (parent == null) return 0;
if (index < 0) SWT.error (SWT.ERROR_INVALID_RANGE);
- int hItem = OS.TVI_FIRST;
- if (index != 0) {
- int hwnd = parent.handle;
- int hFirstItem = OS.SendMessage (hwnd, OS.TVM_GETNEXTITEM, OS.TVGN_ROOT, 0);
- hItem = parent.findItem (hFirstItem, index - 1);
- if (hItem == 0) SWT.error (SWT.ERROR_INVALID_RANGE);
- }
+ if (index == 0) return OS.TVI_FIRST;
+ int hwnd = parent.handle;
+ int hFirstItem = OS.SendMessage (hwnd, OS.TVM_GETNEXTITEM, OS.TVGN_ROOT, 0);
+ int hItem = parent.findItem (hFirstItem, index - 1);
+ if (hItem == 0) SWT.error (SWT.ERROR_INVALID_RANGE);
return hItem;
}
static int findPrevious (TreeItem parentItem, int index) {
if (parentItem == null) return 0;
if (index < 0) SWT.error (SWT.ERROR_INVALID_RANGE);
+ if (index == 0) return OS.TVI_FIRST;
Tree parent = parentItem.parent;
- int hItem = OS.TVI_FIRST, hParent = parentItem.handle;
- if (index != 0) {
- int hwnd = parent.handle;
- int hFirstItem = OS.SendMessage (hwnd, OS.TVM_GETNEXTITEM, OS.TVGN_CHILD, hParent);
- hItem = parent.findItem (hFirstItem, index - 1);
- if (hItem == 0) SWT.error (SWT.ERROR_INVALID_RANGE);
- }
+ int hwnd = parent.handle, hParent = parentItem.handle;
+ int hFirstItem = OS.SendMessage (hwnd, OS.TVM_GETNEXTITEM, OS.TVGN_CHILD, hParent);
+ int hItem = parent.findItem (hFirstItem, index - 1);
+ if (hItem == 0) SWT.error (SWT.ERROR_INVALID_RANGE);
return hItem;
}