efl_ui_check/radio: use clickable

Summary:
with this commit the state of the check / radio buttons are changes when
the Widget is clicked. The Widget is now using clickable and emits all
the events.

ref T7865

Reviewers: segfaultxavi, zmike, Jaehyun_Cho, woohyun

Reviewed By: zmike

Subscribers: cedric, #reviewers, #committers

Tags: #efl

Maniphest Tasks: T7865

Differential Revision: https://phab.enlightenment.org/D9456
This commit is contained in:
Marcel Hollerbach 2019-07-31 09:02:05 -04:00 committed by Mike Blumenkrantz
parent 79d3748557
commit 6d0f514126
6 changed files with 15 additions and 20 deletions

View File

@ -256,10 +256,7 @@ group { "efl/check";
} }
} }
programs { programs {
program { EFL_UI_CLICKABLE_PART_BIND(event)
signal: "mouse,clicked,1"; source: "event";
action: SIGNAL_EMIT "efl,action,check,toggle" "efl";
}
program { program {
signal: "efl,state,check,on"; source: "efl"; signal: "efl,state,check,on"; source: "efl";
action: STATE_SET "selected" 0.0; action: STATE_SET "selected" 0.0;
@ -774,10 +771,7 @@ group { "efl/check:toggle";
} }
} }
programs { programs {
program { EFL_UI_CLICKABLE_PART_BIND(event)
signal: "mouse,clicked,1"; source: "event";
action: SIGNAL_EMIT "efl,action,check,toggle" "efl";
}
program { program {
signal: "efl,state,check,on"; source: "efl"; signal: "efl,state,check,on"; source: "efl";
script { script {

View File

@ -222,10 +222,7 @@ group { "efl/radio";
} }
} }
programs { programs {
program { EFL_UI_CLICKABLE_PART_BIND(event)
signal: "mouse,clicked,1"; source: "event";
action: SIGNAL_EMIT "efl,action,radio,toggle" "efl";
}
program { program {
signal: "efl,state,radio,on"; source: "efl"; signal: "efl,state,radio,on"; source: "efl";
action: STATE_SET "selected" 0.0; action: STATE_SET "selected" 0.0;

View File

@ -253,6 +253,12 @@ _on_check_toggle(void *data,
_activate(data); _activate(data);
} }
static void
_clicked_cb(void *data, const Efl_Event *ev EINA_UNUSED)
{
_activate(data);
}
EOLIAN static Eina_Bool EOLIAN static Eina_Bool
_efl_ui_check_selected_get(const Eo *obj EINA_UNUSED, Efl_Ui_Check_Data *pd EINA_UNUSED) _efl_ui_check_selected_get(const Eo *obj EINA_UNUSED, Efl_Ui_Check_Data *pd EINA_UNUSED)
{ {
@ -304,7 +310,7 @@ _efl_ui_check_efl_object_constructor(Eo *obj, Efl_Ui_Check_Data *pd EINA_UNUSED)
evas_object_smart_callbacks_descriptions_set(obj, _smart_callbacks); evas_object_smart_callbacks_descriptions_set(obj, _smart_callbacks);
ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd, NULL); ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd, NULL);
efl_ui_clickable_util_bind_to_theme(wd->resize_obj, obj);
if (elm_widget_is_legacy(obj)) if (elm_widget_is_legacy(obj))
{ {
efl_layout_signal_callback_add efl_layout_signal_callback_add
@ -320,8 +326,7 @@ _efl_ui_check_efl_object_constructor(Eo *obj, Efl_Ui_Check_Data *pd EINA_UNUSED)
(wd->resize_obj, "efl,action,check,on", "*", obj, _on_check_on, NULL); (wd->resize_obj, "efl,action,check,on", "*", obj, _on_check_on, NULL);
efl_layout_signal_callback_add efl_layout_signal_callback_add
(wd->resize_obj, "efl,action,check,off", "*", obj, _on_check_off, NULL); (wd->resize_obj, "efl,action,check,off", "*", obj, _on_check_off, NULL);
efl_layout_signal_callback_add efl_event_callback_add(obj, EFL_INPUT_EVENT_CLICKED, _clicked_cb, obj);
(wd->resize_obj, "efl,action,check,toggle", "*", obj, _on_check_toggle, NULL);
} }
efl_access_object_role_set(obj, EFL_ACCESS_ROLE_CHECK_BOX); efl_access_object_role_set(obj, EFL_ACCESS_ROLE_CHECK_BOX);

View File

@ -1,4 +1,4 @@
class @beta Efl.Ui.Check extends Efl.Ui.Layout_Base implements Efl.Access.Widget.Action, Efl.Text, Efl.Content class @beta Efl.Ui.Check extends Efl.Ui.Layout_Base implements Efl.Access.Widget.Action, Efl.Text, Efl.Content, Efl.Input.Clickable
{ {
[[Check widget [[Check widget

View File

@ -218,12 +218,11 @@ _efl_ui_radio_efl_object_constructor(Eo *obj, Efl_Ui_Radio_Data *pd)
ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd, NULL); ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd, NULL);
/* in newer APIs the toggle is toggeled in check via the clickable interface */
if (elm_widget_is_legacy(obj)) if (elm_widget_is_legacy(obj))
elm_layout_signal_callback_add elm_layout_signal_callback_add
(obj, "elm,action,radio,toggle", "*", _radio_on_cb, obj); (obj, "elm,action,radio,toggle", "*", _radio_on_cb, obj);
else
elm_layout_signal_callback_add
(obj, "efl,action,radio,toggle", "*", _radio_on_cb, obj);
if (elm_widget_is_legacy(obj)) if (elm_widget_is_legacy(obj))
{ {

View File

@ -10,7 +10,7 @@
#include "elm_widget.h" #include "elm_widget.h"
/* spec-meta-start /* spec-meta-start
{"test-interface":"Efl.Ui.Clickable", {"test-interface":"Efl.Ui.Clickable",
"test-widgets": ["Efl.Ui.Button", "Efl.Ui.Image", "Efl.Ui.Panes", "Efl.Ui.Frame", "Efl.Ui.Item.Realized"] "test-widgets": ["Efl.Ui.Button", "Efl.Ui.Image", "Efl.Ui.Panes", "Efl.Ui.Frame", "Efl.Ui.Item.Realized", "Efl.Ui.Radio", "Efl.Ui.Check"]
} }
spec-meta-end spec-meta-end
*/ */