};
static void
-_state_set(Evas_Object *obj, Eina_Bool state)
+_state_set(Evas_Object *obj, Eina_Bool state, Eina_Bool activate)
{
ELM_RADIO_DATA_GET(obj, sd);
{
sd->state = state;
if (sd->state)
- elm_layout_signal_emit(obj, "elm,state,radio,on", "elm");
+ {
+ // FIXME: to do animation during state change , we need different signal
+ // so that we can distinguish between state change by user or state change
+ // by calling state_change() api. Keep both the signal for backward compatibility
+ // and only emit "elm,state,radio,on" when activate is false when we can break ABI.
+ if (activate) elm_layout_signal_emit(obj, "elm,activate,radio,on", "elm");
+ elm_layout_signal_emit(obj, "elm,state,radio,on", "elm");
+ }
else
- elm_layout_signal_emit(obj, "elm,state,radio,off", "elm");
+ {
+ // FIXME: to do animation during state change , we need different signal
+ // so that we can distinguish between state change by user or state change
+ // by calling state_change() api. Keep both the signal for backward compatibility
+ // and only emit "elm,state,radio,off"when activate is false when we can break ABI.
+ if (activate) elm_layout_signal_emit(obj, "elm,activate,radio,off", "elm");
+ elm_layout_signal_emit(obj, "elm,state,radio,off", "elm");
+ }
if (_elm_config->atspi_mode)
{
if (sd->state)
}
static void
-_state_set_all(Elm_Radio_Data *sd)
+_state_set_all(Elm_Radio_Data *sd, Eina_Bool activate)
{
const Eina_List *l;
Eina_Bool disabled = EINA_FALSE;
if (sdc->state) selected = child;
if (sdc->value == sd->group->value)
{
- _state_set(child, EINA_TRUE);
+ _state_set(child, EINA_TRUE, activate);
if (!sdc->state) disabled = EINA_TRUE;
}
- else _state_set(child, EINA_FALSE);
+ else _state_set(child, EINA_FALSE, activate);
}
- if ((disabled) && (selected)) _state_set(selected, 1);
+ if ((disabled) && (selected)) _state_set(selected, 1, activate);
}
static void
sd->group->value = sd->value;
if (sd->group->valuep) *(sd->group->valuep) = sd->group->value;
- _state_set_all(sd);
+ _state_set_all(sd, EINA_TRUE);
if (_elm_config->access_mode)
_elm_access_say(E_("State: On"));
if (sd->state) elm_layout_signal_emit(obj, "elm,state,radio,on", "elm");
else elm_layout_signal_emit(obj, "elm,state,radio,off", "elm");
- if (sd->state) _state_set(obj, EINA_FALSE);
+ if (sd->state) _state_set(obj, EINA_FALSE, EINA_FALSE);
edje_object_message_signal_process(wd->resize_obj);
sd->group = sdg->group;
sd->group->radios = eina_list_append(sd->group->radios, obj);
}
- if (sd->value == sd->group->value) _state_set(obj, EINA_TRUE);
- else _state_set(obj, EINA_FALSE);
+ if (sd->value == sd->group->value) _state_set(obj, EINA_TRUE, EINA_FALSE);
+ else _state_set(obj, EINA_FALSE, EINA_FALSE);
}
EOLIAN static void
_elm_radio_state_value_set(Eo *obj, Elm_Radio_Data *sd, int value)
{
sd->value = value;
- if (sd->value == sd->group->value) _state_set(obj, EINA_TRUE);
- else _state_set(obj, EINA_FALSE);
+ if (sd->value == sd->group->value) _state_set(obj, EINA_TRUE, EINA_FALSE);
+ else _state_set(obj, EINA_FALSE, EINA_FALSE);
}
EOLIAN static int
if (value == sd->group->value) return;
sd->group->value = value;
if (sd->group->valuep) *(sd->group->valuep) = sd->group->value;
- _state_set_all(sd);
+ _state_set_all(sd, EINA_FALSE);
}
EOLIAN static int
if (*(sd->group->valuep) != sd->group->value)
{
sd->group->value = *(sd->group->valuep);
- _state_set_all(sd);
+ _state_set_all(sd, EINA_FALSE);
}
}
else sd->group->valuep = NULL;