perform move after resize during comp object show

in the case where an object is being shown before it has been moved or
resized, a move operation will trigger a series of callbacks which force the
compositor to attempt an illegal operation (recursive show before resize)

fix T5521
This commit is contained in:
Mike Blumenkrantz 2017-06-30 10:25:23 -04:00
parent e26f2a12f5
commit 4f77573e6c
1 changed files with 4 additions and 3 deletions

View File

@ -1718,9 +1718,6 @@ _e_comp_intercept_show_helper(E_Comp_Object *cw)
evas_object_show(cw->smart_obj);
return;
}
/* re-set geometry */
if (cw->ec->placed)
evas_object_move(cw->smart_obj, cw->ec->x, cw->ec->y);
/* ensure that some kind of frame calc has occurred if there's a frame */
if (e_pixmap_is_x(cw->ec->pixmap) && cw->frame_object &&
(cw->ec->h == cw->ec->client.h) && (cw->ec->w == cw->ec->client.w))
@ -1734,6 +1731,10 @@ _e_comp_intercept_show_helper(E_Comp_Object *cw)
EC_CHANGED(cw->ec);
return;
}
/* re-set geometry */
if (cw->ec->placed)
evas_object_move(cw->smart_obj, cw->ec->x, cw->ec->y);
/* if pixmap not available, clear pixmap since we're going to fetch it again */
if (!e_pixmap_size_get(cw->ec->pixmap, &w, &h))
e_pixmap_clear(cw->ec->pixmap);