Destroy secondary dialogs if the main dialog is hidden. (#155084, Paolo

2004-10-17  Matthias Clasen  <mclasen@redhat.com>

	* gtk/gtkaboutdialog.c (gtk_about_dialog_new): Destroy secondary
	dialogs if the main dialog is hidden. (#155084, Paolo Borelli)
This commit is contained in:
Matthias Clasen 2004-10-17 06:38:35 +00:00 committed by Matthias Clasen
parent 62fa88e473
commit d41ae98e9b
5 changed files with 42 additions and 23 deletions

View File

@ -1,3 +1,8 @@
2004-10-17 Matthias Clasen <mclasen@redhat.com>
* gtk/gtkaboutdialog.c (gtk_about_dialog_new): Destroy secondary
dialogs if the main dialog is hidden. (#155084, Paolo Borelli)
2004-10-16 Matthias Clasen <mclasen@redhat.com>
* gtk/gtkaboutdialog.c (gtk_about_dialog_destroy): Don't leak

View File

@ -1,3 +1,8 @@
2004-10-17 Matthias Clasen <mclasen@redhat.com>
* gtk/gtkaboutdialog.c (gtk_about_dialog_new): Destroy secondary
dialogs if the main dialog is hidden. (#155084, Paolo Borelli)
2004-10-16 Matthias Clasen <mclasen@redhat.com>
* gtk/gtkaboutdialog.c (gtk_about_dialog_destroy): Don't leak

View File

@ -1,3 +1,8 @@
2004-10-17 Matthias Clasen <mclasen@redhat.com>
* gtk/gtkaboutdialog.c (gtk_about_dialog_new): Destroy secondary
dialogs if the main dialog is hidden. (#155084, Paolo Borelli)
2004-10-16 Matthias Clasen <mclasen@redhat.com>
* gtk/gtkaboutdialog.c (gtk_about_dialog_destroy): Don't leak

View File

@ -1,3 +1,8 @@
2004-10-17 Matthias Clasen <mclasen@redhat.com>
* gtk/gtkaboutdialog.c (gtk_about_dialog_new): Destroy secondary
dialogs if the main dialog is hidden. (#155084, Paolo Borelli)
2004-10-16 Matthias Clasen <mclasen@redhat.com>
* gtk/gtkaboutdialog.c (gtk_about_dialog_destroy): Don't leak

View File

@ -114,7 +114,6 @@ static void gtk_about_dialog_set_property (GObject
guint prop_id,
const GValue *value,
GParamSpec *pspec);
static void gtk_about_dialog_destroy (GtkObject *object);
static void update_name_version (GtkAboutDialog *about);
static GtkIconSet * icon_set_new_from_pixbufs (GList *pixbufs);
static void activate_url (GtkWidget *widget,
@ -180,7 +179,6 @@ gtk_about_dialog_class_init (GtkAboutDialogClass *klass)
object_class->get_property = gtk_about_dialog_get_property;
object_class->finalize = gtk_about_dialog_finalize;
((GtkObjectClass *)klass)->destroy = gtk_about_dialog_destroy;
g_object_class_install_property (object_class,
PROP_NAME,
@ -404,26 +402,6 @@ gtk_about_dialog_finalize (GObject *object)
G_OBJECT_CLASS (gtk_about_dialog_parent_class)->finalize (object);
}
static void
gtk_about_dialog_destroy (GtkObject *object)
{
GtkAboutDialog *about = GTK_ABOUT_DIALOG (object);
GtkAboutDialogPrivate *priv = (GtkAboutDialogPrivate *)about->private_data;
if (priv->credits_dialog)
{
gtk_widget_destroy (priv->credits_dialog);
priv->credits_dialog = NULL;
}
if (priv->license_dialog)
{
gtk_widget_destroy (priv->license_dialog);
priv->license_dialog = NULL;
}
GTK_OBJECT_CLASS (gtk_about_dialog_parent_class)->destroy (object);
}
static void
gtk_about_dialog_set_property (GObject *object,
guint prop_id,
@ -1786,6 +1764,27 @@ display_license_dialog (GtkWidget *button,
gtk_widget_show_all (dialog);
}
static void
close_cb (GtkAboutDialog *about)
{
GtkAboutDialogPrivate *priv = (GtkAboutDialogPrivate *)about->private_data;
if (priv->license_dialog != NULL)
{
gtk_widget_destroy (priv->license_dialog);
priv->license_dialog = NULL;
}
if (priv->credits_dialog != NULL)
{
gtk_widget_destroy (priv->credits_dialog);
priv->credits_dialog = NULL;
}
gtk_widget_hide (GTK_WIDGET (about));
}
/**
* gtk_about_dialog_new:
*
@ -1807,7 +1806,7 @@ gtk_about_dialog_new (void)
/* Close dialog on user response */
g_signal_connect (G_OBJECT (dialog),
"response",
G_CALLBACK (gtk_widget_hide),
G_CALLBACK (close_cb),
NULL);
return GTK_WIDGET (dialog);