aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--addressbook/ChangeLog6
-rw-r--r--addressbook/gui/component/select-names/e-select-names-bonobo.c16
2 files changed, 22 insertions, 0 deletions
diff --git a/addressbook/ChangeLog b/addressbook/ChangeLog
index 089cccab42..6f5d0fe9e0 100644
--- a/addressbook/ChangeLog
+++ b/addressbook/ChangeLog
@@ -1,3 +1,9 @@
+2001-11-08 Jon Trowbridge <trow@ximian.com>
+
+ * gui/component/select-names/e-select-names-bonobo.c
+ (impl_destroy): Explicitly destroy entries. Part of the fix for
+ the lingering completion window bug.
+
2001-11-04 JP Rosevear <jpr@ximian.com>
* conduit/address-conduit.c: Use ordering of the pilot's phone
diff --git a/addressbook/gui/component/select-names/e-select-names-bonobo.c b/addressbook/gui/component/select-names/e-select-names-bonobo.c
index a3f4929fa6..071b2e0b2b 100644
--- a/addressbook/gui/component/select-names/e-select-names-bonobo.c
+++ b/addressbook/gui/component/select-names/e-select-names-bonobo.c
@@ -348,11 +348,18 @@ impl_SelectNames_activate_dialog (PortableServer_Servant servant,
/* GtkObject methods. */
+/* ACK! */
+typedef struct {
+ char *id;
+ EEntry *entry;
+} ESelectNamesManagerEntry;
+
static void
impl_destroy (GtkObject *object)
{
ESelectNamesBonobo *select_names;
ESelectNamesBonoboPrivate *priv;
+ EIterator *iterator;
select_names = E_SELECT_NAMES_BONOBO (object);
priv = select_names->priv;
@@ -361,6 +368,15 @@ impl_destroy (GtkObject *object)
gtk_widget_destroy (GTK_WIDGET (priv->manager->names));
priv->manager->names = NULL;
}
+
+ /* More suckage */
+ iterator = e_list_get_iterator (priv->manager->entries);
+ for (e_iterator_reset (iterator); e_iterator_is_valid (iterator); e_iterator_next (iterator)) {
+ ESelectNamesManagerEntry *entry = (ESelectNamesManagerEntry *)e_iterator_get (iterator);
+ if (entry && entry->entry)
+ gtk_widget_destroy (GTK_WIDGET (entry->entry));
+ }
+ gtk_object_unref (GTK_OBJECT (iterator));
/* FIXME: We leak on purpose. This sucks. */
/* gtk_object_unref (GTK_OBJECT (priv->manager)); */