seoz pushed a commit to branch master. http://git.enlightenment.org/core/elementary.git/commit/?id=4f184ee6fb8eb22a0582127923ea24d009a1752e
commit 4f184ee6fb8eb22a0582127923ea24d009a1752e Author: Daniel Juyung Seo <[email protected]> Date: Fri Aug 22 02:48:29 2014 +0900 gengrid: Fixed ELM_OBJECT_SELECT_MODE_NONE codes and added more DISPLAY_ONLY check. Also made an internal function to check it easily. @fix --- src/lib/elm_gengrid.c | 31 +++++++++++++++++-------------- src/lib/elm_widget_gengrid.h | 5 +++++ 2 files changed, 22 insertions(+), 14 deletions(-) diff --git a/src/lib/elm_gengrid.c b/src/lib/elm_gengrid.c index 566a1c0..e659ab9 100644 --- a/src/lib/elm_gengrid.c +++ b/src/lib/elm_gengrid.c @@ -40,8 +40,6 @@ EAPI const char ELM_GENGRID_SMART_NAME[] = "elm_gengrid"; EAPI const char ELM_GENGRID_PAN_SMART_NAME[] = "elm_gengrid_pan"; -#define GG_IT(_it) (_it->item) - #define ELM_PRIV_GENGRID_SIGNALS(cmd) \ cmd(SIG_ACTIVATED, "activated", "") \ cmd(SIG_CLICKED_DOUBLE, "clicked,double", "") \ @@ -106,6 +104,19 @@ static const Elm_Action key_actions[] = { {NULL, NULL} }; +static Eina_Bool +_is_no_select(Elm_Gen_Item *it) +{ + ELM_GENGRID_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)) + return EINA_TRUE; + return EINA_FALSE; +} + EOLIAN static Elm_Object_Item * _elm_gengrid_search_by_text_item_get(Eo *obj EINA_UNUSED, Elm_Gengrid_Data *sd, @@ -523,10 +534,7 @@ _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->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) || + if (_is_no_select(it) || (!sd->highlight) || (it->highlighted) || (it->generation < sd->generation)) return; @@ -1543,8 +1551,7 @@ _elm_gengrid_item_focused(Elm_Gen_Item *it) if (it->generation < sd->generation) return; - if ((sd->select_mode == ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY) || - (it->select_mode == ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY) || + if (_is_no_select(it) || (it == (Elm_Gen_Item *)sd->focused_item) || (elm_widget_item_disabled_get(it))) return; @@ -1586,8 +1593,7 @@ _elm_gengrid_item_unfocused(Elm_Gen_Item *it) if (it->generation < sd->generation) return; - if ((sd->select_mode == ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY) || - (it->select_mode == ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY)) + if (_is_no_select(it)) return; if ((!sd->focused_item) || @@ -3412,10 +3418,7 @@ _item_select(Elm_Gen_Item *it) Evas_Object *obj = WIDGET(it); Elm_Gengrid_Data *sd = GG_IT(it)->wsd; - 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) || + if (_is_no_select(it) || (it->generation < sd->generation) || (it->decorate_it_set)) return; diff --git a/src/lib/elm_widget_gengrid.h b/src/lib/elm_widget_gengrid.h index b9e9485..e8bd551 100644 --- a/src/lib/elm_widget_gengrid.h +++ b/src/lib/elm_widget_gengrid.h @@ -158,12 +158,17 @@ struct _Elm_Gengrid_Pan_Data * @} */ +#define GG_IT(_it) (_it->item) + #define ELM_GENGRID_DATA_GET(o, sd) \ Elm_Gengrid_Data * sd = eo_data_scope_get(o, ELM_GENGRID_CLASS) #define ELM_GENGRID_PAN_DATA_GET(o, sd) \ Elm_Gengrid_Pan_Data * sd = eo_data_scope_get(o, ELM_GENGRID_PAN_CLASS) +#define ELM_GENGRID_DATA_GET_FROM_ITEM(it, sd) \ + Elm_Gengrid_Data * sd = GG_IT(it)->wsd + #define ELM_GENGRID_DATA_GET_OR_RETURN(o, ptr) \ ELM_GENGRID_DATA_GET(o, ptr); \ if (EINA_UNLIKELY(!ptr)) \ --
