Mercurial > dwindows
changeset 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 | c63abcab5312 |
children | fa1a826348b3 |
files | gtk/dw.c gtk3/dw.c |
diffstat | 2 files changed, 46 insertions(+), 18 deletions(-) [+] |
line wrap: on
line diff
--- a/gtk/dw.c Wed May 18 06:58:39 2011 +0000 +++ b/gtk/dw.c Wed May 18 07:26:12 2011 +0000 @@ -9077,7 +9077,17 @@ } else { - GtkWidget *vbox = gtk_vbox_new(FALSE, 0); + GtkWidget *vbox = g_object_get_data(G_OBJECT(box), "_dw_vbox"); + + if(!vbox) + { + vbox = gtk_vbox_new(FALSE, 0); + g_object_set_data(G_OBJECT(box), "_dw_vbox", vbox); + gtk_container_add(GTK_CONTAINER(box), vbox); + gtk_widget_show(vbox); + } + + gtk_container_set_border_width(GTK_CONTAINER(box), pad); if(GTK_IS_TABLE(item) || (tmpitem && GTK_IS_TABLE(tmpitem))) { @@ -9102,10 +9112,7 @@ warn = TRUE; } - gtk_container_border_width(GTK_CONTAINER(box), pad); - gtk_container_add(GTK_CONTAINER(box), vbox); gtk_box_pack_end(GTK_BOX(vbox), item, TRUE, TRUE, 0); - gtk_widget_show(vbox); gtk_widget_set_usize(item, width, height); gtk_object_set_user_data(GTK_OBJECT(box), vbox); @@ -10550,7 +10557,17 @@ } else { - GtkWidget *vbox = gtk_vbox_new(FALSE, 0); + GtkWidget *vbox = g_object_get_data(G_OBJECT(box), "_dw_vbox"); + + if(!vbox) + { + vbox = gtk_vbox_new(FALSE, 0); + g_object_set_data(G_OBJECT(box), "_dw_vbox", vbox); + gtk_container_add(GTK_CONTAINER(box), vbox); + gtk_widget_show(vbox); + } + + gtk_container_set_border_width(GTK_CONTAINER(box), pad); if (GTK_IS_TABLE(item) || (tmpitem && GTK_IS_TABLE(tmpitem))) { @@ -10575,10 +10592,7 @@ warn = TRUE; } - gtk_container_border_width(GTK_CONTAINER(box), pad); - gtk_container_add(GTK_CONTAINER(box), vbox); - gtk_box_pack_end(GTK_BOX(vbox), item, TRUE, TRUE, 0); - gtk_widget_show(vbox); + gtk_box_pack_start(GTK_BOX(vbox), item, TRUE, TRUE, 0); gtk_widget_set_usize(item, width, height); gtk_object_set_user_data(GTK_OBJECT(box), vbox);
--- a/gtk3/dw.c Wed May 18 06:58:39 2011 +0000 +++ b/gtk3/dw.c Wed May 18 07:26:12 2011 +0000 @@ -7954,7 +7954,17 @@ } else { - GtkWidget *vbox = gtk_vbox_new(FALSE, 0); + GtkWidget *vbox = g_object_get_data(G_OBJECT(box), "_dw_vbox"); + + if(!vbox) + { + vbox = gtk_vbox_new(FALSE, 0); + g_object_set_data(G_OBJECT(box), "_dw_vbox", vbox); + gtk_container_add(GTK_CONTAINER(box), vbox); + gtk_widget_show(vbox); + } + + gtk_container_set_border_width(GTK_CONTAINER(box), pad); if(GTK_IS_TABLE(item) || (tmpitem && GTK_IS_TABLE(tmpitem))) { @@ -7979,10 +7989,7 @@ warn = TRUE; } - gtk_container_set_border_width(GTK_CONTAINER(box), pad); - gtk_container_add(GTK_CONTAINER(box), vbox); gtk_box_pack_end(GTK_BOX(vbox), item, TRUE, TRUE, 0); - gtk_widget_show(vbox); gtk_widget_set_size_request(item, width, height); g_object_set_data(G_OBJECT(box), "_dw_user", vbox); @@ -9321,7 +9328,17 @@ } else { - GtkWidget *vbox = gtk_vbox_new(FALSE, 0); + GtkWidget *vbox = g_object_get_data(G_OBJECT(box), "_dw_vbox"); + + if(!vbox) + { + vbox = gtk_vbox_new(FALSE, 0); + g_object_set_data(G_OBJECT(box), "_dw_vbox", vbox); + gtk_container_add(GTK_CONTAINER(box), vbox); + gtk_widget_show(vbox); + } + + gtk_container_set_border_width(GTK_CONTAINER(box), pad); if (GTK_IS_TABLE(item) || (tmpitem && GTK_IS_TABLE(tmpitem))) { @@ -9346,10 +9363,7 @@ warn = TRUE; } - gtk_container_set_border_width(GTK_CONTAINER(box), pad); - gtk_container_add(GTK_CONTAINER(box), vbox); - gtk_box_pack_end(GTK_BOX(vbox), item, TRUE, TRUE, 0); - gtk_widget_show(vbox); + gtk_box_pack_start(GTK_BOX(vbox), item, TRUE, TRUE, 0); gtk_widget_set_size_request(item, width, height); g_object_set_data(G_OBJECT(box), "_dw_user", vbox);