summaryrefslogtreecommitdiffstats
path: root/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/TreeItem.java
diff options
context:
space:
mode:
authorSteve Northover <steve>2005-08-09 22:11:06 +0000
committerSteve Northover <steve>2005-08-09 22:11:06 +0000
commitbf23089befb70064444a317792f096ff1dd200b6 (patch)
treedecd38b32aa41f17dc344c66200761b03d4159b5 /bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/TreeItem.java
parent1bd4a6d238f246b1a33b1e165b82bcbcf963d2f9 (diff)
downloadeclipse.platform.swt-bf23089befb70064444a317792f096ff1dd200b6.tar.gz
eclipse.platform.swt-bf23089befb70064444a317792f096ff1dd200b6.tar.xz
eclipse.platform.swt-bf23089befb70064444a317792f096ff1dd200b6.zip
45708 & 4862 - recursive dispose
Diffstat (limited to 'bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/TreeItem.java')
-rw-r--r--bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/TreeItem.java24
1 files changed, 19 insertions, 5 deletions
diff --git a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/TreeItem.java b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/TreeItem.java
index cc3a446cd8..6200dd310e 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/TreeItem.java
+++ b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/TreeItem.java
@@ -194,6 +194,13 @@ protected void checkSubclass () {
if (!isValidSubclass ()) error (SWT.ERROR_INVALID_SUBCLASS);
}
+void destroyWidget () {
+ int [] index = new int [1];
+ parent.releaseItem (this, index, false);
+ parent.destroyItem (this);
+ releaseHandle ();
+}
+
/**
* Returns the receiver's background color.
*
@@ -862,16 +869,23 @@ public int indexOf (TreeItem item) {
return index;
}
-void releaseChild () {
- super.releaseChild ();
- parent.destroyItem (this);
+void releaseChildren (boolean destroy) {
+ if (destroy) {
+ int [] index = new int [1];
+ parent.releaseItems (getItems (), index);
+ }
+ super.releaseChildren (destroy);
}
-void releaseWidget () {
- super.releaseWidget ();
+void releaseHandle () {
if (handle != 0) OS.g_free (handle);
handle = 0;
+ super.releaseHandle ();
parent = null;
+}
+
+void releaseWidget () {
+ super.releaseWidget ();
font = null;
cellFont = null;
}