e_client: Use desk_group geometry for maximize reference geometry if desk group enabled 38/293238/2
authorJunseok Kim <juns.kim@samsung.com>
Thu, 23 Mar 2023 12:12:30 +0000 (21:12 +0900)
committerJunseok Kim <juns.kim@samsung.com>
Tue, 23 May 2023 04:35:09 +0000 (13:35 +0900)
Change-Id: If4f9c847c19a9151885510df05c6739331b9c5c5

src/bin/e_client.c

index fc44cdd26bbc0840d02372e5b14a5ce4062da18f..a725dce9371ed89dca65be98d308b333980210d7 100644 (file)
@@ -2699,12 +2699,28 @@ _e_client_maximize(E_Client *ec, E_Maximize max)
    int w, h, pw, ph;
    int zx, zy, zw, zh;
    int ecx, ecy, ecw, ech;
+   int desk_x, desk_y, desk_w, desk_h;
    Eina_Bool override = ec->maximize_override;
 
    if (!ec->zone) return;
    zx = zy = zw = zh = 0;
    ec->maximize_override = 1;
 
+   if (ec->desk_group.enable && ec->desk_group.desk_group != NULL)
+     {
+        desk_x = ec->desk_group.desk_group->x;
+        desk_y = ec->desk_group.desk_group->y;
+        desk_w = ec->desk_group.desk_group->w;
+        desk_h = ec->desk_group.desk_group->h;
+     }
+    else
+    {
+        desk_x = ec->desk->geom.x;
+        desk_y = ec->desk->geom.y;
+        desk_w = ec->desk->geom.w;
+        desk_h = ec->desk->geom.h;
+    }
+
    switch (max & E_MAXIMIZE_TYPE)
      {
       case E_MAXIMIZE_NONE:
@@ -2712,14 +2728,14 @@ _e_client_maximize(E_Client *ec, E_Maximize max)
         break;
 
       case E_MAXIMIZE_FULLSCREEN:
-        w = ec->desk->geom.w;
-        h = ec->desk->geom.h;
+        w = desk_w;
+        h = desk_h;
 
         e_client_resize_limit(ec, &w, &h);
         /* center x-direction */
-        x1 = ec->desk->geom.x + (ec->desk->geom.w - w) / 2;
+        x1 = desk_x + (desk_w - w) / 2;
         /* center y-direction */
-        yy1 = ec->desk->geom.y + (ec->desk->geom.h - h) / 2;
+        yy1 = desk_y + (desk_h - h) / 2;
 
         switch (max & E_MAXIMIZE_DIRECTION)
           {
@@ -2736,11 +2752,11 @@ _e_client_maximize(E_Client *ec, E_Maximize max)
              break;
 
            case E_MAXIMIZE_LEFT:
-             e_client_maximized_geometry_set(ec, ec->desk->geom.x, ec->desk->geom.y, w / 2, h);
+             e_client_maximized_geometry_set(ec, desk_x, desk_y, w / 2, h);
              break;
 
            case E_MAXIMIZE_RIGHT:
-             e_client_maximized_geometry_set(ec, x1, ec->desk->geom.y, w / 2, h);
+             e_client_maximized_geometry_set(ec, x1, desk_y, w / 2, h);
              break;
           }
         break;
@@ -2752,8 +2768,8 @@ _e_client_maximize(E_Client *ec, E_Maximize max)
              // base_output_resolution
              if (ec->base_output_resolution.use)
                {
-                  zx = ec->desk->geom.x;
-                  zy = ec->desk->geom.y;
+                  zx = desk_x;
+                  zy = desk_y;
                   zw = ec->base_output_resolution.w;
                   zh = ec->base_output_resolution.h;
                }
@@ -2764,10 +2780,10 @@ _e_client_maximize(E_Client *ec, E_Maximize max)
           }
         else
           {
-             x1 = ec->desk->geom.x;
-             yy1 = ec->desk->geom.y;
-             x2 = ec->desk->geom.x + ec->desk->geom.w;
-             y2 = ec->desk->geom.y + ec->desk->geom.h;
+             x1 = desk_x;
+             yy1 = desk_y;
+             x2 = desk_x + desk_w;
+             y2 = desk_y + desk_h;
              e_maximize_client_shelf_fill(ec, &x1, &yy1, &x2, &y2, max);
              zx = x1, zy = yy1;
              zw = x2 - x1;
@@ -2825,10 +2841,10 @@ _e_client_maximize(E_Client *ec, E_Maximize max)
         break;
 
       case E_MAXIMIZE_FILL:
-        x1 = ec->desk->geom.x;
-        yy1 = ec->desk->geom.y;
-        x2 = ec->desk->geom.x + ec->desk->geom.w;
-        y2 = ec->desk->geom.y + ec->desk->geom.h;
+        x1 = desk_x;
+        yy1 = desk_y;
+        x2 = desk_x + desk_w;
+        y2 = desk_y + desk_h;
 
         /* walk through all shelves */
         e_maximize_client_shelf_fill(ec, &x1, &yy1, &x2, &y2, max);
@@ -2861,11 +2877,11 @@ _e_client_maximize(E_Client *ec, E_Maximize max)
              break;
 
            case E_MAXIMIZE_LEFT:
-             e_client_maximized_geometry_set(ec, ec->desk->geom.x, ec->desk->geom.y, w / 2, h);
+             e_client_maximized_geometry_set(ec, desk_x, desk_y, w / 2, h);
              break;
 
            case E_MAXIMIZE_RIGHT:
-             e_client_maximized_geometry_set(ec, x1, ec->desk->geom.y, w / 2, h);
+             e_client_maximized_geometry_set(ec, x1, desk_y, w / 2, h);
              break;
           }
         break;
@@ -6253,6 +6269,8 @@ e_client_maximize_update(E_Client *ec)
 E_API void
 e_client_maximize(E_Client *ec, E_Maximize max)
 {
+  int desk_x, desk_y;
+
    E_OBJECT_CHECK(ec);
    E_OBJECT_TYPE_CHECK(ec, E_CLIENT_TYPE);
 
@@ -6276,6 +6294,17 @@ e_client_maximize(E_Client *ec, E_Maximize max)
         return;
      }
 
+   if (ec->desk_group.enable && ec->desk_group.desk_group != NULL)
+     {
+        desk_x = ec->desk_group.desk_group->x;
+        desk_y = ec->desk_group.desk_group->y;
+     }
+    else
+    {
+        desk_x = ec->desk->geom.x;
+        desk_y = ec->desk->geom.y;
+    }
+
    evas_object_smart_callback_call(ec->frame, "maximize_pre", NULL);
 
    if (ec->fullscreen)
@@ -6284,13 +6313,13 @@ e_client_maximize(E_Client *ec, E_Maximize max)
    if (!(ec->maximized & E_MAXIMIZE_HORIZONTAL))
      {
         /* Horizontal hasn't been set */
-        ec->saved.x = ec->client.x - ec->desk->geom.x;
+        ec->saved.x = ec->client.x - desk_x;
         ec->saved.w = ec->client.w;
      }
    if (!(ec->maximized & E_MAXIMIZE_VERTICAL))
      {
         /* Vertical hasn't been set */
-        ec->saved.y = ec->client.y - ec->desk->geom.y;
+        ec->saved.y = ec->client.y - desk_y;
         ec->saved.h = ec->client.h;
      }