diff --git a/src/bin/e_border.c b/src/bin/e_border.c index 2d1bd5913..efe49076c 100644 --- a/src/bin/e_border.c +++ b/src/bin/e_border.c @@ -4959,7 +4959,7 @@ _e_border_del(E_Border *bd) ecore_timer_del(bd->raise_timer); bd->raise_timer = NULL; } - if (!bd->already_unparented) + if ((!bd->already_unparented) && (!bd->destroyed)) { ecore_x_window_reparent(bd->client.win, bd->zone->container->manager->root, @@ -5069,7 +5069,7 @@ _e_border_cb_window_destroy(void *data __UNUSED__, e = ev; bd = e_border_find_by_client_window(e->win); if (!bd) return ECORE_CALLBACK_PASS_ON; - e_border_hide(bd, 0); + bd->destroyed = 1; e_object_del(E_OBJECT(bd)); return ECORE_CALLBACK_PASS_ON; } @@ -5130,6 +5130,9 @@ _e_border_cb_window_hide(void *data __UNUSED__, else { // printf(" hide2\n"); + + if (bd->delete_requested) + bd->destroyed = 1; e_border_hide(bd, 0); e_object_del(E_OBJECT(bd)); } diff --git a/src/bin/e_border.h b/src/bin/e_border.h index de62ab99a..183d6e109 100644 --- a/src/bin/e_border.h +++ b/src/bin/e_border.h @@ -561,6 +561,7 @@ struct _E_Border unsigned int internal_no_reopen : 1; unsigned int stolen : 1; Eina_Bool theme_shadow : 1; + Eina_Bool destroyed : 1; Ecore_Evas *internal_ecore_evas;