From f161edc3f3f13feb57ea118de506c2f0e8903fae Mon Sep 17 00:00:00 2001 From: "Carsten Haitzler (Rasterman)" Date: Tue, 7 Nov 2017 15:41:35 +0900 Subject: [PATCH] comp object -> propgate signals to the volume objects from the frame if frame changes (eg by focus signals) the volume object cant adapt. send signals to it too so it can adapt if it wants to. @feat --- src/bin/e_client_volume.c | 16 +++++++++++++++- src/bin/e_client_volume.h | 1 + src/bin/e_comp_object.c | 15 +++++++++++++++ src/bin/e_comp_object.h | 2 ++ 4 files changed, 33 insertions(+), 1 deletion(-) diff --git a/src/bin/e_client_volume.c b/src/bin/e_client_volume.c index aea8fd648..d1a4eaa6e 100644 --- a/src/bin/e_client_volume.c +++ b/src/bin/e_client_volume.c @@ -430,7 +430,6 @@ e_client_volume_object_add(E_Client *ec, Evas *evas) edje_object_message_send(o, EDJE_MESSAGE_INT_SET, 0, msg); edje_object_signal_emit(o, "e,action,volume,change", "e"); evas_object_show(o); - } if (edje_object_part_exists(bx, "e.swallow.volume")) { @@ -464,3 +463,18 @@ e_client_volume_object_add(E_Client *ec, Evas *evas) _e_client_volume_object_del_cb, handlers); return bx; } + +E_API void +e_client_volume_object_emit(E_Client *ec, const char *sig, const char *src) +{ + Evas_Object *o; + + EINA_SAFETY_ON_NULL_RETURN(ec); + o = e_comp_object_frame_volume_get(ec->frame); + if (o) + { + edje_object_signal_emit(o, sig, src); + o = edje_object_part_swallow_get(o, "e.swallow.volume_icon"); + if (o) edje_object_signal_emit(o, sig, src); + } +} diff --git a/src/bin/e_client_volume.h b/src/bin/e_client_volume.h index 68e172b67..12ae83628 100644 --- a/src/bin/e_client_volume.h +++ b/src/bin/e_client_volume.h @@ -55,5 +55,6 @@ E_API void e_client_volume_sink_remove(E_Client *ec, E_Client_Volume_Sin E_API void e_client_volume_sink_update(E_Client_Volume_Sink *mixer); E_API void e_client_volume_display_set(E_Client *ec, int volume, Eina_Bool mute); +E_API void e_client_volume_object_emit(E_Client *ec, const char *sig, const char *src); #endif diff --git a/src/bin/e_comp_object.c b/src/bin/e_comp_object.c index 2fb36f415..2468e689d 100644 --- a/src/bin/e_comp_object.c +++ b/src/bin/e_comp_object.c @@ -3700,6 +3700,7 @@ e_comp_object_signal_emit(Evas_Object *obj, const char *sig, const char *src) API_ENTRY; //INF("EMIT %p: %s %s", cw->ec, sig, src); edje_object_signal_emit(cw->shobj, sig, src); + e_client_volume_object_emit(cw->ec, sig, src); if (cw->frame_object) edje_object_signal_emit(cw->frame_object, sig, src); if (cw->frame_icon && e_icon_edje_get(cw->frame_icon)) edje_object_signal_emit(e_icon_edje_get(cw->frame_icon), sig, src); @@ -4630,3 +4631,17 @@ e_comp_object_util_autoclose(Evas_Object *obj, E_Comp_Object_Autoclose_Cb del_cb evas_object_event_callback_add(obj, EVAS_CALLBACK_SHOW, _e_comp_object_autoclose_show, e_comp); evas_object_event_callback_add(obj, EVAS_CALLBACK_DEL, _e_comp_object_autoclose_del, e_comp); } + +E_API Evas_Object * +e_comp_object_frame_icon_get(Evas_Object *obj) +{ + API_ENTRY NULL; + return cw->frame_icon; +} + +E_API Evas_Object * +e_comp_object_frame_volume_get(Evas_Object *obj) +{ + API_ENTRY NULL; + return cw->frame_volume; +} diff --git a/src/bin/e_comp_object.h b/src/bin/e_comp_object.h index 106b4e81b..aa62ce1b1 100644 --- a/src/bin/e_comp_object.h +++ b/src/bin/e_comp_object.h @@ -94,6 +94,8 @@ E_API Eina_Bool e_comp_object_effect_stop(Evas_Object *obj, Edje_Signal_Cb end_c E_API E_Comp_Object_Mover *e_comp_object_effect_mover_add(int pri, const char *sig, E_Comp_Object_Mover_Cb provider, const void *data); E_API void e_comp_object_effect_mover_del(E_Comp_Object_Mover *prov); E_API void e_comp_object_frame_volume_update(Evas_Object *obj); +E_API Evas_Object *e_comp_object_frame_icon_get(Evas_Object *obj); +E_API Evas_Object *e_comp_object_frame_volume_get(Evas_Object *obj); #endif #endif