diff --git a/src/lib/elementary/efl_ui_image.c b/src/lib/elementary/efl_ui_image.c index 4e75b29f9b..56be05583e 100644 --- a/src/lib/elementary/efl_ui_image.c +++ b/src/lib/elementary/efl_ui_image.c @@ -1953,6 +1953,8 @@ _efl_ui_image_efl_ui_view_model_set(Eo *obj, Efl_Ui_Image_Data *pd, Efl_Model *m EOLIAN static Eina_Error _efl_ui_image_efl_ui_property_bind_property_bind(Eo *obj, Efl_Ui_Image_Data *pd, const char *key, const char *property) { + Eina_Stringshare *sk; + if (strcmp(key, "filename") == 0) { pd->property.icon = EINA_FALSE; @@ -1974,6 +1976,11 @@ _efl_ui_image_efl_ui_property_bind_property_bind(Eo *obj, Efl_Ui_Image_Data *pd, } _update_viewmodel(obj, pd); + + sk = eina_stringshare_add(key); + efl_event_callback_call(obj, EFL_UI_PROPERTY_BIND_EVENT_PROPERTY_BOUND, (void*) sk); + eina_stringshare_del(sk); + return 0; } diff --git a/src/lib/elementary/efl_ui_layout.c b/src/lib/elementary/efl_ui_layout.c index cdb945e203..f6f725eb9c 100644 --- a/src/lib/elementary/efl_ui_layout.c +++ b/src/lib/elementary/efl_ui_layout.c @@ -2275,6 +2275,7 @@ _efl_ui_layout_base_efl_ui_property_bind_property_bind(Eo *obj, Efl_Ui_Layout_Da { EINA_SAFETY_ON_NULL_RETURN_VAL(key, EFL_PROPERTY_ERROR_INVALID_KEY); Eina_Stringshare *sprop; + Eina_Stringshare *sk; Eina_Hash *hash = NULL; char *data = NULL; Efl_Model *model; @@ -2323,6 +2324,10 @@ _efl_ui_layout_base_efl_ui_property_bind_property_bind(Eo *obj, Efl_Ui_Layout_Da _efl_ui_layout_view_model_property_update(pd, data, sprop); } + sk = eina_stringshare_add(key); + efl_event_callback_call(obj, EFL_UI_PROPERTY_BIND_EVENT_PROPERTY_BOUND, (void*) sk); + eina_stringshare_del(sk); + if (!sprop) free(data); diff --git a/src/lib/elementary/efl_ui_layout_factory.c b/src/lib/elementary/efl_ui_layout_factory.c index 3c93116711..709a31fc85 100644 --- a/src/lib/elementary/efl_ui_layout_factory.c +++ b/src/lib/elementary/efl_ui_layout_factory.c @@ -133,18 +133,16 @@ _efl_ui_layout_factory_efl_ui_property_bind_property_bind(Eo *obj EINA_UNUSED, E if (property == NULL) { eina_hash_del(pd->bind.properties, ss_key, NULL); - eina_stringshare_del(ss_key); - return 0; + goto end; } ss_prop = eina_stringshare_add(property); ss_old = eina_hash_set(pd->bind.properties, ss_key, ss_prop); - if (ss_old) - { - eina_stringshare_del(ss_old); - eina_stringshare_del(ss_key); - } + if (ss_old) eina_stringshare_del(ss_old); + end: + efl_event_callback_call(obj, EFL_UI_PROPERTY_BIND_EVENT_PROPERTY_BOUND, (void*) ss_key); + eina_stringshare_del(ss_key); return 0; } diff --git a/src/lib/elementary/efl_ui_widget.c b/src/lib/elementary/efl_ui_widget.c index 2c49d0fecf..86c2db8e97 100644 --- a/src/lib/elementary/efl_ui_widget.c +++ b/src/lib/elementary/efl_ui_widget.c @@ -6069,6 +6069,7 @@ _efl_ui_widget_efl_ui_property_bind_property_bind(Eo *obj, Efl_Ui_Widget_Data *p _efl_ui_property_bind_get(pd, prop); + efl_event_callback_call(obj, EFL_UI_PROPERTY_BIND_EVENT_PROPERTY_BOUND, (void*) prop->key); return 0; } diff --git a/src/lib/elementary/efl_ui_widget_factory.c b/src/lib/elementary/efl_ui_widget_factory.c index 1059cefb4e..a04bdcbb23 100644 --- a/src/lib/elementary/efl_ui_widget_factory.c +++ b/src/lib/elementary/efl_ui_widget_factory.c @@ -115,13 +115,16 @@ _efl_ui_widget_factory_efl_ui_factory_release(Eo *obj EINA_UNUSED, efl_del(ui_view); } +Eina_Stringshare *_property_style_ss = NULL; + static Eina_Error _efl_ui_widget_factory_efl_ui_property_bind_property_bind(Eo *obj, Efl_Ui_Widget_Factory_Data *pd, const char *target, const char *property) { - if (!strcmp(target, "style")) + if (_property_style_ss == target || !strcmp(target, _property_style_ss)) { eina_stringshare_replace(&pd->style, property); + efl_event_callback_call(obj, EFL_UI_PROPERTY_BIND_EVENT_PROPERTY_BOUND, (void*) _property_style_ss); return 0; } diff --git a/src/lib/elementary/elm_main.c b/src/lib/elementary/elm_main.c index ce403942ad..50aa58c3a8 100644 --- a/src/lib/elementary/elm_main.c +++ b/src/lib/elementary/elm_main.c @@ -809,6 +809,7 @@ elm_quicklaunch_init(int argc EINA_UNUSED, } if (!_elm_data_dir) _elm_data_dir = eina_stringshare_add("/"); if (!_elm_lib_dir) _elm_lib_dir = eina_stringshare_add("/"); + if (!_property_style_ss) _property_style_ss = eina_stringshare_add("style"); eina_log_timing(_elm_log_dom, EINA_LOG_STATE_STOP, EINA_LOG_STATE_INIT); @@ -925,6 +926,7 @@ elm_quicklaunch_shutdown(void) pfx = NULL; ELM_SAFE_FREE(_elm_data_dir, eina_stringshare_del); ELM_SAFE_FREE(_elm_lib_dir, eina_stringshare_del); + ELM_SAFE_FREE(_property_style_ss, eina_stringshare_del); ELM_SAFE_FREE(_elm_appname, free); ELM_SAFE_FREE(_elm_exit_handler, ecore_event_handler_del); diff --git a/src/lib/elementary/elm_priv.h b/src/lib/elementary/elm_priv.h index 2131bd8edf..cf9b553c12 100644 --- a/src/lib/elementary/elm_priv.h +++ b/src/lib/elementary/elm_priv.h @@ -899,6 +899,8 @@ extern const char SIG_WIDGET_ACCESS_CHANGED[]; extern const char SIG_LAYOUT_FOCUSED[]; extern const char SIG_LAYOUT_UNFOCUSED[]; +extern Eina_Stringshare *_property_style_ss; + extern Eina_Bool _config_profile_lock; # ifdef HAVE_ELEMENTARY_WL2