Mercurial > dwindows
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; |