}
EOLIAN static void
-_efl_ui_image_edje_object_signal_emit(Eo *obj EINA_UNUSED, Efl_Ui_Image_Data *sd, const char *emission, const char *source)
+_efl_ui_image_efl_canvas_layout_signal_signal_emit(Eo *obj EINA_UNUSED, Efl_Ui_Image_Data *sd, const char *emission, const char *source)
{
if (sd->edje)
edje_object_signal_emit(sd->img, emission, source);
Efl.Flipable.flip { get; set; }
Efl.Player.playable { get; }
Efl.Player.play { get; set; }
- Edje.Object.signal_emit;
+ Efl.Canvas.Layout_Signal.signal_emit;
Edje.Object.group_size_min { get; }
Edje.Object.group_size_max { get; }
Efl.Canvas.Layout_Calc.calc_size_min;
}
EOLIAN static void
-_efl_ui_text_elm_layout_signal_emit(Eo *obj EINA_UNUSED, Efl_Ui_Text_Data *sd, const char *emission, const char *source)
+_efl_ui_text_efl_canvas_layout_signal_signal_emit(Eo *obj EINA_UNUSED, Efl_Ui_Text_Data *sd, const char *emission, const char *source)
{
/* always pass to both edje objs */
- edje_object_signal_emit(sd->entry_edje, emission, source);
- edje_object_message_signal_process(sd->entry_edje);
+ efl_canvas_layout_signal_emit(sd->entry_edje, emission, source);
+
+ // FIXME: This should not be here!
+ efl_canvas_layout_signal_process(sd->entry_edje, EINA_TRUE);
if (sd->scr_edje)
{
- edje_object_signal_emit(sd->scr_edje, emission, source);
- edje_object_message_signal_process(sd->scr_edje);
+ efl_canvas_layout_signal_emit(sd->scr_edje, emission, source);
+ efl_canvas_layout_signal_process(sd->scr_edje, EINA_TRUE); // FIXME
}
}
-EOLIAN static void
-_efl_ui_text_elm_layout_signal_callback_add (Eo *obj, Efl_Ui_Text_Data *sd, const char *emission, const char *source, Edje_Signal_Cb func_cb, void *data)
+EOLIAN static Eina_Bool
+_efl_ui_text_efl_canvas_layout_signal_signal_callback_add(Eo *obj EINA_UNUSED, Efl_Ui_Text_Data *sd, const char *emission, const char *source, Edje_Signal_Cb func_cb, void *data)
{
- Evas_Object *ro;
-
- ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd);
-
- ro = wd->resize_obj;
-
- wd->resize_obj = sd->entry_edje;
-
- elm_obj_layout_signal_callback_add
- (efl_super(obj, MY_CLASS), emission, source, func_cb, data);
+ Eina_Bool ok;
+ ok = efl_canvas_layout_signal_callback_add(sd->entry_edje, emission, source, func_cb, data);
if (sd->scr_edje)
- {
- wd->resize_obj = sd->scr_edje;
+ ok = efl_canvas_layout_signal_callback_add(sd->scr_edje, emission, source, func_cb, data);
- elm_obj_layout_signal_callback_add
- (efl_super(obj, MY_CLASS), emission, source, func_cb, data);
- }
-
- wd->resize_obj = ro;
+ return ok;
}
-EOLIAN static void *
-_efl_ui_text_elm_layout_signal_callback_del(Eo *obj, Efl_Ui_Text_Data *sd, const char *emission, const char *source, Edje_Signal_Cb func_cb)
+EOLIAN static Eina_Bool
+_efl_ui_text_efl_canvas_layout_signal_signal_callback_del(Eo *obj EINA_UNUSED, Efl_Ui_Text_Data *sd, const char *emission, const char *source, Edje_Signal_Cb func_cb, void *data)
{
- Evas_Object *ro;
- void *data = NULL;
-
- ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd, NULL);
-
- ro = wd->resize_obj;
-
- wd->resize_obj = sd->entry_edje;
-
- data = elm_obj_layout_signal_callback_del
- (efl_super(obj, MY_CLASS), emission, source, func_cb);
+ Eina_Bool ok;
+ ok = efl_canvas_layout_signal_callback_del(sd->entry_edje, emission, source, func_cb, data);
if (sd->scr_edje)
- {
- wd->resize_obj = sd->scr_edje;
-
- data = elm_obj_layout_signal_callback_del
- (efl_super(obj, MY_CLASS), emission, source, func_cb);
- }
+ ok = efl_canvas_layout_signal_callback_del(sd->scr_edje, emission, source, func_cb, data);
- wd->resize_obj = ro;
- return data;
+ return ok;
}
#if 0
Efl.Gfx.position { set; }
Efl.Gfx.size { set; }
Efl.Canvas.Group.group_member_add;
+ Efl.Canvas.Layout_Signal.signal_callback_add;
+ Efl.Canvas.Layout_Signal.signal_callback_del;
+ Efl.Canvas.Layout_Signal.signal_emit;
Elm.Widget.activate;
Elm.Widget.focus_direction_manager_is;
Elm.Widget.theme_apply;
Elm.Widget.sub_object_del;
Elm.Widget.focus_next_manager_is;
Elm.Layout.sizing_eval;
- Elm.Layout.signal_callback_add;
- Elm.Layout.signal_callback_del;
- Elm.Layout.signal_emit;
Elm.Interface_Scrollable.policy { set; }
Elm.Interface_Scrollable.bounce_allow { set; }
Elm.Interface.Atspi_Accessible.state_set { get; }
}
EOLIAN static void
-_elm_naviframe_elm_layout_signal_emit(Eo *obj, Elm_Naviframe_Data *sd EINA_UNUSED, const char *emission, const char *source)
+_elm_naviframe_efl_canvas_layout_signal_signal_emit(Eo *obj, Elm_Naviframe_Data *sd EINA_UNUSED, const char *emission, const char *source)
{
Elm_Object_Item *eo_top_it;
if (!eo_top_it) return;
ELM_NAVIFRAME_ITEM_DATA_GET(eo_top_it, top_it);
- elm_obj_layout_signal_emit(VIEW(top_it), emission, source);
+ efl_canvas_layout_signal_emit(VIEW(top_it), emission, source);
}
/* content/text smart functions proxying things to the top item, which
}
EOLIAN static void
-_elm_popup_elm_layout_signal_emit(Eo *obj EINA_UNUSED, Elm_Popup_Data *sd, const char *emission, const char *source)
+_elm_popup_efl_canvas_layout_signal_signal_emit(Eo *obj EINA_UNUSED, Elm_Popup_Data *sd, const char *emission, const char *source)
{
elm_layout_signal_emit(sd->main_layout, emission, source);
}
elm_entry_end_visible_set(obj, EINA_TRUE);
if (sd->scroll)
- edje_obj_signal_emit(sd->entry_edje, "elm,scroll,enable", "elm");
+ efl_canvas_layout_signal_emit(sd->entry_edje, "elm,scroll,enable", "elm");
else
- edje_obj_signal_emit(sd->entry_edje, "elm,scroll,disable", "elm");
+ efl_canvas_layout_signal_emit(sd->entry_edje, "elm,scroll,disable", "elm");
sd->changed = EINA_TRUE;
elm_layout_sizing_eval(obj);
}
EOLIAN static void
-_elm_entry_elm_layout_signal_emit(Eo *obj EINA_UNUSED, Elm_Entry_Data *sd, const char *emission, const char *source)
+_elm_entry_efl_canvas_layout_signal_signal_emit(Eo *obj EINA_UNUSED, Elm_Entry_Data *sd, const char *emission, const char *source)
{
/* always pass to both edje objs */
edje_object_signal_emit(sd->entry_edje, emission, source);
}
}
-EOLIAN static void
-_elm_entry_elm_layout_signal_callback_add (Eo *obj, Elm_Entry_Data *sd, const char *emission, const char *source, Edje_Signal_Cb func_cb, void *data)
+EOLIAN static Eina_Bool
+_elm_entry_efl_canvas_layout_signal_signal_callback_add(Eo *obj EINA_UNUSED, Elm_Entry_Data *sd, const char *emission, const char *source, Edje_Signal_Cb func_cb, void *data)
{
- Evas_Object *ro;
-
- ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd);
+ Eina_Bool ok;
- ro = wd->resize_obj;
+ ok = efl_canvas_layout_signal_callback_add(sd->entry_edje, emission, source, func_cb, data);
+ if (sd->scr_edje)
+ ok = efl_canvas_layout_signal_callback_add(sd->scr_edje, emission, source, func_cb, data);
- wd->resize_obj = sd->entry_edje;
+ return ok;
+}
- elm_obj_layout_signal_callback_add
- (efl_super(obj, MY_CLASS), emission, source, func_cb, data);
+EOLIAN static Eina_Bool
+_elm_entry_efl_canvas_layout_signal_signal_callback_del(Eo *obj EINA_UNUSED, Elm_Entry_Data *sd, const char *emission, const char *source, Edje_Signal_Cb func_cb, void *data)
+{
+ Eina_Bool ok;
+ ok = efl_canvas_layout_signal_callback_del(sd->entry_edje, emission, source, func_cb, data);
if (sd->scr_edje)
- {
- wd->resize_obj = sd->scr_edje;
-
- elm_obj_layout_signal_callback_add
- (efl_super(obj, MY_CLASS), emission, source, func_cb, data);
- }
+ ok = efl_canvas_layout_signal_callback_del(sd->scr_edje, emission, source, func_cb, data);
- wd->resize_obj = ro;
+ return ok;
}
-EOLIAN static void *
-_elm_entry_elm_layout_signal_callback_del(Eo *obj, Elm_Entry_Data *sd, const char *emission, const char *source, Edje_Signal_Cb func_cb)
+// Legacy support... del() returns the user data.
+void
+_elm_entry_signal_callback_add_legacy(Eo *obj, const char *emission, const char *source, Edje_Signal_Cb func_cb, void *data)
{
- Evas_Object *ro;
- void *data = NULL;
+ Elm_Entry_Data *sd;
- ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd, NULL);
+ sd = efl_data_scope_safe_get(obj, MY_CLASS);
+ if (!sd) return;
- ro = wd->resize_obj;
+ _elm_layout_signal_callback_add_legacy(obj, sd->entry_edje, &sd->edje_signals,
+ emission, source, func_cb, data);
- wd->resize_obj = sd->entry_edje;
+ if (sd->scr_edje)
+ efl_canvas_layout_signal_callback_add(sd->scr_edje, emission, source, func_cb, data);
+}
- data = elm_obj_layout_signal_callback_del
- (efl_super(obj, MY_CLASS), emission, source, func_cb);
+void *
+_elm_entry_signal_callback_del_legacy(Eo *obj, const char *emission, const char *source, Edje_Signal_Cb func_cb)
+{
+ Elm_Entry_Data *sd;
+ void *data;
- if (sd->scr_edje)
- {
- wd->resize_obj = sd->scr_edje;
+ sd = efl_data_scope_safe_get(obj, MY_CLASS);
+ if (!sd) return NULL;
- data = elm_obj_layout_signal_callback_del
- (efl_super(obj, MY_CLASS), emission, source, func_cb);
- }
+ data = _elm_layout_signal_callback_del_legacy(obj, sd->entry_edje, &sd->edje_signals,
+ emission, source, func_cb);
+
+ if (sd->scr_edje)
+ efl_canvas_layout_signal_callback_del(sd->scr_edje, emission, source, func_cb, data);
- wd->resize_obj = ro;
return data;
}
Efl.Gfx.position { set; }
Efl.Gfx.size { set; }
Efl.Canvas.Group.group_member_add;
+ Efl.Canvas.Layout_Signal.signal_callback_add;
+ Efl.Canvas.Layout_Signal.signal_callback_del;
+ Efl.Canvas.Layout_Signal.signal_emit;
Elm.Widget.activate;
Elm.Widget.focus_direction_manager_is;
Elm.Widget.theme_apply;
Elm.Widget.sub_object_del;
Elm.Widget.focus_next_manager_is;
Elm.Layout.sizing_eval;
- Elm.Layout.signal_callback_add;
- Elm.Layout.signal_callback_del;
- Elm.Layout.signal_emit;
Elm.Interface_Scrollable.policy { set; }
Elm.Interface_Scrollable.bounce_allow { set; }
Elm.Interface.Atspi_Accessible.state_set { get; }
}
EOLIAN static void
-_elm_layout_signal_emit(Eo *obj, Elm_Layout_Smart_Data *_pd EINA_UNUSED, const char *emission, const char *source)
+_elm_layout_efl_canvas_layout_signal_signal_emit(Eo *obj, Elm_Layout_Smart_Data *_pd EINA_UNUSED, const char *emission, const char *source)
{
+ // Don't do anything else than call forward here
ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd);
-
- edje_object_signal_emit(wd->resize_obj, emission, source);
+ efl_canvas_layout_signal_emit(wd->resize_obj, emission, source);
}
-EOLIAN static void
-_elm_layout_signal_callback_add(Eo *obj, Elm_Layout_Smart_Data *sd, const char *emission, const char *source, Edje_Signal_Cb func_cb, void *data)
+EOLIAN static Eina_Bool
+_elm_layout_efl_canvas_layout_signal_signal_callback_add(Eo *obj, Elm_Layout_Smart_Data *_pd EINA_UNUSED, const char *emission, const char *source, Efl_Signal_Cb func, void *data)
{
- Edje_Signal_Data *esd;
-
- ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd);
-
- esd = ELM_NEW(Edje_Signal_Data);
- if (!esd) return;
-
- esd->obj = obj;
- esd->func = func_cb;
- esd->emission = eina_stringshare_add(emission);
- esd->source = eina_stringshare_add(source);
- esd->data = data;
- sd->edje_signals = eina_list_append(sd->edje_signals, esd);
-
- edje_object_signal_callback_add
- (wd->resize_obj, emission, source,
- _edje_signal_callback, esd);
+ // Don't do anything else than call forward here
+ ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd, EINA_FALSE);
+ return efl_canvas_layout_signal_callback_add(wd->resize_obj, emission, source, func, data);
}
-EOLIAN static void*
-_elm_layout_signal_callback_del(Eo *obj, Elm_Layout_Smart_Data *sd, const char *emission, const char *source, Edje_Signal_Cb func_cb)
+EOLIAN static Eina_Bool
+_elm_layout_efl_canvas_layout_signal_signal_callback_del(Eo *obj, Elm_Layout_Smart_Data *_pd EINA_UNUSED, const char *emission, const char *source, Edje_Signal_Cb func, void *data)
{
- Edje_Signal_Data *esd = NULL;
- void *data = NULL;
- Eina_List *l;
-
- ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd, NULL);
-
- EINA_LIST_FOREACH(sd->edje_signals, l, esd)
- {
- if ((esd->func == func_cb) && (!strcmp(esd->emission, emission)) &&
- (!strcmp(esd->source, source)))
- {
- sd->edje_signals = eina_list_remove_list(sd->edje_signals, l);
- eina_stringshare_del(esd->emission);
- eina_stringshare_del(esd->source);
- data = esd->data;
-
- edje_object_signal_callback_del_full
- (wd->resize_obj, emission, source,
- _edje_signal_callback, esd);
-
- free(esd);
-
- return data; /* stop at 1st match */
-
- }
- }
-
- return NULL;
+ // Don't do anything else than call forward here
+ ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd, EINA_FALSE);
+ return efl_canvas_layout_signal_callback_add(wd->resize_obj, emission, source, func, data);
}
+// TODO:
+// - message_send
+// - message_signal_process
+// and also message handler (not implemented yet as an EO interface!)
+
EAPI Eina_Bool
elm_layout_content_set(Evas_Object *obj,
const char *swallow,
return efl_canvas_layout_calc_thaw(obj);
}
+void
+_elm_layout_signal_callback_add_legacy(Eo *obj, Eo *edje, Eina_List **p_edje_signals,
+ const char *emission, const char *source,
+ Edje_Signal_Cb func, void *data)
+{
+ Edje_Signal_Data *esd;
+
+ esd = ELM_NEW(Edje_Signal_Data);
+ if (!esd) return;
+
+ esd->obj = obj;
+ esd->func = func;
+ esd->emission = eina_stringshare_add(emission);
+ esd->source = eina_stringshare_add(source);
+ esd->data = data;
+ *p_edje_signals = eina_list_append(*p_edje_signals, esd);
+
+ efl_canvas_layout_signal_callback_add(edje, emission, source,
+ _edje_signal_callback, esd);
+}
+
+EAPI void
+elm_layout_signal_callback_add(Elm_Layout *obj, const char *emission, const char *source, Edje_Signal_Cb func, void *data)
+{
+ Elm_Layout_Smart_Data *sd;
+
+ if (!emission || !source) return;
+
+ if (efl_isa(obj, ELM_ENTRY_CLASS))
+ {
+ _elm_entry_signal_callback_add_legacy(obj, emission, source, func, data);
+ return;
+ }
+
+ sd = efl_data_scope_safe_get(obj, MY_CLASS);
+ if (!sd) return;
+ ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd);
+
+ _elm_layout_signal_callback_add_legacy(obj, wd->resize_obj, &sd->edje_signals,
+ emission, source, func, data);
+}
+
+void *
+_elm_layout_signal_callback_del_legacy(Eo *obj EINA_UNUSED, Eo *edje, Eina_List **p_edje_signals,
+ const char *emission, const char *source,
+ Edje_Signal_Cb func)
+{
+ Edje_Signal_Data *esd = NULL;
+ void *data = NULL;
+ Eina_List *l;
+
+ if (!emission || !source) return NULL;
+
+ EINA_LIST_FOREACH(*p_edje_signals, l, esd)
+ {
+ if ((esd->func == func) && (!strcmp(esd->emission, emission)) &&
+ (!strcmp(esd->source, source)))
+ {
+ *p_edje_signals = eina_list_remove_list(*p_edje_signals, l);
+
+ efl_canvas_layout_signal_callback_del(edje, emission, source,
+ _edje_signal_callback, esd);
+
+ eina_stringshare_del(esd->emission);
+ eina_stringshare_del(esd->source);
+ data = esd->data;
+ free(esd);
+
+ return data; /* stop at 1st match */
+ }
+ }
+
+ return NULL;
+}
+
+EAPI void *
+elm_layout_signal_callback_del(Elm_Layout *obj, const char *emission, const char *source, Edje_Signal_Cb func)
+{
+ Elm_Layout_Smart_Data *sd;
+
+ if (!emission || !source) return NULL;
+
+ if (efl_isa(obj, ELM_ENTRY_CLASS))
+ return _elm_entry_signal_callback_del_legacy(obj, emission, source, func);
+
+ sd = efl_data_scope_safe_get(obj, MY_CLASS);
+ if (!sd) return NULL;
+ ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd, NULL);
+
+ return _elm_layout_signal_callback_del_legacy(obj, wd->resize_obj, &sd->edje_signals,
+ emission, source, func);
+}
+
+EAPI void
+elm_layout_signal_emit(Elm_Layout *obj, const char *emission, const char *source)
+{
+ efl_canvas_layout_signal_emit(obj, emission, source);
+}
+
/* End of legacy only */
class Elm.Layout (Elm.Widget, Efl.Part, Efl.Container, Efl.File,
Efl.Ui.View, Efl.Ui.Model.Connect, Efl.Ui.Model.Factory.Connect,
- Efl.Canvas.Layout_Calc)
+ Efl.Canvas.Layout_Calc, Efl.Canvas.Layout_Signal)
{
[[Elementary layout class]]
legacy_prefix: elm_layout;
@in height: bool; [[Restrict minimum size ot the current height.]]
}
}
- signal_callback_add {
- [[Add a callback for a (Edje) signal emitted by a layout widget's
- underlying Edje object.
-
- This function connects a callback function to a signal emitted by
- the underlying Edje object of $obj. Globs are accepted in either
- the emission or source strings.
- ]]
- params {
- @in emission: string; [[The signal's name string.]]
- @in source: string; [[The signal's source string.]]
- @in func: Edje.Signal_Cb; [[The callback function to be executed
- when the signal is emitted.]]
- @in data: void_ptr @optional; [[A pointer to data to pass in to the
- callback function.]]
- }
- }
data_get @const {
[[Get the edje data from the given layout.
In EDC this comes from a data block within the group block that
$obj was loaded from.
]]
- /* FIXME-doc
- @code
- collections {
- group {
- name: "a_group";
- data {
- item: "key1" "value1";
- item: "key2" "value2";
- }
- }
- }
- @endcode
- */
return: string; [[The edje data string.]]
params {
@in key: string; [[The data key.]]
}
}
- signal_callback_del {
- [[Remove a signal-triggered callback from a given layout widget.
-
- This function removes the last callback attached to a signal
- emitted by the undelying Edje object of $obj, with parameters
- $emission, $source and $func matching exactly those passed to a
- previous call to @.signal_callback_add. The data pointer that
- was passed to this call will be returned.
- ]]
- return: void_ptr; [[The data pointer of the signal callback (passed on
- @.signal_callback_add) or $null on errors.]]
- params {
- @in emission: string; [[The signal's name string.]]
- @in source: string; [[The signal's source string.]]
- @in func: Edje.Signal_Cb; [[The callback function being executed
- when the signal was emitted.]]
- }
- }
- signal_emit {
- [[Send a (Edje) signal to a given layout widget's underlying Edje
- object.
-
- This function sends a signal to the underlying Edje object of
- $obj. An Edje program on that Edje object's definition can
- respond to a signal by specifying matching 'signal' and
- 'source' fields.
- ]]
- params {
- @in emission: string; [[The signal's name string.]]
- @in source: string; [[The signal's source string.]]
- }
- }
}
implements {
class.constructor;
Efl.Canvas.Group.group_calculate;
Efl.Canvas.Layout_Calc.calc_freeze;
Efl.Canvas.Layout_Calc.calc_thaw;
+ Efl.Canvas.Layout_Signal.signal_callback_add;
+ Efl.Canvas.Layout_Signal.signal_callback_del;
+ Efl.Canvas.Layout_Signal.signal_emit;
+ //Efl.Canvas.Layout_Signal.message_send;
+ //Efl.Canvas.Layout_Signal.signal_process;
Elm.Widget.focus_direction;
Elm.Widget.sub_object_add;
Elm.Widget.theme_apply;
EAPI Evas_Object *elm_layout_add(Evas_Object *parent);
/**
+ * @brief Add a callback for a (Edje) signal emitted by a layout widget's
+ * underlying Edje object.
+ *
+ * This function connects a callback function to a signal emitted by the
+ * underlying Edje object of @c obj. Globs are accepted in either the emission
+ * or source strings.
+ *
+ * @param[in] emission The signal's name string.
+ * @param[in] source The signal's source string.
+ * @param[in] func The callback function to be executed when the signal is
+ * emitted.
+ * @param[in] data A pointer to data to pass in to the callback function.
+ *
+ * @ingroup Elm_Layout
+ */
+EAPI void elm_layout_signal_callback_add(Elm_Layout *obj, const char *emission, const char *source, Edje_Signal_Cb func, void *data);
+
+/**
+ * @brief Remove a signal-triggered callback from a given layout widget.
+ *
+ * This function removes the last callback attached to a signal emitted by the
+ * undelying Edje object of @c obj, with parameters @c emission, @c source and
+ * @c func matching exactly those passed to a previous call to
+ * @ref elm_layout_signal_callback_add. The data pointer that was passed to
+ * this call will be returned.
+ *
+ * @param[in] emission The signal's name string.
+ * @param[in] source The signal's source string.
+ * @param[in] func The callback function being executed when the signal was
+ * emitted.
+ *
+ * @return The data pointer of the signal callback (passed on
+ * @ref elm_layout_signal_callback_add) or @c null on errors.
+ *
+ * @ingroup Elm_Layout
+ */
+EAPI void *elm_layout_signal_callback_del(Elm_Layout *obj, const char *emission, const char *source, Edje_Signal_Cb func);
+
+/**
+ * @brief Send a (Edje) signal to a given layout widget's underlying Edje
+ * object.
+ *
+ * This function sends a signal to the underlying Edje object of @c obj. An
+ * Edje program on that Edje object's definition can respond to a signal by
+ * specifying matching 'signal' and 'source' fields.
+ *
+ * @param[in] emission The signal's name string.
+ * @param[in] source The signal's source string.
+ *
+ * @ingroup Elm_Layout
+ */
+EAPI void elm_layout_signal_emit(Elm_Layout *obj, const char *emission, const char *source);
+
+/**
* @brief Get the edje layout
*
* This returns the edje object. It is not expected to be used to then swallow
Elm.Widget.translate;
Elm.Widget.theme_apply;
Elm.Widget.widget_event;
- Elm.Layout.signal_emit;
+ Efl.Canvas.Layout_Signal.signal_emit;
Elm.Layout.sizing_eval;
Elm.Interface.Atspi_Widget_Action.elm_actions { get; }
Efl.Part.part;
Elm.Widget.sub_object_del;
Elm.Widget.widget_event;
Elm.Layout.sizing_eval;
- Elm.Layout.signal_emit;
+ Efl.Canvas.Layout_Signal.signal_emit;
Elm.Interface.Atspi_Widget_Action.elm_actions { get; }
Elm.Interface.Atspi_Accessible.state_set { get; }
Efl.Part.part;
double _elm_atof(const char *s);
+// elm_layout and elm_entry LEGACY signal API (returned the user data pointer)
+void _elm_layout_signal_callback_add_legacy(Eo *obj, Eo *edje, Eina_List **p_edje_signals, const char *emission, const char *source, Edje_Signal_Cb func, void *data);
+void *_elm_layout_signal_callback_del_legacy(Eo *obj, Eo *edje, Eina_List **p_edje_signals, const char *emission, const char *source, Edje_Signal_Cb func);
+void _elm_entry_signal_callback_add_legacy(Eo *obj, const char *emission, const char *source, Edje_Signal_Cb func_cb, void *data);
+void *_elm_entry_signal_callback_del_legacy(Eo *obj, const char *emission, const char *source, Edje_Signal_Cb func_cb);
+
+
/* Internal EO APIs */
const Elm_Layout_Part_Alias_Description *elm_layout_content_aliases_get(const Eo *obj);
const Elm_Layout_Part_Alias_Description *elm_layout_text_aliases_get(const Eo *obj);
Elm_Input_Hints input_hints;
Edje_Cursor sel_handler_cursor;
void *input_panel_imdata;
+ Eina_List *edje_signals;
int input_panel_imdata_len;
int input_panel_layout_variation;
int validators;
}
END_TEST
+void
+_dummy_cb(void *data EINA_UNUSED, Eo *obj EINA_UNUSED,
+ const char *sig EINA_UNUSED, const char *src EINA_UNUSED)
+{
+}
+
+START_TEST (elm_entry_signal_callback)
+{
+ Evas_Object *win, *entry;
+ void *data;
+ int k;
+
+ elm_init(1, NULL);
+ win = elm_win_add(NULL, "entry", ELM_WIN_BASIC);
+
+ entry = elm_entry_add(win);
+
+ for (k = 1; k < 10; k++)
+ {
+ int *val = malloc(sizeof(int));
+ *val = 42 * k;
+ elm_layout_signal_callback_add(entry, "sig", "src", _dummy_cb, val);
+ }
+
+ data = elm_layout_signal_callback_del(entry, "notsig", "notsrc", _dummy_cb);
+ fail_if(data);
+
+ // this test verifies that the legacy wrapper returns the proper data
+ // the eo API requires the data as input to "del()"
+ for (k = 1; k < 10; k++)
+ {
+ int *val;
+ data = elm_layout_signal_callback_del(entry, "sig", "src", _dummy_cb);
+ fail_if(!data);
+ val = (int *)data;
+ ck_assert_int_ne(*val, 0);
+ ck_assert_int_eq((*val) % 42, 0);
+ free(data);
+ }
+
+ data = elm_layout_signal_callback_del(entry, "sig", "src", _dummy_cb);
+ fail_if(data);
+
+ elm_shutdown();
+}
+END_TEST
+
START_TEST (elm_entry_atspi_text_char_get)
{
Evas_Object *win, *entry;
void elm_test_entry(TCase *tc)
{
tcase_add_test(tc, elm_entry_del);
+ tcase_add_test(tc, elm_entry_signal_callback);
tcase_add_test(tc, elm_entry_atspi_text_char_get);
tcase_add_test(tc, elm_entry_atspi_text_char_count);
tcase_add_test(tc, elm_entry_atspi_text_string_get_char);