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