void cairo_dock_widget_free (CDWidget *pCdWidget) // doesn't destroy the GTK widget, as it is destroyed with the main window { if (!pCdWidget) return; if (pCdWidget->reset) pCdWidget->reset (pCdWidget); cairo_dock_free_generated_widget_list (pCdWidget->pWidgetList); pCdWidget->pWidgetList = NULL; g_ptr_array_free (pCdWidget->pDataGarbage, TRUE); /// free each element... pCdWidget->pDataGarbage = NULL; g_free (pCdWidget); }
void cairo_dock_widget_destroy_widget (CDWidget *pCdWidget) { if (!pCdWidget) return; gtk_widget_destroy (pCdWidget->pWidget); pCdWidget->pWidget = NULL; cairo_dock_free_generated_widget_list (pCdWidget->pWidgetList); pCdWidget->pWidgetList = NULL; /// free each element... g_ptr_array_free (pCdWidget->pDataGarbage, TRUE); pCdWidget->pDataGarbage = NULL; }
gboolean on_delete_normal_gui (GtkWidget *pWidget, GdkEvent *event, GMainLoop *pBlockingLoop) { //g_print ("%s ()\n", __func__); if (pBlockingLoop != NULL && g_main_loop_is_running (pBlockingLoop)) { g_main_loop_quit (pBlockingLoop); } gpointer pUserData = g_object_get_data (G_OBJECT (pWidget), "action-data"); GFreeFunc pFreeUserData = g_object_get_data (G_OBJECT (pWidget), "free-data"); if (pFreeUserData != NULL && pUserData != NULL) pFreeUserData (pUserData); GSList *pWidgetList = g_object_get_data (G_OBJECT (pWidget), "widget-list"); cairo_dock_free_generated_widget_list (pWidgetList); cairo_dock_config_panel_destroyed (); GPtrArray *pDataGarbage = g_object_get_data (G_OBJECT (pWidget), "garbage"); /// nettoyer. return FALSE; }