From f3b1685b45b10a1b4a498037e3955d6c50b636cf Mon Sep 17 00:00:00 2001 From: "JunSeok, Kim" Date: Tue, 31 Jul 2018 12:45:40 +0900 Subject: [PATCH] e_test_helper: Added eldbus callback for SetWindowTransientFor Change-Id: Id6ca5bc6311874ff95cc76436fb15186671d1cc1 --- src/bin/e_test_helper.c | 79 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 79 insertions(+) diff --git a/src/bin/e_test_helper.c b/src/bin/e_test_helper.c index 2be0ed9..e572cc6 100644 --- a/src/bin/e_test_helper.c +++ b/src/bin/e_test_helper.c @@ -34,6 +34,8 @@ static Eldbus_Message *_e_test_helper_cb_reset_register_window(const Eldbus_Serv static Eldbus_Message *_e_test_helper_cb_change_stack(const Eldbus_Service_Interface *iface, const Eldbus_Message *msg); static Eldbus_Message *_e_test_helper_cb_activate_window(const Eldbus_Service_Interface *iface, const Eldbus_Message *msg); static Eldbus_Message *_e_test_helper_cb_change_iconic_state(const Eldbus_Service_Interface *iface, const Eldbus_Message *msg); +static Eldbus_Message *_e_test_helper_cb_set_transient_for(const Eldbus_Service_Interface *iface, const Eldbus_Message *msg); +static Eldbus_Message *_e_test_helper_cb_unset_transient_for(const Eldbus_Service_Interface *iface, const Eldbus_Message *msg); static Eldbus_Message *_e_test_helper_cb_get_client_info(const Eldbus_Service_Interface *iface EINA_UNUSED, const Eldbus_Message *msg); static Eldbus_Message *_e_test_helper_cb_get_clients(const Eldbus_Service_Interface *iface, const Eldbus_Message *msg); static Eldbus_Message *_e_test_helper_cb_dpms(const Eldbus_Service_Interface *iface, const Eldbus_Message *msg); @@ -118,6 +120,18 @@ static const Eldbus_Method methods[] ={ _e_test_helper_cb_change_iconic_state, 0 }, { + "SetWindowTransientFor", + ELDBUS_ARGS({"uu", "child window id to set transient_for, parent window id to set transient_for"}), + ELDBUS_ARGS({"b", "accept or not"}), + _e_test_helper_cb_set_transient_for, 0 + }, + { + "UnsetWindowTransientFor", + ELDBUS_ARGS({"u", "child window id to set transient_for"}), + ELDBUS_ARGS({"b", "accept or not"}), + _e_test_helper_cb_unset_transient_for, 0 + }, + { "GetWinInfo", ELDBUS_ARGS({"u", "window id"}), ELDBUS_ARGS({E_TH_SIGN_WIN_INFO, "information of ec"}), @@ -685,6 +699,71 @@ _e_test_helper_cb_change_iconic_state(const Eldbus_Service_Interface *iface EINA return reply; } +static Eldbus_Message* +_e_test_helper_cb_set_transient_for(const Eldbus_Service_Interface *iface EINA_UNUSED, + const Eldbus_Message *msg) +{ + Eldbus_Message *reply = eldbus_message_method_return_new(msg); + Ecore_Window parent = 0x0, child = 0x0; + E_Client *ec = NULL, *pec = NULL; + Eina_Bool accept = EINA_FALSE; + + EINA_SAFETY_ON_NULL_GOTO(th_data, fin); + + if (!eldbus_message_arguments_get(msg, "uu", &child, &parent)) + { + ERR("error on eldbus_message_arguments_get()\n"); + goto fin; + } + + if (parent && child) + { + pec = e_pixmap_find_client_by_res_id(parent); + EINA_SAFETY_ON_NULL_GOTO(pec, fin); + + ec = e_pixmap_find_client_by_res_id(child); + EINA_SAFETY_ON_NULL_GOTO(ec, fin); + + e_policy_stack_transient_for_set(ec, pec); + accept = EINA_TRUE; + } + +fin: + eldbus_message_arguments_append(reply, "b", accept); + return reply; +} + +static Eldbus_Message* +_e_test_helper_cb_unset_transient_for(const Eldbus_Service_Interface *iface EINA_UNUSED, + const Eldbus_Message *msg) +{ + Eldbus_Message *reply = eldbus_message_method_return_new(msg); + Ecore_Window child = 0x0; + E_Client *ec = NULL; + Eina_Bool accept = EINA_FALSE; + + EINA_SAFETY_ON_NULL_GOTO(th_data, fin); + + if (!eldbus_message_arguments_get(msg, "u", &child)) + { + ERR("error on eldbus_message_arguments_get()\n"); + goto fin; + } + + if (child) + { + ec = e_pixmap_find_client_by_res_id(child); + EINA_SAFETY_ON_NULL_GOTO(ec, fin); + + e_policy_stack_transient_for_set(ec, NULL); + accept = EINA_TRUE; + } + +fin: + eldbus_message_arguments_append(reply, "b", accept); + return reply; +} + static Eldbus_Message * _e_test_helper_cb_get_client_info(const Eldbus_Service_Interface *iface EINA_UNUSED, const Eldbus_Message *msg) -- 2.7.4