diff options
author | Steve Northover <steve> | 2002-10-26 01:04:05 +0000 |
---|---|---|
committer | Steve Northover <steve> | 2002-10-26 01:04:05 +0000 |
commit | 1e05447ca05c646c6d89f6ffd288d004ee645227 (patch) | |
tree | 63e0433245dd3a8b81e50bfc6c8ee97bbd71d515 /bundles | |
parent | 8e2ef481e9ea879d894d3c228f0ebee93ee2fc7e (diff) | |
download | eclipse.platform.swt-1e05447ca05c646c6d89f6ffd288d004ee645227.tar.gz eclipse.platform.swt-1e05447ca05c646c6d89f6ffd288d004ee645227.tar.xz eclipse.platform.swt-1e05447ca05c646c6d89f6ffd288d004ee645227.zip |
*** empty log message ***
Diffstat (limited to 'bundles')
-rwxr-xr-x | bundles/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/Tree.java | 20 |
1 files changed, 13 insertions, 7 deletions
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 7ce11aa857..79d60d5abd 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 @@ -322,7 +322,8 @@ void destroyItem (TreeItem item) { int hItem = item.handle;
TVITEM tvItem = new TVITEM ();
tvItem.mask = OS.TVIF_HANDLE | OS.TVIF_PARAM;
- releaseItems (new TreeItem [] {item}, tvItem);
+ releaseItems (item.getItems (), tvItem);
+ releaseItem (item, tvItem);
boolean fixRedraw = false;
if (drawCount == 0 && OS.IsWindowVisible (handle)) {
RECT rect = new RECT ();
@@ -618,6 +619,16 @@ int imageIndex (Image image) { return imageList.add (image);
}
+boolean releaseItem (TreeItem item, TVITEM tvItem) {
+ int hItem = item.handle;
+ if (hItem == hAnchor) hAnchor = 0;
+ if (item.isDisposed ()) return false;
+ tvItem.hItem = hItem;
+ OS.SendMessage (handle, OS.TVM_GETITEM, 0, tvItem);
+ items [tvItem.lParam] = null;
+ return true;
+}
+
void releaseItems (TreeItem [] nodes, TVITEM tvItem) {
for (int i=0; i<nodes.length; i++) {
TreeItem item = nodes [i];
@@ -625,12 +636,7 @@ void releaseItems (TreeItem [] nodes, TVITEM tvItem) { if (sons.length != 0) {
releaseItems (sons, tvItem);
}
- int hItem = item.handle;
- if (hItem == hAnchor) hAnchor = 0;
- if (!item.isDisposed ()) {
- tvItem.hItem = hItem;
- OS.SendMessage (handle, OS.TVM_GETITEM, 0, tvItem);
- items [tvItem.lParam] = null;
+ if (releaseItem (item, tvItem)) {
item.releaseResources ();
}
}
|