e_client: add e_client_parent_set 73/320873/1
authorSooChan Lim <sc1.lim@samsung.com>
Sun, 9 Mar 2025 06:07:24 +0000 (15:07 +0900)
committerTizen Window System <tizen.windowsystem@gmail.com>
Mon, 10 Mar 2025 08:46:02 +0000 (17:46 +0900)
This function sets the parent ec to the assigned ec.

Change-Id: I2cd75b4b6b22145ef9eb8111ea726ee02ef2bc51

src/bin/core/e_client.c
src/bin/core/e_client_intern.h

index 64e094d26f23c6088d75f80b41d2281896b2f816..d6b0366461257a36f81ddf4a33f321f71bbb73cc 100644 (file)
@@ -119,6 +119,7 @@ struct _E_Client_Private
         struct wl_signal mouse_move;
         struct wl_signal resize_end;
         struct wl_signal virtual_touch;
+        struct wl_signal parent_set;
      } events;
 
    Eina_Bool hide_by_request;
@@ -1064,6 +1065,8 @@ _e_client_private_init(E_Client *ec)
 
    wl_signal_init(&priv->events.virtual_touch);
 
+   wl_signal_init(&priv->events.parent_set);
+
    e_object_data_set(E_OBJECT(ec), priv);
 
    return EINA_TRUE;
@@ -2498,6 +2501,16 @@ e_client_type_update(E_Client *ec)
    return ec->client_type;
 }
 
+EINTERN void
+e_client_parent_set(E_Client *ec, E_Client *parent_ec)
+{
+   EINA_SAFETY_ON_NULL_RETURN(ec);
+
+   ec->parent = parent_ec;
+
+   wl_signal_emit(&PRI(ec)->events.parent_set, parent_ec);
+}
+
 static void
 _e_client_transform_sub_apply(E_Client *ec, E_Client *epc, double zoom)
 {
@@ -7247,6 +7260,13 @@ e_client_virtual_touch_listener_add(E_Client *ec, struct wl_listener *listener)
    wl_signal_add(&priv->events.virtual_touch, listener);
 }
 
+EINTERN void
+e_client_parent_set_listener_add(E_Client *ec, struct wl_listener *listener)
+{
+   API_ENTRY;
+   wl_signal_add(&priv->events.parent_set, listener);
+}
+
 EINTERN Eina_Bool
 e_client_shell_configure_send(E_Client *ec, uint32_t edges, int32_t width, int32_t height)
 {
index 7498b95969dcdf4c5e3c803e18a288b98560267a..aca2b2d5e05e9c107e41671202577eb57e9f044c 100644 (file)
@@ -57,6 +57,7 @@ EINTERN void          e_client_unstick(E_Client *ec);
 EINTERN void          e_client_pinned_set(E_Client *ec, Eina_Bool set);
 EINTERN void          e_client_ping(E_Client *cw);
 EINTERN int           e_client_type_update(E_Client *ec);
+EINTERN void          e_client_parent_set(E_Client *ec, E_Client *parent_ec);
 
 EINTERN Eina_Bool e_client_is_parent_iconify_by_client(E_Client *ec);
 EINTERN Eina_Bool e_client_is_layout_apply(E_Client *ec);
@@ -258,6 +259,7 @@ EINTERN void e_client_stay_within_margin_listener_add(E_Client *ec, struct wl_li
 EINTERN void e_client_mouse_move_listener_add(E_Client *ec, struct wl_listener *listener);
 EINTERN void e_client_resize_end_listener_add(E_Client *ec, struct wl_listener *listener);
 EINTERN void e_client_virtual_touch_listener_add(E_Client *ec, struct wl_listener *listener);
+EINTERN void e_client_parent_set_listener_add(E_Client *ec, struct wl_listener *listener);
 
 EINTERN struct wl_listener  *e_client_destroy_listener_get(E_Client *ec, wl_notify_func_t notify);