Hi, I am attaching a small piece of sample code that explains my problem.
int main (int argc, char *argv[]) { GtkWidget *window1; #ifdef ENABLE_NLS bindtextdomain (PACKAGE, PACKAGE_LOCALE_DIR); textdomain (PACKAGE); #endif gnome_init ("try", VERSION, argc, argv); window1 = create_window1 (); gtk_widget_show (window1); gtk_main (); return 0; } void on_message_box_ok_clicked(GtkButton *button, gpointer *data); void on_button1_clicked (GtkButton *button, gpointer user_data) { GtkWidget *window =lookup_widget (button, "window1"); GtkWidget *small_window =create_window (); gtk_widget_show (small_window); //gtk_widget_destroy (window); } GtkWidget *create_window () { GtkWidget *message_box; GtkWidget *dialog_vbox1; GtkWidget *message_box_ok; GtkWidget *dialog_action_area1; message_box = gnome_message_box_new (_("A test message box"), GNOME_MESSAGE_BOX_INFO, GNOME_STOCK_BUTTON_OK, NULL); gtk_container_remove (GTK_CONTAINER (GNOME_DIALOG (message_box)->action_area), GNOME_DIALOG (message_box)->buttons->data); GNOME_DIALOG (message_box)->buttons = NULL; gtk_object_set_data (GTK_OBJECT (message_box), "message_box", message_box); //gtk_widget_set_usize (message_box, 400, 175); gtk_window_set_modal((GtkWindow *)message_box,TRUE); gtk_window_set_title (GTK_WINDOW (message_box), _("Test")); gtk_window_set_policy (GTK_WINDOW (message_box), FALSE, FALSE, FALSE); dialog_vbox1 = GNOME_DIALOG (message_box)->vbox; gtk_object_set_data (GTK_OBJECT (message_box), "dialog_vbox1", dialog_vbox1); gtk_widget_show (dialog_vbox1); gnome_dialog_append_button (GNOME_DIALOG (message_box), GNOME_STOCK_BUTTON_OK); message_box_ok = GTK_WIDGET (g_list_last (GNOME_DIALOG (message_box)->buttons)->data); gtk_widget_ref (message_box_ok); gtk_object_set_data_full (GTK_OBJECT (message_box), "message_box_ok", message_box_ok, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (message_box_ok); GTK_WIDGET_SET_FLAGS (message_box_ok, GTK_CAN_DEFAULT); dialog_action_area1 = GNOME_DIALOG (message_box)->action_area; gtk_widget_ref (dialog_action_area1); gtk_object_set_data_full (GTK_OBJECT (message_box), "dialog_action_area1", dialog_action_area1, (GtkDestroyNotify) gtk_widget_unref); gtk_signal_connect (GTK_OBJECT (message_box_ok), "clicked", GTK_SIGNAL_FUNC (on_message_box_ok_clicked), message_box); return message_box; } void on_message_box_ok_clicked(GtkButton *button, gpointer *data) { GtkWidget *box=(GtkWidget *)data; gtk_widget_destroy(box); } void on_window1_destroy (GtkObject *object, gpointer user_data) { printf ("\nhi1\n"); } gboolean on_window1_delete_event (GtkWidget *widget, GdkEvent *event, gpointer user_data) { printf ("\nhi2\n"); return FALSE; } The above code creates a main window and from button1 click creates a message box . On closing this message box , memory allocated to message box should have been freed. However gnome-system-monitor shows the following stats: when main window is displayed: 3.5 MB when message box is also displayed: 3.9 MB message box closed: 3.9 MB main window closed through 'X' button: 3.9 MB Please give your comments. Regards, Preeti _______________________________________________ gtk-app-devel-list mailing list gtk-app-devel-list@gnome.org http://mail.gnome.org/mailman/listinfo/gtk-app-devel-list