e_client/e_zone: consider fullscreen state while handling maximize/unmaximize
authorDoyoun Kang <doyoun.kang@samsung.com>
Mon, 13 Nov 2023 04:53:10 +0000 (13:53 +0900)
committerSooChan Lim <sc1.lim@samsung.com>
Mon, 13 Nov 2023 05:53:43 +0000 (14:53 +0900)
Change-Id: I2a49dc2d1b8ceee664a65b58771f63e798b33f4a

src/bin/e_client.c
src/bin/e_zone.c

index 3cb1c90..bfab595 100644 (file)
@@ -4221,14 +4221,23 @@ e_client_maximize(E_Client *ec, E_Maximize max)
         return;
      }
 
-   // call the maximize hook of a client
-   wl_signal_emit_mutable(&PRI(ec)->events.maximize, &max);
+   if (!ec->fullscreen)
+     {
+        // call the maximize hook of a client
+        wl_signal_emit_mutable(&PRI(ec)->events.maximize, &max);
 
-   // store the E_Maximize value
-   ec->maximized = max;
-   ec->changes.need_unmaximize = 0;
+        // store the E_Maximize value
+        ec->maximized = max;
+        ec->changes.need_unmaximize = 0;
 
-   evas_object_smart_callback_call(ec->frame, "maximize_done", NULL);
+        evas_object_smart_callback_call(ec->frame, "maximize_done", NULL);
+     }
+   else
+     {
+        // store the E_Maximize value
+        ec->maximized = max;
+        ec->changes.need_unmaximize = 0;
+     }
 }
 
 E_API void
@@ -4256,12 +4265,17 @@ e_client_unmaximize(E_Client *ec, E_Maximize max)
    /* Can only remove existing maximization directions */
    if (!max) return;
 
-   evas_object_smart_callback_call(ec->frame, "unmaximize_pre", NULL);
+   if (!ec->fullscreen)
+     {
+        evas_object_smart_callback_call(ec->frame, "unmaximize_pre", NULL);
 
-   // call the unmaximize hook of a client
-   wl_signal_emit_mutable(&PRI(ec)->events.unmaximize, &max);
+        // call the unmaximize hook of a client
+        wl_signal_emit_mutable(&PRI(ec)->events.unmaximize, &max);
+
+        evas_object_smart_callback_call(ec->frame, "unmaximize_done", NULL);
+     }
 
-   evas_object_smart_callback_call(ec->frame, "unmaximize_done", NULL);
+   ec->maximized = E_MAXIMIZE_NONE;
    ec->changes.need_unmaximize = 0;
 }
 
index 6532a8c..9d3f974 100644 (file)
@@ -847,35 +847,35 @@ _zone_cb_client_maximize(struct wl_listener *listener, void *data)
         desk_x = ec->desk_area.desk_area->x;
         desk_y = ec->desk_area.desk_area->y;
      }
-    else
-    {
+   else
+     {
         desk_x = desk->geom.x;
         desk_y = desk->geom.y;
-    }
-
-   evas_object_smart_callback_call(ec->frame, "maximize_pre", NULL);
-
-   if (ec->fullscreen)
-     e_client_unfullscreen(ec);
+     }
 
    ec->pre_res_change.valid = 0;
 
-   if (!(ec->maximized & E_MAXIMIZE_HORIZONTAL))
-     {
-        /* Horizontal hasn't been set */
-        ec->saved.x = ec->client.x - desk_x;
-        ec->saved.w = ec->client.w;
-     }
-   if (!(ec->maximized & E_MAXIMIZE_VERTICAL))
+   if (!ec->fullscreen)
      {
-        /* Vertical hasn't been set */
-        ec->saved.y = ec->client.y - desk_y;
-        ec->saved.h = ec->client.h;
-     }
+        evas_object_smart_callback_call(ec->frame, "maximize_pre", NULL);
 
-   ec->saved.zone = zone->num;
+        if (!(ec->maximized & E_MAXIMIZE_HORIZONTAL))
+          {
+             /* Horizontal hasn't been set */
+             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 - desk_y;
+             ec->saved.h = ec->client.h;
+          }
+
+        ec->saved.zone = zone->num;
 
-   _e_zone_client_maximize(zone, desk, ec, max);
+        _e_zone_client_maximize(zone, desk, ec, max);
+     }
 }
 
 static void
@@ -890,6 +890,8 @@ _zone_cb_client_unmaximize(struct wl_listener *listener, void *data)
    zone = zone_client->zone;
    ec = zone_client->ec;
 
+   if (ec->fullscreen) return;
+
    max = *((E_Maximize *)data);
 
    if (ec->maximized & E_MAXIMIZE_TYPE)