comparison gtk3/dw.c @ 1021:0469e278453c

Fixes issues on GTK where dw_window_destroy() is called on an item packed into a top-level window. Repacking would fail in this case.
author bsmith@81767d24-ef19-dc11-ae90-00e081727c95
date Wed, 18 May 2011 07:26:12 +0000
parents 751522e9f3ac
children fa1a826348b3
comparison
equal deleted inserted replaced
1020:c63abcab5312 1021:0469e278453c
7952 g_object_set_data(G_OBJECT(box), "_dw_group", (gpointer)item); 7952 g_object_set_data(G_OBJECT(box), "_dw_group", (gpointer)item);
7953 } 7953 }
7954 } 7954 }
7955 else 7955 else
7956 { 7956 {
7957 GtkWidget *vbox = gtk_vbox_new(FALSE, 0); 7957 GtkWidget *vbox = g_object_get_data(G_OBJECT(box), "_dw_vbox");
7958
7959 if(!vbox)
7960 {
7961 vbox = gtk_vbox_new(FALSE, 0);
7962 g_object_set_data(G_OBJECT(box), "_dw_vbox", vbox);
7963 gtk_container_add(GTK_CONTAINER(box), vbox);
7964 gtk_widget_show(vbox);
7965 }
7966
7967 gtk_container_set_border_width(GTK_CONTAINER(box), pad);
7958 7968
7959 if(GTK_IS_TABLE(item) || (tmpitem && GTK_IS_TABLE(tmpitem))) 7969 if(GTK_IS_TABLE(item) || (tmpitem && GTK_IS_TABLE(tmpitem)))
7960 { 7970 {
7961 GtkWidget *eventbox = (GtkWidget *)g_object_get_data(G_OBJECT(item), "_dw_eventbox"); 7971 GtkWidget *eventbox = (GtkWidget *)g_object_get_data(G_OBJECT(item), "_dw_eventbox");
7962 7972
7977 { 7987 {
7978 /* Only show warning if item is not a box */ 7988 /* Only show warning if item is not a box */
7979 warn = TRUE; 7989 warn = TRUE;
7980 } 7990 }
7981 7991
7982 gtk_container_set_border_width(GTK_CONTAINER(box), pad);
7983 gtk_container_add(GTK_CONTAINER(box), vbox);
7984 gtk_box_pack_end(GTK_BOX(vbox), item, TRUE, TRUE, 0); 7992 gtk_box_pack_end(GTK_BOX(vbox), item, TRUE, TRUE, 0);
7985 gtk_widget_show(vbox);
7986 7993
7987 gtk_widget_set_size_request(item, width, height); 7994 gtk_widget_set_size_request(item, width, height);
7988 g_object_set_data(G_OBJECT(box), "_dw_user", vbox); 7995 g_object_set_data(G_OBJECT(box), "_dw_user", vbox);
7989 } 7996 }
7990 DW_MUTEX_UNLOCK; 7997 DW_MUTEX_UNLOCK;
9319 } 9326 }
9320 } 9327 }
9321 } 9328 }
9322 else 9329 else
9323 { 9330 {
9324 GtkWidget *vbox = gtk_vbox_new(FALSE, 0); 9331 GtkWidget *vbox = g_object_get_data(G_OBJECT(box), "_dw_vbox");
9332
9333 if(!vbox)
9334 {
9335 vbox = gtk_vbox_new(FALSE, 0);
9336 g_object_set_data(G_OBJECT(box), "_dw_vbox", vbox);
9337 gtk_container_add(GTK_CONTAINER(box), vbox);
9338 gtk_widget_show(vbox);
9339 }
9340
9341 gtk_container_set_border_width(GTK_CONTAINER(box), pad);
9325 9342
9326 if (GTK_IS_TABLE(item) || (tmpitem && GTK_IS_TABLE(tmpitem))) 9343 if (GTK_IS_TABLE(item) || (tmpitem && GTK_IS_TABLE(tmpitem)))
9327 { 9344 {
9328 GtkWidget *eventbox = (GtkWidget *)g_object_get_data(G_OBJECT(item), "_dw_eventbox"); 9345 GtkWidget *eventbox = (GtkWidget *)g_object_get_data(G_OBJECT(item), "_dw_eventbox");
9329 9346
9344 { 9361 {
9345 /* Only show warning if item is not a box */ 9362 /* Only show warning if item is not a box */
9346 warn = TRUE; 9363 warn = TRUE;
9347 } 9364 }
9348 9365
9349 gtk_container_set_border_width(GTK_CONTAINER(box), pad); 9366 gtk_box_pack_start(GTK_BOX(vbox), item, TRUE, TRUE, 0);
9350 gtk_container_add(GTK_CONTAINER(box), vbox);
9351 gtk_box_pack_end(GTK_BOX(vbox), item, TRUE, TRUE, 0);
9352 gtk_widget_show(vbox);
9353 9367
9354 gtk_widget_set_size_request(item, width, height); 9368 gtk_widget_set_size_request(item, width, height);
9355 g_object_set_data(G_OBJECT(box), "_dw_user", vbox); 9369 g_object_set_data(G_OBJECT(box), "_dw_user", vbox);
9356 } 9370 }
9357 DW_MUTEX_UNLOCK; 9371 DW_MUTEX_UNLOCK;