summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKevin Barnes <krbarnes>2008-01-31 16:01:48 +0000
committerKevin Barnes <krbarnes>2008-01-31 16:01:48 +0000
commit57bc9da816b78e8225c369df2233b6334cde29f9 (patch)
treeeec7e239daf7c2554240735d7895a7a4120f6ca5
parentc3e877f8f7f86d0622d844511bee89e75388f2a5 (diff)
downloadeclipse.platform.swt-57bc9da816b78e8225c369df2233b6334cde29f9.tar.gz
eclipse.platform.swt-57bc9da816b78e8225c369df2233b6334cde29f9.tar.xz
eclipse.platform.swt-57bc9da816b78e8225c369df2233b6334cde29f9.zip
209016 - [Viewers] Virtual Tree Tests failing on OS X in I20071106-0816
-rw-r--r--bundles/org.eclipse.swt/Eclipse SWT/carbon/org/eclipse/swt/widgets/Tree.java18
1 files changed, 13 insertions, 5 deletions
diff --git a/bundles/org.eclipse.swt/Eclipse SWT/carbon/org/eclipse/swt/widgets/Tree.java b/bundles/org.eclipse.swt/Eclipse SWT/carbon/org/eclipse/swt/widgets/Tree.java
index f5783fd6eb..2bd6736ea1 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT/carbon/org/eclipse/swt/widgets/Tree.java
+++ b/bundles/org.eclipse.swt/Eclipse SWT/carbon/org/eclipse/swt/widgets/Tree.java
@@ -2932,8 +2932,10 @@ void setItemCount (TreeItem parentItem, int count) {
callbacks.v1_itemNotificationCallback = 0;
callbacks.v1_itemCompareCallback = 0;
OS.SetDataBrowserCallbacks (handle, callbacks);
- int[] ids = parentItem == null ? childIds : parentItem.childIds;
+ int [] ids = parentItem == null ? childIds : parentItem.childIds;
if (count < itemCount) {
+ int [] removeIds = new int [itemCount - count];
+ int removeCount = 0;
for (int index = ids.length - 1; index >= count; index--) {
int id = ids [index];
if (id != 0) {
@@ -2942,15 +2944,21 @@ void setItemCount (TreeItem parentItem, int count) {
item.dispose ();
} else {
if (parentItem == null || parentItem.getExpanded ()) {
- if (OS.RemoveDataBrowserItems (handle, OS.kDataBrowserNoItem, 1, new int [] {id}, 0) != OS.noErr) {
- error (SWT.ERROR_ITEM_NOT_REMOVED);
- break;
- }
+ removeIds [removeIds.length - removeCount] = id;
+ removeCount++;
visibleCount--;
}
}
}
}
+ if (removeCount != 0 && removeCount != removeIds.length) {
+ int [] tmp = new int [removeCount];
+ System.arraycopy(removeIds, removeIds.length - removeCount, tmp, 0, removeCount);
+ removeIds = tmp;
+ }
+ if (removeCount != 0 && OS.RemoveDataBrowserItems (handle, OS.kDataBrowserNoItem, removeCount, removeIds, 0) != OS.noErr) {
+ error (SWT.ERROR_ITEM_NOT_REMOVED);
+ }
//TODO - move shrink to paint event
// shrink items array
int lastIndex = items.length;