forked from enlightenment/efl
efl_ui_collection: honor desktop vs. touch setting of elm config
with this commit we do desktop-like selection on desktop systems: - Multiselect with CTRL pressed - Normal single selection if no CTRL is pressed on touch devices this is simple on/off selection: - click to add it to multiselect - click to remote it from mutliselect ref T8057 Reviewed-by: Mike Blumenkrantz <michael.blumenkrantz@gmail.com> Reviewed-by: Cedric BAIL <cedric.bail@free.fr> Differential Revision: https://phab.enlightenment.org/D9664
This commit is contained in:
parent
fea6dc6a55
commit
634ebfeaf1
|
@ -529,6 +529,20 @@ _apply_fallback(Eo *obj EINA_UNUSED, Efl_Ui_Collection_Data *pd)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static inline void
|
||||||
|
_single_selection_behaviour(Eo *obj EINA_UNUSED, Efl_Ui_Collection_Data *pd, Efl_Ui_Selectable *new_selection)
|
||||||
|
{
|
||||||
|
//we might get the situation that the item is already in the list and selected again, so just free the list, it will be rebuild below
|
||||||
|
if (eina_list_data_get(pd->selected) == new_selection)
|
||||||
|
{
|
||||||
|
pd->selected = eina_list_free(pd->selected);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
deselect_all(pd);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
_selection_changed(void *data, const Efl_Event *ev)
|
_selection_changed(void *data, const Efl_Event *ev)
|
||||||
{
|
{
|
||||||
|
@ -546,16 +560,14 @@ _selection_changed(void *data, const Efl_Event *ev)
|
||||||
{
|
{
|
||||||
if (pd->mode == EFL_UI_SELECT_MODE_SINGLE_ALWAYS || pd->mode == EFL_UI_SELECT_MODE_SINGLE)
|
if (pd->mode == EFL_UI_SELECT_MODE_SINGLE_ALWAYS || pd->mode == EFL_UI_SELECT_MODE_SINGLE)
|
||||||
{
|
{
|
||||||
//we might get the situation that the item is already in the list and selected again, so just free the list, it will be rebuild below
|
_single_selection_behaviour(obj, pd, ev->object);
|
||||||
if (eina_list_data_get(pd->selected) == ev->object)
|
|
||||||
{
|
|
||||||
pd->selected = eina_list_free(pd->selected);
|
|
||||||
}
|
}
|
||||||
else
|
else if (pd->mode == EFL_UI_SELECT_MODE_MULTI && _elm_config->desktop_entry)
|
||||||
{
|
{
|
||||||
deselect_all(pd);
|
const Evas_Modifier *mod = evas_key_modifier_get(evas_object_evas_get(ev->object));
|
||||||
}
|
if (!(efl_input_clickable_interaction_get(ev->object)
|
||||||
|
&& evas_key_modifier_is_set(mod, "Control")))
|
||||||
|
_single_selection_behaviour(obj, pd, ev->object);
|
||||||
}
|
}
|
||||||
else if (pd->mode == EFL_UI_SELECT_MODE_NONE)
|
else if (pd->mode == EFL_UI_SELECT_MODE_NONE)
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in New Issue