comparison gtk/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 08b7e8d7cbb3
children fa1a826348b3
comparison
equal deleted inserted replaced
1020:c63abcab5312 1021:0469e278453c
9075 gtk_object_set_data(GTK_OBJECT(box), "_dw_group", (gpointer)item); 9075 gtk_object_set_data(GTK_OBJECT(box), "_dw_group", (gpointer)item);
9076 } 9076 }
9077 } 9077 }
9078 else 9078 else
9079 { 9079 {
9080 GtkWidget *vbox = gtk_vbox_new(FALSE, 0); 9080 GtkWidget *vbox = g_object_get_data(G_OBJECT(box), "_dw_vbox");
9081
9082 if(!vbox)
9083 {
9084 vbox = gtk_vbox_new(FALSE, 0);
9085 g_object_set_data(G_OBJECT(box), "_dw_vbox", vbox);
9086 gtk_container_add(GTK_CONTAINER(box), vbox);
9087 gtk_widget_show(vbox);
9088 }
9089
9090 gtk_container_set_border_width(GTK_CONTAINER(box), pad);
9081 9091
9082 if(GTK_IS_TABLE(item) || (tmpitem && GTK_IS_TABLE(tmpitem))) 9092 if(GTK_IS_TABLE(item) || (tmpitem && GTK_IS_TABLE(tmpitem)))
9083 { 9093 {
9084 GtkWidget *eventbox = (GtkWidget *)gtk_object_get_data(GTK_OBJECT(item), "_dw_eventbox"); 9094 GtkWidget *eventbox = (GtkWidget *)gtk_object_get_data(GTK_OBJECT(item), "_dw_eventbox");
9085 9095
9100 { 9110 {
9101 /* Only show warning if item is not a box */ 9111 /* Only show warning if item is not a box */
9102 warn = TRUE; 9112 warn = TRUE;
9103 } 9113 }
9104 9114
9105 gtk_container_border_width(GTK_CONTAINER(box), pad);
9106 gtk_container_add(GTK_CONTAINER(box), vbox);
9107 gtk_box_pack_end(GTK_BOX(vbox), item, TRUE, TRUE, 0); 9115 gtk_box_pack_end(GTK_BOX(vbox), item, TRUE, TRUE, 0);
9108 gtk_widget_show(vbox);
9109 9116
9110 gtk_widget_set_usize(item, width, height); 9117 gtk_widget_set_usize(item, width, height);
9111 gtk_object_set_user_data(GTK_OBJECT(box), vbox); 9118 gtk_object_set_user_data(GTK_OBJECT(box), vbox);
9112 } 9119 }
9113 DW_MUTEX_UNLOCK; 9120 DW_MUTEX_UNLOCK;
10548 } 10555 }
10549 } 10556 }
10550 } 10557 }
10551 else 10558 else
10552 { 10559 {
10553 GtkWidget *vbox = gtk_vbox_new(FALSE, 0); 10560 GtkWidget *vbox = g_object_get_data(G_OBJECT(box), "_dw_vbox");
10561
10562 if(!vbox)
10563 {
10564 vbox = gtk_vbox_new(FALSE, 0);
10565 g_object_set_data(G_OBJECT(box), "_dw_vbox", vbox);
10566 gtk_container_add(GTK_CONTAINER(box), vbox);
10567 gtk_widget_show(vbox);
10568 }
10569
10570 gtk_container_set_border_width(GTK_CONTAINER(box), pad);
10554 10571
10555 if (GTK_IS_TABLE(item) || (tmpitem && GTK_IS_TABLE(tmpitem))) 10572 if (GTK_IS_TABLE(item) || (tmpitem && GTK_IS_TABLE(tmpitem)))
10556 { 10573 {
10557 GtkWidget *eventbox = (GtkWidget *)gtk_object_get_data(GTK_OBJECT(item), "_dw_eventbox"); 10574 GtkWidget *eventbox = (GtkWidget *)gtk_object_get_data(GTK_OBJECT(item), "_dw_eventbox");
10558 10575
10573 { 10590 {
10574 /* Only show warning if item is not a box */ 10591 /* Only show warning if item is not a box */
10575 warn = TRUE; 10592 warn = TRUE;
10576 } 10593 }
10577 10594
10578 gtk_container_border_width(GTK_CONTAINER(box), pad); 10595 gtk_box_pack_start(GTK_BOX(vbox), item, TRUE, TRUE, 0);
10579 gtk_container_add(GTK_CONTAINER(box), vbox);
10580 gtk_box_pack_end(GTK_BOX(vbox), item, TRUE, TRUE, 0);
10581 gtk_widget_show(vbox);
10582 10596
10583 gtk_widget_set_usize(item, width, height); 10597 gtk_widget_set_usize(item, width, height);
10584 gtk_object_set_user_data(GTK_OBJECT(box), vbox); 10598 gtk_object_set_user_data(GTK_OBJECT(box), vbox);
10585 } 10599 }
10586 DW_MUTEX_UNLOCK; 10600 DW_MUTEX_UNLOCK;