thanks to jiyoun's work in finding why this happens - here's actually a
authorraster <raster@7cbeb6ba-43b4-40fd-8cce-4c39aea84d33>
Wed, 26 Oct 2011 05:29:38 +0000 (05:29 +0000)
committerraster <raster@7cbeb6ba-43b4-40fd-8cce-4c39aea84d33>
Wed, 26 Oct 2011 05:29:38 +0000 (05:29 +0000)
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
src/lib/ecore_evas/ecore_evas_util.c
src/lib/ecore_evas/ecore_evas_x.c

index e662048..39b63e5 100644 (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;
index 96ccae3..95b6d22 100644 (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);
 }
 
index 0bbd7bb..752b43e 100644 (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);