J
Danke für den Beitrag, aber das ist noch nicht so ganz was ich suche.
Die Dokumentation und die Funktionen sind mir bekannt, ich hab das ganze auch schon funktionierend umgesetzt.
Und zwar hole ich mir aus dem Fenster mit gtk_container_get_children() die ganzen Widgets und gtk_widget_destroy()e sie dann nach der Reihe. Danach wird die zurückgegebene GList g_list_free()ed.
Ich hoffe mal, damit hinterlasse ich dann keine Speicherlecks mehr.
Was mich an meiner Lösung stört ist, dass ich, wenn ich wieder den gleichen Fensterinhalt anzeigen möchte, die Widgets neu erstellen muss. Lieber wäre es mir, wenn man die Zwischenspeichern könnte, aber ohne dass ich den obersten Container in meine Funktion mit übergeben muss. (ein get_first_child oder sowas wäre da hilfreich)
Immer je nach Fensterinhalt das oberste Element irgendwo in ne globale Variable zu schreiben empfände ich nicht als schöne Lösung.
Was mich vor allem Interessiert ist wie man das halt sozusagen als professioneller gtk-Entwickler machen würde, die meisten Tutorials enthalten halt nur Beispiele mit einem Fenster, bei dem sich der Inhalt nicht ändert.
Hier noch meine Code mit dem ich das Fenster leer mache:
void clearMainWindow(GtkWidget *mainWindow) {
GList *widgets, *widget;
widgets = gtk_container_get_children(GTK_CONTAINER(mainWindow));
widget = g_list_first(widgets);
while(widget != NULL) {
gtk_widget_destroy(GTK_WIDGET(widget->data));
widget = g_list_next(widgets);
}
g_list_free(widgets);
}