e_policy_zone: remove client from previous desk when add into new zone 86/325186/1
authorJunseok Kim <juns.kim@samsung.com>
Wed, 21 May 2025 07:09:17 +0000 (16:09 +0900)
committerTizen Window System <tizen.windowsystem@gmail.com>
Wed, 4 Jun 2025 06:55:56 +0000 (15:55 +0900)
Change-Id: I5b621b03d63b3b49619b0ae86f3486cc81eb558e

src/bin/windowmgr/e_policy_zone.c

index 47f131b8f81cc17301b1cde06ea2b5eee56b16ed..fd98c3986cbb4ca128159d8777be18aff943bd55 100644 (file)
@@ -1106,6 +1106,10 @@ _e_policy_zone_cb_client_add(struct wl_listener *listener, void *data)
         if (zone_client->policy_zone == policy_zone) return;
 
         ELOGF("POL_ZONE", "E_CLIENT(%p):%s: Already have zone client, remove it", ec, ec, e_client_icccm_title_get(ec));
+
+        // remove from desk here cause zone didn't have zone_client_remove yet
+        desk = e_zone_desk_find_by_ec(zone_client->policy_zone->zone, ec);
+        if (desk) e_desk_client_remove(desk, ec);
         _e_policy_zone_private_client_del(zone_client);
      }
 
@@ -1208,20 +1212,13 @@ static void
 _e_policy_zone_private_client_del(E_Policy_Zone_Private_Client *zone_client)
 {
    E_Policy_Zone *policy_zone;
-   E_Zone *zone;
    E_Client *ec;
-   E_Desk *desk;
 
    policy_zone = zone_client->policy_zone;
    ec = zone_client->ec;
-   zone = policy_zone->zone;
-   desk = e_zone_desk_find_by_ec(zone, ec);
-   EINA_SAFETY_ON_NULL_RETURN(desk);
 
    wl_signal_emit_mutable(&policy_zone->events.client_remove, ec);
 
-   e_desk_client_remove(desk, ec);
-
    wl_list_remove(&zone_client->client_focus_unset.link);
    wl_list_remove(&zone_client->client_above_get.link);
    wl_list_remove(&zone_client->client_below_get.link);