e_policy_desk_area: remove private client when the client already in desk area 78/325178/1
authorJunseok Kim <juns.kim@samsung.com>
Wed, 21 May 2025 06:42:16 +0000 (15:42 +0900)
committerTizen Window System <tizen.windowsystem@gmail.com>
Wed, 4 Jun 2025 06:55:55 +0000 (15:55 +0900)
Change-Id: I0365bc3cd039bfe62f0cfe7e7a4c7000dcc8e42d

src/bin/windowmgr/e_policy_desk_area.c

index ad3e4594a548640e5de0aed64867ee528749b1d6..a18fe975b70f904132de57123516ca8af29d6d0b 100644 (file)
@@ -2997,6 +2997,15 @@ _e_policy_desk_area_cb_client_add(struct wl_listener *listener, void *data)
    eda = pda->desk_area;
    ec = (E_Client *) data;
 
+   eda_client = _e_policy_desk_area_private_client_get(ec);
+   if (eda_client)
+     {
+        if (eda_client->eda == eda) return;
+
+        ELOGF("POLICY_DESK_AREA", "E_CLIENT(%p):%s: Already have desk area client, remove it", ec, ec, e_client_icccm_title_get(ec));
+        e_desk_area_ec_remove(eda_client->eda, ec);
+     }
+
    eda_client = _e_policy_desk_area_private_client_new(ec);
 
    eda_client->eda = eda;