gengrid: select the focused item on enter key input
there was no way to select an item with key input on ELM_ITEM_SELECT_ON_FOCUS_DISABLE mode. this patch enables select and multi select with enter/space key input. @fix
This commit is contained in:
parent
abf1693705
commit
2fdfbd5aac
|
@ -1046,18 +1046,72 @@ group "Elm_Config" struct {
|
||||||
value "key" string: "Return";
|
value "key" string: "Return";
|
||||||
value "action" string: "select";
|
value "action" string: "select";
|
||||||
value "params" string: "";
|
value "params" string: "";
|
||||||
|
group "modifiers" list {
|
||||||
|
group "Elm_Config_Binding_Modifier" struct {
|
||||||
|
value "mod" string: "Control";
|
||||||
|
value "flag" uchar: 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
group "Elm_Config_Binding_Key" struct {
|
group "Elm_Config_Binding_Key" struct {
|
||||||
value "context" int: 0;
|
value "context" int: 0;
|
||||||
value "key" string: "KP_Enter";
|
value "key" string: "KP_Enter";
|
||||||
value "action" string: "select";
|
value "action" string: "select";
|
||||||
value "params" string: "";
|
value "params" string: "";
|
||||||
|
group "modifiers" list {
|
||||||
|
group "Elm_Config_Binding_Modifier" struct {
|
||||||
|
value "mod" string: "Control";
|
||||||
|
value "flag" uchar: 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
group "Elm_Config_Binding_Key" struct {
|
group "Elm_Config_Binding_Key" struct {
|
||||||
value "context" int: 0;
|
value "context" int: 0;
|
||||||
value "key" string: "space";
|
value "key" string: "space";
|
||||||
value "action" string: "select";
|
value "action" string: "select";
|
||||||
value "params" string: "";
|
value "params" string: "";
|
||||||
|
group "modifiers" list {
|
||||||
|
group "Elm_Config_Binding_Modifier" struct {
|
||||||
|
value "mod" string: "Control";
|
||||||
|
value "flag" uchar: 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
group "Elm_Config_Binding_Key" struct {
|
||||||
|
value "context" int: 0;
|
||||||
|
value "key" string: "Return";
|
||||||
|
value "action" string: "select";
|
||||||
|
value "params" string: "multi";
|
||||||
|
group "modifiers" list {
|
||||||
|
group "Elm_Config_Binding_Modifier" struct {
|
||||||
|
value "mod" string: "Control";
|
||||||
|
value "flag" uchar: 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
group "Elm_Config_Binding_Key" struct {
|
||||||
|
value "context" int: 0;
|
||||||
|
value "key" string: "KP_Enter";
|
||||||
|
value "action" string: "select";
|
||||||
|
value "params" string: "multi";
|
||||||
|
group "modifiers" list {
|
||||||
|
group "Elm_Config_Binding_Modifier" struct {
|
||||||
|
value "mod" string: "Control";
|
||||||
|
value "flag" uchar: 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
group "Elm_Config_Binding_Key" struct {
|
||||||
|
value "context" int: 0;
|
||||||
|
value "key" string: "space";
|
||||||
|
value "action" string: "select";
|
||||||
|
value "params" string: "multi";
|
||||||
|
group "modifiers" list {
|
||||||
|
group "Elm_Config_Binding_Modifier" struct {
|
||||||
|
value "mod" string: "Control";
|
||||||
|
value "flag" uchar: 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
group "Elm_Config_Binding_Key" struct {
|
group "Elm_Config_Binding_Key" struct {
|
||||||
value "context" int: 0;
|
value "context" int: 0;
|
||||||
|
|
|
@ -1050,18 +1050,72 @@ group "Elm_Config" struct {
|
||||||
value "key" string: "Return";
|
value "key" string: "Return";
|
||||||
value "action" string: "select";
|
value "action" string: "select";
|
||||||
value "params" string: "";
|
value "params" string: "";
|
||||||
|
group "modifiers" list {
|
||||||
|
group "Elm_Config_Binding_Modifier" struct {
|
||||||
|
value "mod" string: "Control";
|
||||||
|
value "flag" uchar: 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
group "Elm_Config_Binding_Key" struct {
|
group "Elm_Config_Binding_Key" struct {
|
||||||
value "context" int: 0;
|
value "context" int: 0;
|
||||||
value "key" string: "KP_Enter";
|
value "key" string: "KP_Enter";
|
||||||
value "action" string: "select";
|
value "action" string: "select";
|
||||||
value "params" string: "";
|
value "params" string: "";
|
||||||
|
group "modifiers" list {
|
||||||
|
group "Elm_Config_Binding_Modifier" struct {
|
||||||
|
value "mod" string: "Control";
|
||||||
|
value "flag" uchar: 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
group "Elm_Config_Binding_Key" struct {
|
group "Elm_Config_Binding_Key" struct {
|
||||||
value "context" int: 0;
|
value "context" int: 0;
|
||||||
value "key" string: "space";
|
value "key" string: "space";
|
||||||
value "action" string: "select";
|
value "action" string: "select";
|
||||||
value "params" string: "";
|
value "params" string: "";
|
||||||
|
group "modifiers" list {
|
||||||
|
group "Elm_Config_Binding_Modifier" struct {
|
||||||
|
value "mod" string: "Control";
|
||||||
|
value "flag" uchar: 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
group "Elm_Config_Binding_Key" struct {
|
||||||
|
value "context" int: 0;
|
||||||
|
value "key" string: "Return";
|
||||||
|
value "action" string: "select";
|
||||||
|
value "params" string: "multi";
|
||||||
|
group "modifiers" list {
|
||||||
|
group "Elm_Config_Binding_Modifier" struct {
|
||||||
|
value "mod" string: "Control";
|
||||||
|
value "flag" uchar: 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
group "Elm_Config_Binding_Key" struct {
|
||||||
|
value "context" int: 0;
|
||||||
|
value "key" string: "KP_Enter";
|
||||||
|
value "action" string: "multi_select";
|
||||||
|
value "params" string: "";
|
||||||
|
group "modifiers" list {
|
||||||
|
group "Elm_Config_Binding_Modifier" struct {
|
||||||
|
value "mod" string: "Control";
|
||||||
|
value "flag" uchar: 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
group "Elm_Config_Binding_Key" struct {
|
||||||
|
value "context" int: 0;
|
||||||
|
value "key" string: "space";
|
||||||
|
value "action" string: "multi_select";
|
||||||
|
value "params" string: "";
|
||||||
|
group "modifiers" list {
|
||||||
|
group "Elm_Config_Binding_Modifier" struct {
|
||||||
|
value "mod" string: "Control";
|
||||||
|
value "flag" uchar: 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
group "Elm_Config_Binding_Key" struct {
|
group "Elm_Config_Binding_Key" struct {
|
||||||
value "context" int: 0;
|
value "context" int: 0;
|
||||||
|
|
|
@ -1047,18 +1047,72 @@ group "Elm_Config" struct {
|
||||||
value "key" string: "Return";
|
value "key" string: "Return";
|
||||||
value "action" string: "select";
|
value "action" string: "select";
|
||||||
value "params" string: "";
|
value "params" string: "";
|
||||||
|
group "modifiers" list {
|
||||||
|
group "Elm_Config_Binding_Modifier" struct {
|
||||||
|
value "mod" string: "Control";
|
||||||
|
value "flag" uchar: 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
group "Elm_Config_Binding_Key" struct {
|
group "Elm_Config_Binding_Key" struct {
|
||||||
value "context" int: 0;
|
value "context" int: 0;
|
||||||
value "key" string: "KP_Enter";
|
value "key" string: "KP_Enter";
|
||||||
value "action" string: "select";
|
value "action" string: "select";
|
||||||
value "params" string: "";
|
value "params" string: "";
|
||||||
|
group "modifiers" list {
|
||||||
|
group "Elm_Config_Binding_Modifier" struct {
|
||||||
|
value "mod" string: "Control";
|
||||||
|
value "flag" uchar: 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
group "Elm_Config_Binding_Key" struct {
|
group "Elm_Config_Binding_Key" struct {
|
||||||
value "context" int: 0;
|
value "context" int: 0;
|
||||||
value "key" string: "space";
|
value "key" string: "space";
|
||||||
value "action" string: "select";
|
value "action" string: "select";
|
||||||
value "params" string: "";
|
value "params" string: "";
|
||||||
|
group "modifiers" list {
|
||||||
|
group "Elm_Config_Binding_Modifier" struct {
|
||||||
|
value "mod" string: "Control";
|
||||||
|
value "flag" uchar: 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
group "Elm_Config_Binding_Key" struct {
|
||||||
|
value "context" int: 0;
|
||||||
|
value "key" string: "Return";
|
||||||
|
value "action" string: "select";
|
||||||
|
value "params" string: "multi";
|
||||||
|
group "modifiers" list {
|
||||||
|
group "Elm_Config_Binding_Modifier" struct {
|
||||||
|
value "mod" string: "Control";
|
||||||
|
value "flag" uchar: 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
group "Elm_Config_Binding_Key" struct {
|
||||||
|
value "context" int: 0;
|
||||||
|
value "key" string: "KP_Enter";
|
||||||
|
value "action" string: "select";
|
||||||
|
value "params" string: "multi";
|
||||||
|
group "modifiers" list {
|
||||||
|
group "Elm_Config_Binding_Modifier" struct {
|
||||||
|
value "mod" string: "Control";
|
||||||
|
value "flag" uchar: 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
group "Elm_Config_Binding_Key" struct {
|
||||||
|
value "context" int: 0;
|
||||||
|
value "key" string: "space";
|
||||||
|
value "action" string: "select";
|
||||||
|
value "params" string: "multi";
|
||||||
|
group "modifiers" list {
|
||||||
|
group "Elm_Config_Binding_Modifier" struct {
|
||||||
|
value "mod" string: "Control";
|
||||||
|
value "flag" uchar: 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
group "Elm_Config_Binding_Key" struct {
|
group "Elm_Config_Binding_Key" struct {
|
||||||
value "context" int: 0;
|
value "context" int: 0;
|
||||||
|
|
|
@ -2961,19 +2961,53 @@ _key_action_move(Evas_Object *obj, const char *params)
|
||||||
}
|
}
|
||||||
|
|
||||||
static Eina_Bool
|
static Eina_Bool
|
||||||
_key_action_select(Evas_Object *obj, const char *params EINA_UNUSED)
|
_key_action_select(Evas_Object *obj, const char *params)
|
||||||
{
|
{
|
||||||
ELM_GENGRID_DATA_GET(obj, sd);
|
ELM_GENGRID_DATA_GET(obj, sd);
|
||||||
Elm_Object_Item *eo_it = NULL;
|
Elm_Object_Item *eo_it = elm_object_focused_item_get(obj);
|
||||||
|
ELM_GENGRID_ITEM_DATA_GET(eo_it, it);
|
||||||
|
|
||||||
|
if (sd->multi &&
|
||||||
|
((sd->multi_select_mode != ELM_OBJECT_MULTI_SELECT_MODE_WITH_CONTROL) ||
|
||||||
|
(!strcmp(params, "multi"))))
|
||||||
|
{
|
||||||
|
if (!it->selected)
|
||||||
|
{
|
||||||
|
it->highlight_cb(it);
|
||||||
|
it->sel_cb(it);
|
||||||
|
}
|
||||||
|
else it->unsel_cb(it);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (!it->selected)
|
||||||
|
{
|
||||||
|
while (sd->selected)
|
||||||
|
{
|
||||||
|
Elm_Object_Item *eo_sel = sd->selected->data;
|
||||||
|
Elm_Gen_Item *sel = eo_data_scope_get(eo_sel, ELM_GENGRID_ITEM_CLASS);
|
||||||
|
it->unsel_cb(sel);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
const Eina_List *l, *l_next;
|
||||||
|
Elm_Object_Item *eo_item2;
|
||||||
|
|
||||||
|
EINA_LIST_FOREACH_SAFE(sd->selected, l, l_next, eo_item2)
|
||||||
|
{
|
||||||
|
ELM_GENGRID_ITEM_DATA_GET(eo_item2, item2);
|
||||||
|
if (item2 != it) it->unsel_cb(item2);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
it->highlight_cb(it);
|
||||||
|
it->sel_cb(it);
|
||||||
|
}
|
||||||
|
|
||||||
if (!sd->multi)
|
if (!sd->multi)
|
||||||
{
|
evas_object_smart_callback_call(WIDGET(it), SIG_ACTIVATED, eo_it);
|
||||||
eo_it = elm_object_focused_item_get(obj);
|
|
||||||
ELM_GENGRID_ITEM_DATA_GET(eo_it, it);
|
return EINA_TRUE;
|
||||||
evas_object_smart_callback_call(WIDGET(it), SIG_ACTIVATED, eo_it);
|
|
||||||
return EINA_TRUE;
|
|
||||||
}
|
|
||||||
return EINA_FALSE;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static Eina_Bool
|
static Eina_Bool
|
||||||
|
@ -4941,6 +4975,7 @@ _elm_gengrid_elm_interface_atspi_widget_action_elm_actions_get(Eo *obj EINA_UNUS
|
||||||
{ "move,first", "move", "first", _key_action_move},
|
{ "move,first", "move", "first", _key_action_move},
|
||||||
{ "move,last", "move", "last", _key_action_move},
|
{ "move,last", "move", "last", _key_action_move},
|
||||||
{ "select", "select", NULL, _key_action_select},
|
{ "select", "select", NULL, _key_action_select},
|
||||||
|
{ "select,multi", "select", "multi", _key_action_select},
|
||||||
{ "escape", "escape", NULL, _key_action_escape},
|
{ "escape", "escape", NULL, _key_action_escape},
|
||||||
{ NULL, NULL, NULL, NULL }
|
{ NULL, NULL, NULL, NULL }
|
||||||
};
|
};
|
||||||
|
|
Loading…
Reference in New Issue