From 93b9c94146ec4321988851d233eef18270fff0f3 Mon Sep 17 00:00:00 2001 From: raster Date: Wed, 26 Oct 2011 05:29:38 +0000 Subject: [PATCH] thanks to jiyoun's work in finding why this happens - here's actually a simpler fix. :) git-svn-id: svn+ssh://svn.enlightenment.org/var/svn/e/trunk/ecore@64405 7cbeb6ba-43b4-40fd-8cce-4c39aea84d33 --- src/lib/ecore_evas/ecore_evas_private.h | 1 + src/lib/ecore_evas/ecore_evas_util.c | 2 +- src/lib/ecore_evas/ecore_evas_x.c | 18 ++++++++++++++---- 3 files changed, 16 insertions(+), 5 deletions(-) diff --git a/src/lib/ecore_evas/ecore_evas_private.h b/src/lib/ecore_evas/ecore_evas_private.h index e662048..39b63e5 100644 --- a/src/lib/ecore_evas/ecore_evas_private.h +++ b/src/lib/ecore_evas/ecore_evas_private.h @@ -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; diff --git a/src/lib/ecore_evas/ecore_evas_util.c b/src/lib/ecore_evas/ecore_evas_util.c index 96ccae3..95b6d22 100644 --- a/src/lib/ecore_evas/ecore_evas_util.c +++ b/src/lib/ecore_evas/ecore_evas_util.c @@ -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); } diff --git a/src/lib/ecore_evas/ecore_evas_x.c b/src/lib/ecore_evas/ecore_evas_x.c index 0bbd7bb..752b43e 100644 --- a/src/lib/ecore_evas/ecore_evas_x.c +++ b/src/lib/ecore_evas/ecore_evas_x.c @@ -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); -- 2.7.4