diff options
Diffstat (limited to 'addressbook')
-rw-r--r-- | addressbook/ChangeLog | 6 | ||||
-rw-r--r-- | addressbook/gui/component/select-names/e-select-names-bonobo.c | 16 |
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)); */ |