diff --git a/legacy/elementary/src/bin/test_entry.c b/legacy/elementary/src/bin/test_entry.c index 7f0623274a..b29a8d53cf 100644 --- a/legacy/elementary/src/bin/test_entry.c +++ b/legacy/elementary/src/bin/test_entry.c @@ -93,6 +93,7 @@ test_entry(void *data, Evas_Object *obj, void *event_info) evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL); evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0); elm_box_pack_end(bx2, bt); + elm_object_focus_allow_set(bt, 0); evas_object_show(bt); bt = elm_button_add(win); @@ -101,6 +102,7 @@ test_entry(void *data, Evas_Object *obj, void *event_info) evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL); evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0); elm_box_pack_end(bx2, bt); + elm_object_focus_allow_set(bt, 0); evas_object_show(bt); bt = elm_button_add(win); @@ -109,6 +111,8 @@ test_entry(void *data, Evas_Object *obj, void *event_info) evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL); evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0); elm_box_pack_end(bx2, bt); + elm_object_focus_allow_set(bt, 0); + printf("selection: %p\n", bt); evas_object_show(bt); bt = elm_button_add(win); @@ -117,6 +121,7 @@ test_entry(void *data, Evas_Object *obj, void *event_info) evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL); evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0); elm_box_pack_end(bx2, bt); + elm_object_focus_allow_set(bt, 0); evas_object_show(bt); elm_box_pack_end(bx, bx2); diff --git a/legacy/elementary/src/lib/elm_widget.c b/legacy/elementary/src/lib/elm_widget.c index dee7744f31..fe782bf6ff 100644 --- a/legacy/elementary/src/lib/elm_widget.c +++ b/legacy/elementary/src/lib/elm_widget.c @@ -80,8 +80,19 @@ static void _sub_obj_mouse_down(void *data, Evas *e, Evas_Object *obj, void *event_info) { Smart_Data *sd = data; - - elm_widget_focus_steal(sd->obj); + Evas_Object *o; + const char *s; + + o = obj; + do { + s = evas_object_type_get(o); + if (!s) return; + if (!strcmp(s, "elm_widget")) break; + o = evas_object_smart_parent_get(o); + } while (o); + if (!o) return; + if (!elm_widget_can_focus_get(o)) return; + elm_widget_focus_steal(o); } /* externally accessible functions */ @@ -616,7 +627,9 @@ elm_widget_focus_steal(Evas_Object *obj) parent = elm_widget_parent_get(parent); sd = evas_object_smart_data_get(parent); if (elm_widget_focus_get(sd->resize_obj)) - elm_widget_focused_object_clear(sd->resize_obj); + { + elm_widget_focused_object_clear(sd->resize_obj); + } else { const Eina_List *l;