void gtr_widget_set_visible( GtkWidget * w, gboolean b ) { /* toggle the transient children, too */ if( GTK_IS_WINDOW( w ) ) { GList * l; GList * windows = gtk_window_list_toplevels( ); GtkWindow * window = GTK_WINDOW( w ); for( l=windows; l!=NULL; l=l->next ) if( GTK_IS_WINDOW( l->data ) ) if( gtk_window_get_transient_for( GTK_WINDOW( l->data ) ) == window ) gtr_widget_set_visible( GTK_WIDGET( l->data ), b ); g_list_free( windows ); } #if GTK_CHECK_VERSION( 2,18,0 ) gtk_widget_set_visible( w, b ); #else if( b ) gtk_widget_show( w ); else gtk_widget_hide( w ); #endif }
void gtr_widget_set_visible (GtkWidget * w, gboolean b) { /* toggle the transient children, too */ if (GTK_IS_WINDOW (w)) { GList * l; GList * windows = gtk_window_list_toplevels (); GtkWindow * window = GTK_WINDOW (w); for (l=windows; l!=NULL; l=l->next) { if (!GTK_IS_WINDOW (l->data)) continue; if (gtk_window_get_transient_for (GTK_WINDOW (l->data)) != window) continue; if (gtk_widget_get_visible (GTK_WIDGET (l->data)) == b) continue; if (b && g_object_get_data (G_OBJECT (l->data), GTR_CHILD_HIDDEN) != NULL) { g_object_steal_data (G_OBJECT (l->data), GTR_CHILD_HIDDEN); gtr_widget_set_visible (GTK_WIDGET (l->data), TRUE); } else if (!b) { g_object_set_data (G_OBJECT (l->data), GTR_CHILD_HIDDEN, GINT_TO_POINTER (1)); gtr_widget_set_visible (GTK_WIDGET (l->data), FALSE); } } g_list_free (windows); } gtk_widget_set_visible (w, b); }