e_desk_area: move activate_done listener to desk_area and desk 56/304756/1
authorSooChan Lim <sc1.lim@samsung.com>
Sun, 24 Dec 2023 02:50:10 +0000 (11:50 +0900)
committerTizen Window System <tizen.windowsystem@gmail.com>
Tue, 23 Jan 2024 09:19:22 +0000 (18:19 +0900)
e_desk_area and e_desk manage the activate_done of e_client instead of e_zone.

Change-Id: Ibcb6bafd5003234eb3333558b59a1d6e9350f713

src/bin/e_desk.c
src/bin/e_desk_area.c
src/bin/e_zone.c

index bd0fe4f..0a9c7f8 100644 (file)
@@ -67,6 +67,7 @@ struct _E_Desk_Private_Client
 
    // client listeners
    struct wl_listener client_destroy;
+   struct wl_listener client_activate_done;
 };
 
 struct _E_Desk_Smart_Data
@@ -825,6 +826,7 @@ _e_desk_private_client_del(E_Desk_Private_Client *desk_client)
    _e_desk_smart_client_del(desk->smart_obj, ec);
    _e_desk_client_data_del(desk, ec);
 
+   wl_list_remove(&desk_client->client_activate_done.link);
    wl_list_remove(&desk_client->client_destroy.link);
 
    E_FREE(desk_client);
@@ -845,6 +847,30 @@ _desk_cb_client_destroy(struct wl_listener *listener, void *data)
 
    _e_desk_private_client_del(desk_client);
 }
+
+static void
+_desk_cb_client_activate_done(struct wl_listener *listener, void *data)
+{
+   E_Desk_Private_Client *desk_client;
+   E_Desk *desk;
+   E_Client *ec;
+
+   desk_client = wl_container_of(listener, desk_client, client_activate_done);
+   desk = desk_client->desk;
+   ec = desk_client->ec;
+
+   ELOGF("DESK", "CLIENT ACTIVATE DONE. desk:%p", ec, desk);
+
+   if ((!ec->iconic) && (!ec->sticky))
+     {
+        e_desk_show(desk);
+     }
+
+   if (!e_client_desk_iconify_skip_get(ec))
+     {
+        e_desk_visible_client_iconified_list_remove_all(desk);
+     }
+}
 #endif
 
 EINTERN void
@@ -875,6 +901,8 @@ e_desk_client_add(E_Desk *desk, E_Client *ec)
    // e_client listeners
    desk_client->client_destroy.notify = _desk_cb_client_destroy;
    e_client_destroy_listener_add(ec, &desk_client->client_destroy);
+   desk_client->client_activate_done.notify = _desk_cb_client_activate_done;
+   e_client_activate_done_listener_add(ec, &desk_client->client_activate_done);
 #endif
 
    _e_desk_client_set(desk, ec);
index 55aa260..d79f3ef 100644 (file)
@@ -69,6 +69,7 @@ struct _E_Desk_Area_Private_Client
    struct wl_listener client_unstick;
    struct wl_listener client_maximize;
    struct wl_listener client_unmaximize;
+   struct wl_listener client_activate_done;
 
    // comp_object listeners
    struct wl_listener comp_object_raise;
@@ -741,6 +742,7 @@ _e_desk_area_private_client_del(E_Desk_Area_Private_Client *eda_client)
    wl_list_remove(&eda_client->comp_object_lower.link);
    wl_list_remove(&eda_client->comp_object_raise.link);
 
+   wl_list_remove(&eda_client->client_activate_done.link);
    wl_list_remove(&eda_client->client_unmaximize.link);
    wl_list_remove(&eda_client->client_maximize.link);
    wl_list_remove(&eda_client->client_unstick.link);
@@ -1679,6 +1681,26 @@ _desk_area_cb_client_unmaximize(struct wl_listener *listener, void *data)
 }
 
 static void
+_desk_area_cb_client_activate_done(struct wl_listener *listener, void *data)
+{
+   E_Desk_Area_Private_Client *eda_client;
+   E_Desk_Area *eda;
+   E_Client *ec;
+
+   eda_client = wl_container_of(listener, eda_client, client_activate_done);
+   eda = eda_client->eda;
+   ec = eda_client->ec;
+
+   ELOGF("EDA", "CLIENT ACTIVATE DONE. eda:%p", ec, eda);
+
+   if (!ec->lock_user_stacking)
+     e_client_raise(ec);
+
+   if (ec->shaded || ec->shading)
+     e_client_unshade(ec, ec->shade_dir);
+}
+
+static void
 _desk_area_cb_comp_object_lower(struct wl_listener *listener, void *data)
 {
    E_Desk_Area_Private_Client *eda_client;
@@ -2340,6 +2362,8 @@ e_desk_area_ec_add(E_Desk_Area *eda, E_Client *ec)
    e_client_maximize_listener_add(ec, &eda_client->client_maximize);
    eda_client->client_unmaximize.notify = _desk_area_cb_client_unmaximize;
    e_client_unmaximize_listener_add(ec, &eda_client->client_unmaximize);
+   eda_client->client_activate_done.notify = _desk_area_cb_client_activate_done;
+   e_client_activate_done_listener_add(ec, &eda_client->client_activate_done);
 
    // e_comp_object listeners
    eda_client->comp_object_lower.notify = _desk_area_cb_comp_object_lower;
index 4a82184..e944cd0 100644 (file)
@@ -52,10 +52,7 @@ struct _E_Zone_Private_Client
    struct wl_listener client_unstick;
    struct wl_listener client_maximize;
    struct wl_listener client_unmaximize;
-#endif
    struct wl_listener client_activate_done;
-#ifdef REFACTOR_DESK_AREA
-#else
    struct wl_listener client_fullscreen;
    struct wl_listener client_unfullscreen;
 #endif
@@ -425,10 +422,7 @@ _zone_cb_client_destroy(struct wl_listener *listener, void *data)
 #else
    wl_list_remove(&zone_client->client_unfullscreen.link);
    wl_list_remove(&zone_client->client_fullscreen.link);
-#endif
    wl_list_remove(&zone_client->client_activate_done.link);
-#ifdef REFACTOR_DESK_AREA
-#else
    wl_list_remove(&zone_client->client_unmaximize.link);
    wl_list_remove(&zone_client->client_maximize.link);
    wl_list_remove(&zone_client->client_unstick.link);
@@ -1009,7 +1003,6 @@ _zone_cb_client_unmaximize(struct wl_listener *listener, void *data)
           }
      }
 }
-#endif
 
 static void
 _zone_cb_client_activate_done(struct wl_listener *listener, void *data)
@@ -1040,8 +1033,6 @@ _zone_cb_client_activate_done(struct wl_listener *listener, void *data)
      }
 }
 
-#ifdef REFACTOR_DESK_AREA
-#else
 static void
 _zone_cb_client_fullscreen(struct wl_listener *listener, void *data)
 {
@@ -2277,13 +2268,10 @@ e_zone_client_add(E_Zone *zone, E_Client *ec)
 
    zone_client->client_unmaximize.notify = _zone_cb_client_unmaximize;
    e_client_unmaximize_listener_add(ec, &zone_client->client_unmaximize);
-#endif
 
    zone_client->client_activate_done.notify = _zone_cb_client_activate_done;
    e_client_activate_done_listener_add(ec, &zone_client->client_activate_done);
 
-#ifdef REFACTOR_DESK_AREA
-#else
    zone_client->client_fullscreen.notify = _zone_cb_client_fullscreen;
    e_client_fullscreen_listener_add(ec, &zone_client->client_fullscreen);