seoz pushed a commit to branch master. http://git.enlightenment.org/core/elementary.git/commit/?id=bacd57e299fee155e6c3d1767eada0419eba2c41
commit bacd57e299fee155e6c3d1767eada0419eba2c41 Author: Daniel Juyung Seo <[email protected]> Date: Fri Aug 22 00:12:40 2014 +0900 gengrid, genlist, list, toolbar: Fixed DISPLAY_ONLY select mode for an object. DISPLAY_ONLY select mode for elm_xxx_item_select_mode_set works fine but elm_xxx_select_mode_set was broken. @fix --- src/lib/elm_gengrid.c | 15 +++++++++++---- src/lib/elm_genlist.c | 18 +++++++++++------- src/lib/elm_list.c | 6 ++++-- src/lib/elm_toolbar.c | 3 ++- 4 files changed, 28 insertions(+), 14 deletions(-) diff --git a/src/lib/elm_gengrid.c b/src/lib/elm_gengrid.c index efdb5d3..4b5a7ce 100644 --- a/src/lib/elm_gengrid.c +++ b/src/lib/elm_gengrid.c @@ -523,8 +523,11 @@ _item_highlight(Elm_Gen_Item *it) const char *selectraise = NULL; Elm_Gengrid_Data *sd = GG_IT(it)->wsd; - if ((sd->select_mode == ELM_OBJECT_SELECT_MODE_NONE) - || (!sd->highlight) || (it->highlighted) || + if ((sd->select_mode == ELM_OBJECT_SELECT_MODE_NONE) || + (sd->select_mode == ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY) || + (it->select_mode == ELM_OBJECT_SELECT_MODE_NONE) || + (it->select_mode == ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY) || + (!sd->highlight) || (it->highlighted) || (it->generation < sd->generation)) return; @@ -3409,10 +3412,14 @@ _item_select(Elm_Gen_Item *it) Evas_Object *obj = WIDGET(it); Elm_Gengrid_Data *sd = GG_IT(it)->wsd; - if ((it->generation < sd->generation) || (it->decorate_it_set) || + if ((sd->select_mode == ELM_OBJECT_SELECT_MODE_NONE) || + (sd->select_mode == ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY) || (it->select_mode == ELM_OBJECT_SELECT_MODE_NONE) || - (sd->select_mode == ELM_OBJECT_SELECT_MODE_NONE)) + (it->select_mode == ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY) || + (it->generation < sd->generation) || + (it->decorate_it_set)) return; + if (!it->selected) { it->selected = EINA_TRUE; diff --git a/src/lib/elm_genlist.c b/src/lib/elm_genlist.c index 6562704..8479aab 100644 --- a/src/lib/elm_genlist.c +++ b/src/lib/elm_genlist.c @@ -3107,12 +3107,13 @@ _item_highlight(Elm_Gen_Item *it) ELM_GENLIST_DATA_GET_FROM_ITEM(it, sd); if ((sd->select_mode == ELM_OBJECT_SELECT_MODE_NONE) || + (sd->select_mode == ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY) || + (it->select_mode == ELM_OBJECT_SELECT_MODE_NONE) || + (it->select_mode == ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY) || (!sd->highlight) || (it->generation < sd->generation) || (it->highlighted) || elm_widget_item_disabled_get(it) || - (it->select_mode == ELM_OBJECT_SELECT_MODE_NONE) || - (it->item->deco_it_view) || - (it->select_mode == ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY)) + (it->item->deco_it_view)) return; edje_object_signal_emit(VIEW(it), "elm,state,selected", "elm"); @@ -4531,7 +4532,8 @@ _item_mouse_up_cb(void *data, } } if (elm_widget_item_disabled_get(it) || (dragged) || - (it->select_mode == ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY)) + (it->select_mode == ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY) || + (sd->select_mode == ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY)) return; if (ev->event_flags & EVAS_EVENT_FLAG_ON_HOLD) return; @@ -5534,10 +5536,12 @@ _item_select(Elm_Gen_Item *it) Evas_Object *obj = WIDGET(it); ELM_GENLIST_DATA_GET_FROM_ITEM(it, sd); - if ((it->generation < sd->generation) || - (it->decorate_it_set) || + if ((sd->select_mode == ELM_OBJECT_SELECT_MODE_NONE) || + (sd->select_mode == ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY) || (it->select_mode == ELM_OBJECT_SELECT_MODE_NONE) || - (sd->select_mode == ELM_OBJECT_SELECT_MODE_NONE)) + (it->select_mode == ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY) || + (it->generation < sd->generation) || + (it->decorate_it_set)) return; if (!it->selected) diff --git a/src/lib/elm_list.c b/src/lib/elm_list.c index 455c208..6f83f8c 100644 --- a/src/lib/elm_list.c +++ b/src/lib/elm_list.c @@ -1315,8 +1315,10 @@ _item_highlight(Elm_List_Item *it) obj = WIDGET(it); ELM_LIST_DATA_GET(obj, sd); - if ((it->highlighted) || (it->base.disabled) || - (sd->select_mode == ELM_OBJECT_SELECT_MODE_NONE)) return; + if ((sd->select_mode == ELM_OBJECT_SELECT_MODE_NONE) || + (sd->select_mode == ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY) || + (it->highlighted) || (it->base.disabled)) + return; evas_object_ref(obj); _elm_list_walk(sd); diff --git a/src/lib/elm_toolbar.c b/src/lib/elm_toolbar.c index c38a40f..bb6bb6a 100644 --- a/src/lib/elm_toolbar.c +++ b/src/lib/elm_toolbar.c @@ -1026,7 +1026,8 @@ _item_select(Elm_Toolbar_Item *it) return; sel = it->selected; - if (sd->select_mode != ELM_OBJECT_SELECT_MODE_NONE) + if ((sd->select_mode != ELM_OBJECT_SELECT_MODE_NONE) && + (sd->select_mode != ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY)) { if (sel) { --
