summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--config/default/base.src.in1
-rw-r--r--config/mobile/base.src.in1
-rw-r--r--config/standard/base.src.in1
-rw-r--r--src/bin/test_gengrid.c17
-rw-r--r--src/bin/test_genlist.c17
-rw-r--r--src/bin/test_list.c17
-rw-r--r--src/bin/test_toolbar.c17
-rw-r--r--src/lib/elm_config.c17
-rw-r--r--src/lib/elm_config.h22
-rw-r--r--src/lib/elm_gengrid.c5
-rw-r--r--src/lib/elm_genlist.c5
-rw-r--r--src/lib/elm_list.c7
-rw-r--r--src/lib/elm_priv.h1
-rw-r--r--src/lib/elm_toolbar.c8
14 files changed, 122 insertions, 14 deletions
diff --git a/config/default/base.src.in b/config/default/base.src.in
index db264a016..cc3793efb 100644
--- a/config/default/base.src.in
+++ b/config/default/base.src.in
@@ -47,6 +47,7 @@ group "Elm_Config" struct {
value "focus_highlight_animate" uchar: 0;
value "focus_highlight_clip_disable" uchar: 0;
value "item_select_on_focus_disable" uchar: 0;
+ value "first_item_focus_on_first_focusin" uchar: 1;
value "focus_move_policy" uchar: 0;
value "toolbar_shrink_mode" int: 3;
value "fileselector_expand_enable" uchar: 0;
diff --git a/config/mobile/base.src.in b/config/mobile/base.src.in
index 58da35d27..e09332dff 100644
--- a/config/mobile/base.src.in
+++ b/config/mobile/base.src.in
@@ -47,6 +47,7 @@ group "Elm_Config" struct {
value "focus_highlight_animate" uchar: 0;
value "focus_highlight_clip_disable" uchar: 0;
value "item_select_on_focus_disable" uchar: 0;
+ value "first_item_focus_on_first_focusin" uchar: 1;
value "focus_move_policy" uchar: 0;
value "toolbar_shrink_mode" int: 3;
value "fileselector_expand_enable" uchar: 0;
diff --git a/config/standard/base.src.in b/config/standard/base.src.in
index 1f7594d87..cb2ae4612 100644
--- a/config/standard/base.src.in
+++ b/config/standard/base.src.in
@@ -47,6 +47,7 @@ group "Elm_Config" struct {
value "focus_highlight_animate" uchar: 0;
value "focus_highlight_clip_disable" uchar: 1;
value "item_select_on_focus_disable" uchar: 0;
+ value "first_item_focus_on_first_focusin" uchar: 1;
value "focus_move_policy" uchar: 0;
value "toolbar_shrink_mode" int: 3;
value "fileselector_expand_enable" uchar: 1;
diff --git a/src/bin/test_gengrid.c b/src/bin/test_gengrid.c
index ba69f37fa..71b3ba65b 100644
--- a/src/bin/test_gengrid.c
+++ b/src/bin/test_gengrid.c
@@ -1445,6 +1445,13 @@ _gg_focus_item_select_on_focus_disable_changed_cb(void *data EINA_UNUSED,
elm_config_item_select_on_focus_disabled_set(elm_check_state_get(obj));
}
+static void
+_gg_first_item_focus_on_first_focus_in_cb(void *data EINA_UNUSED, Evas_Object *obj,
+ void *event_info EINA_UNUSED)
+{
+ elm_config_first_item_focus_on_first_focusin_set(elm_check_state_get(obj));
+}
+
void
test_gengrid_focus(void *data EINA_UNUSED,
Evas_Object *obj EINA_UNUSED,
@@ -1568,6 +1575,16 @@ test_gengrid_focus(void *data EINA_UNUSED,
elm_box_pack_end(bx_opt, ck);
evas_object_show(ck);
+ ck = elm_check_add(bx_opt);
+ elm_object_text_set(ck, "First item focus on first focus in");
+ elm_check_state_set(ck, elm_config_first_item_focus_on_first_focusin_get());
+ evas_object_size_hint_weight_set(ck, EVAS_HINT_EXPAND, 0.0);
+ evas_object_smart_callback_add(ck, "changed",
+ _gg_first_item_focus_on_first_focus_in_cb,
+ NULL);
+ elm_box_pack_end(bx_opt, ck);
+ evas_object_show(ck);
+
// Focus Autoscroll Mode
fr = _focus_autoscroll_mode_frame_create(bx);
elm_box_pack_end(bx, fr);
diff --git a/src/bin/test_genlist.c b/src/bin/test_genlist.c
index bba008614..d553be566 100644
--- a/src/bin/test_genlist.c
+++ b/src/bin/test_genlist.c
@@ -4032,6 +4032,12 @@ _gl_focus_item_select_on_focus_disable_changed_cb(void *data EINA_UNUSED, Evas_O
elm_config_item_select_on_focus_disabled_set(elm_check_state_get(obj));
}
+static void
+_gl_first_item_focus_on_first_focus_in_cb(void *data EINA_UNUSED, Evas_Object *obj,
+ void *event_info EINA_UNUSED)
+{
+ elm_config_first_item_focus_on_first_focusin_set(elm_check_state_get(obj));
+}
static Eina_Bool
_focus_timer_cb(void *data)
{
@@ -4324,6 +4330,17 @@ test_genlist_focus(void *data EINA_UNUSED,
elm_box_pack_end(bx_opt, chk);
evas_object_show(chk);
+ chk = elm_check_add(bx_opt);
+ elm_object_text_set(chk, "First item focus on first focus in");
+ elm_check_state_set(chk, elm_config_first_item_focus_on_first_focusin_get());
+ evas_object_size_hint_weight_set(chk, EVAS_HINT_EXPAND, 0.0);
+ evas_object_smart_callback_add(chk, "changed",
+ _gl_first_item_focus_on_first_focus_in_cb,
+ NULL);
+ elm_box_pack_end(bx_opt, chk);
+ evas_object_show(chk);
+
+
// Focus Autoscroll Mode
fr = _focus_autoscroll_mode_frame_create(bx);
elm_box_pack_end(bx, fr);
diff --git a/src/bin/test_list.c b/src/bin/test_list.c
index be96c75f7..e6a296760 100644
--- a/src/bin/test_list.c
+++ b/src/bin/test_list.c
@@ -1327,6 +1327,13 @@ test_list_focus_item_select_on_focus_disable_changed(void *data EINA_UNUSED, Eva
}
static void
+test_list_first_item_focus_on_first_focus_in_cb(void *data EINA_UNUSED, Evas_Object *obj,
+ void *event_info EINA_UNUSED)
+{
+ elm_config_first_item_focus_on_first_focusin_set(elm_check_state_get(obj));
+}
+
+static void
_item_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info)
{
printf("%s: %p\n", (char *)data, event_info);
@@ -1534,6 +1541,16 @@ _test_list_focus(const char *name, const char *title, Eina_Bool horiz)
elm_box_pack_end(bx_opt, chk);
evas_object_show(chk);
+ chk = elm_check_add(bx_opt);
+ elm_object_text_set(chk, "First item focus on first focus in");
+ elm_check_state_set(chk, elm_config_first_item_focus_on_first_focusin_get());
+ evas_object_size_hint_weight_set(chk, EVAS_HINT_EXPAND, 0.0);
+ evas_object_smart_callback_add(chk, "changed",
+ test_list_first_item_focus_on_first_focus_in_cb,
+ NULL);
+ elm_box_pack_end(bx_opt, chk);
+ evas_object_show(chk);
+
// Focus Autoscroll Mode
fr = _focus_autoscroll_mode_frame_create(bx);
elm_box_pack_end(bx, fr);
diff --git a/src/bin/test_toolbar.c b/src/bin/test_toolbar.c
index f5359581f..11c07578e 100644
--- a/src/bin/test_toolbar.c
+++ b/src/bin/test_toolbar.c
@@ -1081,6 +1081,13 @@ _test_toolbar_focus_focus_animate_check_changed(void *data, Evas_Object *obj,
}
static void
+_test_toolbar_first_item_focus_on_first_focus_in_cb(void *data EINA_UNUSED, Evas_Object *obj,
+ void *event_info EINA_UNUSED)
+{
+ elm_config_first_item_focus_on_first_focusin_set(elm_check_state_get(obj));
+}
+
+static void
_toolbar_focus_key_down_cb(void *data EINA_UNUSED, Evas *e EINA_UNUSED,
Evas_Object *obj EINA_UNUSED, void *event_info)
{
@@ -1223,6 +1230,16 @@ test_toolbar_focus(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *e
_test_toolbar_focus_focus_animate_check_changed,
win);
+ chk = elm_check_add(bx_opt);
+ elm_object_text_set(chk, "First item focus on first focus in");
+ elm_check_state_set(chk, elm_config_first_item_focus_on_first_focusin_get());
+ evas_object_size_hint_weight_set(chk, EVAS_HINT_EXPAND, 0.0);
+ elm_box_pack_end(bx_opt, chk);
+ evas_object_show(chk);
+ evas_object_smart_callback_add(chk, "changed",
+ _test_toolbar_first_item_focus_on_first_focus_in_cb,
+ win);
+
// Focus Autoscroll Mode
fr = _focus_autoscroll_mode_frame_create(bx);
elm_box_pack_end(bx, fr);
diff --git a/src/lib/elm_config.c b/src/lib/elm_config.c
index b308928a0..96430ce50 100644
--- a/src/lib/elm_config.c
+++ b/src/lib/elm_config.c
@@ -529,6 +529,7 @@ _desc_init(void)
ELM_CONFIG_VAL(D, T, focus_move_policy, T_UCHAR);
ELM_CONFIG_VAL(D, T, focus_autoscroll_mode, T_UCHAR);
ELM_CONFIG_VAL(D, T, item_select_on_focus_disable, T_UCHAR);
+ ELM_CONFIG_VAL(D, T, first_item_focus_on_first_focus_in, T_UCHAR);
ELM_CONFIG_VAL(D, T, toolbar_shrink_mode, T_INT);
ELM_CONFIG_VAL(D, T, fileselector_expand_enable, T_UCHAR);
ELM_CONFIG_VAL(D, T, fileselector_double_tap_navigation_enable, T_UCHAR);
@@ -1546,6 +1547,7 @@ _config_load(void)
_elm_config->focus_highlight_animate = EINA_TRUE;
_elm_config->focus_highlight_clip_disable = EINA_FALSE;
_elm_config->focus_move_policy = ELM_FOCUS_MOVE_POLICY_CLICK;
+ _elm_config->first_item_focus_on_first_focus_in = EINA_FALSE;
_elm_config->item_select_on_focus_disable = EINA_TRUE;
_elm_config->toolbar_shrink_mode = 2;
_elm_config->fileselector_expand_enable = EINA_FALSE;
@@ -2166,6 +2168,9 @@ _env_get(void)
s = getenv("ELM_ITEM_SELECT_ON_FOCUS_DISABLE");
if (s) _elm_config->item_select_on_focus_disable = !!atoi(s);
+ s = getenv("ELM_FIRST_ITEM_FOCUS_ON_FIRST_FOCUS_IN");
+ if (s) _elm_config->first_item_focus_on_first_focus_in = !!atoi(s);
+
s = getenv("ELM_TOOLBAR_SHRINK_MODE");
if (s) _elm_config->toolbar_shrink_mode = atoi(s);
@@ -2736,6 +2741,18 @@ elm_config_item_select_on_focus_disabled_set(Eina_Bool disable)
}
EAPI Eina_Bool
+elm_config_first_item_focus_on_first_focusin_get(void)
+{
+ return _elm_config->first_item_focus_on_first_focus_in;
+}
+
+EAPI void
+elm_config_first_item_focus_on_first_focusin_set(Eina_Bool enable)
+{
+ _elm_config->first_item_focus_on_first_focus_in = !!enable;
+}
+
+EAPI Eina_Bool
elm_config_scroll_bounce_enabled_get(void)
{
return _elm_config->thumbscroll_bounce_enable;
diff --git a/src/lib/elm_config.h b/src/lib/elm_config.h
index 9d29f3751..7cf9a59c4 100644
--- a/src/lib/elm_config.h
+++ b/src/lib/elm_config.h
@@ -1343,6 +1343,28 @@ EAPI Eina_Bool elm_config_item_select_on_focus_disabled_get(void);
EAPI void elm_config_item_select_on_focus_disabled_set(Eina_Bool enabled);
/**
+ * Get status of first item focus on first focusin feature.
+ *
+ * @return The first item focus on first focusin status
+ *
+ * @see elm_config_first_item_focus_on_first_focusin_set
+ * @since 1.11
+ * @ingroup Focus
+ */
+EAPI Eina_Bool elm_config_first_item_focus_on_first_focusin_get(void);
+
+/**
+ * Set the first item focus on first focusin feature.
+ *
+ * @param enable first_item_focus_on_first_focusin if @c EINA_TRUE, enable otherwise
+ *
+ * @see elm_config_first_item_focus_on_first_focusin_get
+ * @since 1.11
+ * @ingroup Focus
+ */
+EAPI void elm_config_first_item_focus_on_first_focusin_set(Eina_Bool enabled);
+
+/**
* Get the system mirrored mode. This determines the default mirrored mode
* of widgets.
*
diff --git a/src/lib/elm_gengrid.c b/src/lib/elm_gengrid.c
index e4c28f996..eb94d5f03 100644
--- a/src/lib/elm_gengrid.c
+++ b/src/lib/elm_gengrid.c
@@ -2949,13 +2949,12 @@ _elm_gengrid_elm_widget_on_focus(Eo *obj, Elm_Gengrid_Data *sd)
it = sd->last_focused_item;
else if (sd->last_selected_item)
it = sd->last_selected_item;
- /* TODO: make it optional on 1.11. Disable this until then
- else if (elm_widget_focus_highlight_enabled_get(obj))
+ else if (_elm_config->first_item_focus_on_first_focus_in &&
+ elm_widget_focus_highlight_enabled_get(obj))
{
it = elm_gengrid_first_item_get(obj);
is_sel = EINA_TRUE;
}
- */
if (it)
{
diff --git a/src/lib/elm_genlist.c b/src/lib/elm_genlist.c
index cdf9456e1..7857d37d0 100644
--- a/src/lib/elm_genlist.c
+++ b/src/lib/elm_genlist.c
@@ -2932,13 +2932,12 @@ _elm_genlist_elm_widget_on_focus(Eo *obj, Elm_Genlist_Data *sd)
it = sd->last_focused_item;
else if (sd->last_selected_item)
it = sd->last_selected_item;
- /* TODO: make it optional on 1.11. Disable this until then
- else if (elm_widget_focus_highlight_enabled_get(obj))
+ else if (_elm_config->first_item_focus_on_first_focus_in &&
+ elm_widget_focus_highlight_enabled_get(obj))
{
it = elm_genlist_first_item_get(obj);
is_sel = EINA_TRUE;
}
- */
if (it)
{
diff --git a/src/lib/elm_list.c b/src/lib/elm_list.c
index 09b164945..fa9c03acd 100644
--- a/src/lib/elm_list.c
+++ b/src/lib/elm_list.c
@@ -1223,13 +1223,12 @@ _elm_list_elm_widget_on_focus(Eo *obj, Elm_List_Data *sd)
it = sd->last_focused_item;
else if (sd->last_selected_item)
it = sd->last_selected_item;
- /* TODO: make it optional on 1.11
- else if (elm_widget_focus_highlight_enabled_get(obj))
+ else if (_elm_config->first_item_focus_on_first_focus_in &&
+ elm_widget_focus_highlight_enabled_get(obj))
{
- it = eina_list_data_get(sd->items);
+ it = elm_list_first_item_get(obj);
is_sel = EINA_TRUE;
}
- */
if (it)
{
diff --git a/src/lib/elm_priv.h b/src/lib/elm_priv.h
index e84bad5ee..c8d3e97b1 100644
--- a/src/lib/elm_priv.h
+++ b/src/lib/elm_priv.h
@@ -230,6 +230,7 @@ struct _Elm_Config
unsigned char focus_highlight_clip_disable; /**< This shows disabled status of focus highlight clip feature. This value is false by default so the focus highlight is clipped. */
unsigned char focus_move_policy; /**< This show how the elementary focus is moved to another object. Focus can be moved by click or mouse_in. */
unsigned char item_select_on_focus_disable; /**< This shows the disabled status of select on focus feature. This value is false by default so that select on focus feature is enabled by default.*/
+ unsigned char first_item_focus_on_first_focus_in; /**< This sets the first item focus on first focus in feature*/
Elm_Focus_Autoscroll_Mode focus_autoscroll_mode; /**< This shows the focus auto scroll mode. By default, @c ELM_FOCUS_AUTOSCROLL_MODE_SHOW is set. */
int toolbar_shrink_mode;
unsigned char fileselector_expand_enable;
diff --git a/src/lib/elm_toolbar.c b/src/lib/elm_toolbar.c
index fdaa4e07f..546773966 100644
--- a/src/lib/elm_toolbar.c
+++ b/src/lib/elm_toolbar.c
@@ -740,10 +740,10 @@ _elm_toolbar_elm_widget_on_focus(Eo *obj, Elm_Toolbar_Data *sd)
{
if (sd->last_focused_item)
it = sd->last_focused_item;
- /* TODO: make it optional on 1.11. Disable this until then
- else
- it = (Elm_Object_Item *)ELM_TOOLBAR_ITEM_FROM_INLIST(sd->items);
- */
+ else if (_elm_config->first_item_focus_on_first_focus_in &&
+ elm_widget_focus_highlight_enabled_get(obj))
+ it = elm_toolbar_first_item_get(obj);
+
if (it)
{
it = _elm_toolbar_nearest_visible_item_get(obj, it);