e_client: fix resize rect geometry of transformed window. 09/266509/1
authorJunseok, Kim <juns.kim@samsung.com>
Mon, 25 Oct 2021 08:28:20 +0000 (17:28 +0900)
committerDoyoun Kang <doyoun.kang@samsung.com>
Sat, 13 Nov 2021 04:20:54 +0000 (13:20 +0900)
There was a bug that abnormally presented geometry of resize rectangle of transformed window.
(refer to commit aa6c0810fd4d45db6f332f8c4b328f33520ca481)

this patch fixes this issue by adjust transformed geometry to the resize rect.

Change-Id: Ic28d0e7b24a204ee3374998f9a22ec5e9316e6cb

src/bin/e_client.c

index 8dc3c69c9343cc20b100a651ae0a89b4706071de..dfc82019da22b7dfba5f5fc457f6f33b3b3aee13 100644 (file)
@@ -1675,6 +1675,8 @@ _e_client_resize_handle(E_Client *ec)
    int x, y, w, h;
    int new_x, new_y, new_w, new_h;
    int tw, th;
+   int trans_x = 0, trans_y = 0;
+   int trans_w = 0, trans_h = 0;
    Eina_List *skiplist = NULL;
 
    if (ec->transformed)
@@ -1779,7 +1781,14 @@ _e_client_resize_handle(E_Client *ec)
         EINA_SAFETY_ON_NULL_RETURN(ec->manage_resize.resize_obj);
      }
 
-   evas_object_geometry_set(ec->manage_resize.resize_obj, new_x, new_y, new_w, new_h);
+   if (e_client_transform_core_enable_get(ec))
+     {
+        e_client_transform_core_input_inv_transform(ec, new_x, new_y, &trans_x, &trans_y);
+        e_client_transform_core_input_inv_transform(ec, new_w, new_h, &trans_w, &trans_h);
+        evas_object_geometry_set(ec->manage_resize.resize_obj, trans_x, trans_y, trans_w, trans_h);
+     }
+   else
+     evas_object_geometry_set(ec->manage_resize.resize_obj, new_x, new_y, new_w, new_h);
    evas_object_show(ec->manage_resize.resize_obj);
 
    ec->manage_resize.x = new_x;
@@ -1791,6 +1800,11 @@ _e_client_resize_handle(E_Client *ec)
 static int
 _e_client_resize_end(E_Client *ec)
 {
+   int resize_candidate_x = ec->manage_resize.x;
+   int resize_candidate_y = ec->manage_resize.y;
+   int resize_candidate_w = ec->manage_resize.w;
+   int resize_candidate_h = ec->manage_resize.h;
+
    _e_client_action_input_win_del();
    ec->resize_mode = E_POINTER_RESIZE_NONE;
 
@@ -1813,10 +1827,10 @@ _e_client_resize_end(E_Client *ec)
    if (ec->manage_resize.resize_obj)
      {
         evas_object_geometry_set(ec->frame,
-                                 ec->manage_resize.x,
-                                 ec->manage_resize.y,
-                                 ec->manage_resize.w,
-                                 ec->manage_resize.h);
+                                 resize_candidate_x,
+                                 resize_candidate_y,
+                                 resize_candidate_w,
+                                 resize_candidate_h);
         _e_client_resize_object_del(ec);
      }