toolbar: Added focus movement on widget items by mouse in.
authorAmitesh Singh <amitesh.sh@samsung.com>
Tue, 1 Apr 2014 11:26:33 +0000 (20:26 +0900)
committerCarsten Haitzler (Rasterman) <raster@rasterman.com>
Tue, 1 Apr 2014 11:26:33 +0000 (20:26 +0900)
Summary:
- Added a test case in "Toolbar Focus".
@feature

Test Plan: elementary_test->Toolbar Focus

Reviewers: raster, cedric, woohyun

Reviewed By: raster

CC: seoz
Differential Revision: https://phab.enlightenment.org/D665

legacy/elementary/src/bin/test_toolbar.c
legacy/elementary/src/lib/elm_toolbar.c

index 8ce562a..1487c17 100644 (file)
@@ -1113,10 +1113,23 @@ _test_toolbar_focus_disable_item_btn_cb(void *data, Evas_Object *obj EINA_UNUSED
    elm_object_item_disabled_set(data, EINA_TRUE);
 }
 
+static void
+test_toolbar_focus_focus_move_policy_changed(void *data EINA_UNUSED,
+                                             Evas_Object *obj,
+                                             void *event_info EINA_UNUSED)
+{
+   int val = elm_radio_value_get(obj);
+
+   if (val == 0)
+     elm_config_focus_move_policy_set(ELM_FOCUS_MOVE_POLICY_CLICK);
+   else if (val == 1)
+     elm_config_focus_move_policy_set(ELM_FOCUS_MOVE_POLICY_IN);
+}
+
 void
 test_toolbar_focus(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
 {
-   Evas_Object *win, *bx, *toolbar, *fr, *btn, *bx_opt, *chk;
+   Evas_Object *win, *bx, *toolbar, *fr, *btn, *bx_opt, *chk, *bx_mv, *rd, *rdg;
    Elm_Object_Item *tb_it, *it_0, *it_3;
 
    win = elm_win_util_standard_add("toolbar-focus", "Toolbar Focus");
@@ -1199,6 +1212,40 @@ test_toolbar_focus(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *e
    evas_object_smart_callback_add(chk, "changed",
                                   _test_toolbar_focus_focus_animate_check_changed,
                                   win);
+   // Focus movement policy
+   fr = elm_frame_add(bx);
+   elm_object_text_set(fr, "Focus Movement Policy");
+   evas_object_size_hint_weight_set(fr, EVAS_HINT_EXPAND, 0.0);
+   evas_object_size_hint_align_set(fr, EVAS_HINT_FILL, EVAS_HINT_FILL);
+   elm_box_pack_end(bx, fr);
+   evas_object_show(fr);
+
+   bx_mv = elm_box_add(fr);
+   elm_box_horizontal_set(bx_mv, EINA_TRUE);
+   elm_object_content_set(fr, bx_mv);
+   evas_object_show(bx_mv);
+
+   rdg = rd = elm_radio_add(bx_mv);
+   elm_object_text_set(rd, "Focus Move by Click");
+   elm_radio_state_value_set(rd, 0);
+   evas_object_size_hint_weight_set(rd, EVAS_HINT_EXPAND, 0.0);
+   evas_object_smart_callback_add(rd, "changed",
+                                  test_toolbar_focus_focus_move_policy_changed,
+                                  NULL);
+   elm_box_pack_end(bx_mv, rd);
+   evas_object_show(rd);
+
+   rd = elm_radio_add(bx_mv);
+   elm_object_text_set(rd, "Focus Move by Mouse-In");
+   elm_radio_group_add(rd, rdg);
+   elm_radio_state_value_set(rd, 1);
+   evas_object_size_hint_weight_set(rd, EVAS_HINT_EXPAND, 0.0);
+   evas_object_smart_callback_add(rd, "changed",
+                                  test_toolbar_focus_focus_move_policy_changed,
+                                  NULL);
+   elm_box_pack_end(bx_mv, rd);
+   evas_object_show(rd);
+
    fr = elm_frame_add(bx);
    elm_object_text_set(fr, "Focus");
    evas_object_size_hint_weight_set(fr, EVAS_HINT_EXPAND, 0.0);
index ce90317..6c3fbc3 100644 (file)
@@ -2090,6 +2090,10 @@ _mouse_in_cb(void *data,
    edje_object_signal_emit(VIEW(it), "elm,state,highlighted", "elm");
    if (it->icon)
      elm_widget_signal_emit(it->icon, "elm,state,highlighted", "elm");
+
+   if (!elm_object_item_disabled_get(data) &&
+       (_elm_config->focus_move_policy == ELM_FOCUS_MOVE_POLICY_IN))
+     elm_object_item_focus_set(data, EINA_TRUE);
 }
 
 static void