From bb7821ef6704a19f11745351c6157a0c008df02b Mon Sep 17 00:00:00 2001 From: Goun Lee Date: Wed, 19 Oct 2011 18:15:44 +0900 Subject: [PATCH] [elm_multibuttonentry]Keep the selected item after mbe is unfocused Change-Id: Id8caec7bfe3707cc3b23f30b902c970e52a74988 --- src/lib/elm_multibuttonentry.c | 23 ++++++++++++++++++++--- 1 file changed, 20 insertions(+), 3 deletions(-) diff --git a/src/lib/elm_multibuttonentry.c b/src/lib/elm_multibuttonentry.c index ebc2903..d798297 100644 --- a/src/lib/elm_multibuttonentry.c +++ b/src/lib/elm_multibuttonentry.c @@ -99,6 +99,7 @@ static void _entry_key_up_cb(void *data, Evas *e, Evas_Object *obj, void *event_ static void _entry_key_down_cb(void *data, Evas *e, Evas_Object *obj, void *event_info); static void _entry_focus_in_cb(void *data, Evas_Object *obj, void *event_info); static void _entry_focus_out_cb(void *data, Evas_Object *obj, void *event_info); +static void _entry_clicked_cb(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__); static void _view_init(Evas_Object *obj); static void _set_vis_guidetext(Evas_Object *obj); static void _calculate_box_min_size(Evas_Object *box, Evas_Object_Box_Data *priv); @@ -163,10 +164,10 @@ _on_focus_hook(void *data __UNUSED__, Evas_Object *obj) if (elm_widget_focus_get(obj)) { + wd->focused = EINA_TRUE; if ((imf_context) && (wd->current)) { ecore_imf_context_input_panel_show(imf_context); - evas_object_focus_set(obj, EINA_TRUE); } else if ((imf_context) && ((!wd->current) || (!eina_list_count(wd->items)))) { @@ -180,7 +181,6 @@ _on_focus_hook(void *data __UNUSED__, Evas_Object *obj) _view_update(obj); if (imf_context) ecore_imf_context_input_panel_hide(imf_context); evas_object_smart_callback_call(obj, "unfocused", NULL); - evas_object_focus_set(obj, EINA_FALSE); } } @@ -286,6 +286,7 @@ _event_init(Evas_Object *obj) evas_object_smart_callback_add(wd->entry, "changed", _entry_changed_cb, obj); evas_object_smart_callback_add(wd->entry, "focused", _entry_focus_in_cb, obj); evas_object_smart_callback_add(wd->entry, "unfocused", _entry_focus_out_cb, obj); + evas_object_smart_callback_add(wd->entry, "clicked", _entry_clicked_cb, obj); } } @@ -991,12 +992,28 @@ _entry_key_up_cb(void *data, Evas *e __UNUSED__, Evas_Object *obj __UNUSED__, vo } static void -_entry_focus_in_cb(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__) +_entry_clicked_cb(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__) { Widget_Data *wd = elm_widget_data_get(data); if (!wd) return; _change_current_button_state(data, MULTIBUTONENTRY_BUTTON_STATE_DEFAULT); + elm_object_focus(wd->entry); +} + +static void +_entry_focus_in_cb(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__) +{ + Widget_Data *wd = elm_widget_data_get(data); + Elm_Multibuttonentry_Item *item = NULL; + if (!wd) return; + + if (wd->current) + { + item = eina_list_data_get(wd->current); + elm_object_unfocus(wd->entry); + evas_object_focus_set(item->button, EINA_TRUE); + } } static void -- 2.7.4