apply ec->x,y when defer move 12/158312/6
authorJuyeon Lee <juyeonne.lee@samsung.com>
Tue, 31 Oct 2017 05:13:21 +0000 (14:13 +0900)
committerJuyeon Lee <juyeonne.lee@samsung.com>
Tue, 31 Oct 2017 07:38:03 +0000 (07:38 +0000)
while client doing unmaximize, x,y(0,0)has passed to defer move
but, move request has been applied before the 1st buffer commit
as a result, there were bug for move ignore due to defer move

Change-Id: I7a22a9c93e0e1c64f5d2678f2c9744f692364540

src/bin/e_client.c
src/bin/e_policy_visibility.c
src/bin/e_policy_visibility.h
src/bin/e_policy_visibility_internal.h

index 786cf159902eed4e49b63405dcb40bded8b83665..2be438fda0661f3e54cc5eff714f55a66fe6abda 100644 (file)
@@ -5225,11 +5225,7 @@ e_client_unmaximize(E_Client *ec, E_Maximize max)
                     e_client_util_move_resize_without_frame(ec, x, y, w, h);
                   else
                     {
-                       if (ec->changes.pos)
-                         {
-                            x = ec->x; y = ec->y;
-                         }
-                       e_policy_visibility_client_defer_move(ec, x, y);
+                       e_policy_visibility_client_defer_move(ec);
                     }
                   e_hints_window_size_unset(ec);
                }
@@ -5241,11 +5237,7 @@ e_client_unmaximize(E_Client *ec, E_Maximize max)
                     e_client_util_move_resize_without_frame(ec, x, y, w, h);
                   else
                      {
-                        if (ec->changes.pos)
-                          {
-                             x = ec->x; y = ec->y;
-                          }
-                        e_policy_visibility_client_defer_move(ec, x, y);
+                        e_policy_visibility_client_defer_move(ec);
                      }
 
                   e_hints_window_size_set(ec);
index 27adda4301941f48aaea3fc19cddd3efeef2c57f..76c17290c574dd4786018eda0d6256b7af029094 100644 (file)
@@ -1089,15 +1089,12 @@ end:
 }
 
 static Eina_Bool
-_e_vis_client_defer_move(E_Vis_Client *vc, E_Vis_Job_Type type, int x, int y)
+_e_vis_client_defer_move(E_Vis_Client *vc, E_Vis_Job_Type type)
 {
    if (!vc) return EINA_FALSE;
 
-   vc->state = E_VIS_ICONIFY_STATE_GEOMETRY_CHANGE;
-   VS_DBG(vc->ec, "\tUPDATE ICONIC STATE: %s", STATE_STR(vc));
+   VS_DBG(vc->ec, "\tDEFER MOVE: %s", STATE_STR(vc));
    vc->grab = _e_vis_client_grab_get(vc, __func__);
-   vc->defer.x = x;
-   vc->defer.y = y;
    _e_vis_client_buffer_attach_handler_add(vc);
 
    _e_vis_client_job_add(vc, type);
@@ -1229,7 +1226,7 @@ _e_vis_ec_job_exec(E_Client *ec, E_Vis_Job_Type type)
          if (vc &&(!e_object_is_del(E_OBJECT(ec))) &&
              (ec->visible) && (!ec->hidden) &&
              (!ec->iconic) && (!ec->ignored))
-           evas_object_move(ec->frame, vc->defer.x, vc->defer.y);
+           evas_object_move(ec->frame, ec->x, ec->y);
          break;
 
       default:
@@ -1831,12 +1828,12 @@ e_policy_visibility_client_layer_lower(E_Client *ec, E_Layer layer)
 }
 
 EINTERN void
-e_policy_visibility_client_defer_move(E_Client *ec, int x, int y)
+e_policy_visibility_client_defer_move(E_Client *ec)
 {
    E_VIS_CLIENT_GET_OR_RETURN(vc, ec);
    VS_DBG(ec, "API ENTRY | Defered Move");
 
-   _e_vis_client_defer_move(vc, E_VIS_JOB_TYPE_DEFER_MOVE, x, y);
+   _e_vis_client_defer_move(vc, E_VIS_JOB_TYPE_DEFER_MOVE);
 }
 
 E_API Eina_Bool
index b7ac385496a4c71858205025d94d104d01cd18ac..143127aca87c48e2171e4fb5d439885048d2ef60 100644 (file)
@@ -33,7 +33,7 @@ E_API E_Pol_Vis_Hook             *e_policy_visibility_hook_add(E_Pol_Vis_Hook_Ty
 E_API void                        e_policy_visibility_hook_del(E_Pol_Vis_Hook *h);
 E_API Eina_Bool                   e_policy_visibility_client_is_iconic(E_Client *ec);
 
-EINTERN void                      e_policy_visibility_client_defer_move(E_Client *ec, int x, int y);
+EINTERN void                      e_policy_visibility_client_defer_move(E_Client *ec);
 
 #endif
 #endif
index 66dc61e4f5329bf22179041f4c1a1c872c342a55..eb57795b047c6ecf32386680351b7a600a6b0b8d 100644 (file)
@@ -96,7 +96,6 @@ typedef enum
    E_VIS_ICONIFY_STATE_ICONIC,
    E_VIS_ICONIFY_STATE_RUNNING_UNICONIFY,
    E_VIS_ICONIFY_STATE_RUNNING_UNICONIFY_WAITING_FOR_CHILD,
-   E_VIS_ICONIFY_STATE_GEOMETRY_CHANGE,
 } E_Vis_Iconify_State;
 
 typedef enum
@@ -158,11 +157,6 @@ struct _E_Vis_Client
    } job;
    Eina_Bool prepare_emitted;
    E_Layer layer;
-
-   struct
-   {
-      int          x, y, w, h;
-   } defer;
 };
 
 struct _E_Vis_Job_Group