thanks to jiyoun's work in finding why this happens - here's actually a

simpler fix. :)



SVN revision: 64405
This commit is contained in:
Carsten Haitzler 2011-10-26 05:29:38 +00:00
parent 122a51f16a
commit b08afffb83
3 changed files with 16 additions and 5 deletions

View File

@ -208,6 +208,7 @@ struct _Ecore_Evas_Engine
unsigned char sync_began : 1;
unsigned char sync_cancel : 1;
unsigned char netwm_sync_set : 1;
unsigned char configure_coming : 1;
struct {
unsigned char modal : 1;
unsigned char sticky : 1;

View File

@ -122,7 +122,7 @@ _ecore_evas_obj_callback_resize(void *data, Evas *e __UNUSED__, Evas_Object *obj
evas_object_geometry_get(obj, NULL, NULL, &ow, &oh);
ecore_evas_geometry_get(ee, NULL, NULL, &w, &h);
if ((w != ow) || (h != oh)) /* avoid recursion on ecore_evas_resize side */
/*if ((w != ow) || (h != oh))*/ /* avoid recursion on ecore_evas_resize side */
ecore_evas_resize(ee, ow, oh);
}

View File

@ -917,6 +917,7 @@ _ecore_evas_x_event_window_configure(void *data __UNUSED__, int type __UNUSED__,
if (e->win != ee->prop.window) return ECORE_CALLBACK_PASS_ON;
if (ee->engine.x.direct_resize) return ECORE_CALLBACK_PASS_ON;
ee->engine.x.configure_coming = 0;
if ((e->from_wm) || (ee->prop.override))
{
if ((ee->x != e->x) || (ee->y != e->y))
@ -1291,8 +1292,10 @@ _ecore_evas_x_move(Ecore_Evas *ee, int x, int y)
}
else
{
if ((ee->x != x) || (ee->y != y))
if (((ee->x != x) || (ee->y != y)) ||
(ee->engine.x.configure_coming))
{
ee->engine.x.configure_coming = 1;
if (!ee->engine.x.managed)
{
ee->x = x;
@ -1361,8 +1364,12 @@ _ecore_evas_x_resize(Ecore_Evas *ee, int w, int h)
if (ee->func.fn_resize) ee->func.fn_resize(ee);
}
}
else if ((ee->w != w) || (ee->h != h))
ecore_x_window_resize(ee->prop.window, w, h);
else if (((ee->w != w) || (ee->h != h)) ||
(ee->engine.x.configure_coming))
{
ee->engine.x.configure_coming = 1;
ecore_x_window_resize(ee->prop.window, w, h);
}
}
static void
@ -1421,8 +1428,10 @@ _ecore_evas_x_move_resize(Ecore_Evas *ee, int x, int y, int w, int h)
}
}
}
else
else if (((ee->w != w) || (ee->h != h) || (ee->x != x) || (ee->y != y)) ||
(ee->engine.x.configure_coming))
{
ee->engine.x.configure_coming = 1;
ecore_x_window_move_resize(ee->prop.window, x, y, w, h);
if (!ee->engine.x.managed)
{
@ -1452,6 +1461,7 @@ _ecore_evas_x_rotation_set_internal(Ecore_Evas *ee, int rotation, int resize,
if (!resize)
{
ee->engine.x.configure_coming = 1;
if (!ee->prop.fullscreen)
{
ecore_x_window_resize(ee->prop.window, ee->req.h, ee->req.w);