diff options
author | Kevin Barnes <krbarnes> | 2008-01-31 16:01:48 +0000 |
---|---|---|
committer | Kevin Barnes <krbarnes> | 2008-01-31 16:01:48 +0000 |
commit | 57bc9da816b78e8225c369df2233b6334cde29f9 (patch) | |
tree | eec7e239daf7c2554240735d7895a7a4120f6ca5 | |
parent | c3e877f8f7f86d0622d844511bee89e75388f2a5 (diff) | |
download | eclipse.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.java | 18 |
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; |