seoz pushed a commit to branch master.

http://git.enlightenment.org/core/elementary.git/commit/?id=0bed2088d768717ed352d366e69b6e0600c3a7e6

commit 0bed2088d768717ed352d366e69b6e0600c3a7e6
Author: Daniel Juyung Seo <seojuyu...@gmail.com>
Date:   Fri Aug 22 02:57:57 2014 +0900

    list: 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_list.c        | 20 +++++++++++++++-----
 src/lib/elm_widget_list.h |  3 +++
 2 files changed, 18 insertions(+), 5 deletions(-)

diff --git a/src/lib/elm_list.c b/src/lib/elm_list.c
index 6f83f8c..f674729 100644
--- a/src/lib/elm_list.c
+++ b/src/lib/elm_list.c
@@ -78,6 +78,17 @@ static const Elm_Action key_actions[] = {
    {NULL, NULL}
 };
 
+static Eina_Bool
+_is_no_select(Elm_List_Item *it)
+{
+   ELM_LIST_DATA_GET_FROM_ITEM(it, sd);
+
+   if ((sd->select_mode == ELM_OBJECT_SELECT_MODE_NONE) ||
+       (sd->select_mode == ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY))
+     return EINA_TRUE;
+   return EINA_FALSE;
+}
+
 static inline void
 _elm_list_item_free(Elm_List_Item *it)
 {
@@ -1106,7 +1117,7 @@ _elm_list_item_focused(Elm_List_Item *it)
    Evas_Coord x, y, w, h, sx, sy, sw, sh;
    const char *focus_raise;
 
-   if ((!sd) || (sd->select_mode == ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY) ||
+   if ((!sd) || _is_no_select(it) ||
        (it == (Elm_List_Item *)sd->focused_item))
      return;
    evas_object_geometry_get(VIEW(it), &x, &y, &w, &h);
@@ -1148,7 +1159,7 @@ _elm_list_item_unfocused(Elm_List_Item *it)
        (it != (Elm_List_Item *)sd->focused_item))
      return;
 
-   if (sd->select_mode == ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY)
+   if (_is_no_select(it))
      return;
 
    if (elm_widget_focus_highlight_enabled_get(obj))
@@ -1315,8 +1326,7 @@ _item_highlight(Elm_List_Item *it)
    obj = WIDGET(it);
    ELM_LIST_DATA_GET(obj, sd);
 
-   if ((sd->select_mode == ELM_OBJECT_SELECT_MODE_NONE) ||
-       (sd->select_mode == ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY) ||
+   if (_is_no_select(it) ||
        (it->highlighted) || (it->base.disabled))
        return;
 
@@ -1342,7 +1352,7 @@ _item_select(Elm_List_Item *it)
    obj = WIDGET(it);
    ELM_LIST_DATA_GET(obj, sd);
 
-   if (it->base.disabled || (sd->select_mode == ELM_OBJECT_SELECT_MODE_NONE))
+   if (it->base.disabled || _is_no_select(it))
      return;
    if (!sd->focus_on_selection_enabled)
      {
diff --git a/src/lib/elm_widget_list.h b/src/lib/elm_widget_list.h
index b189bb7..79a1050 100644
--- a/src/lib/elm_widget_list.h
+++ b/src/lib/elm_widget_list.h
@@ -94,6 +94,9 @@ struct _Elm_List_Item
 #define ELM_LIST_DATA_GET(o, sd) \
   Elm_List_Data * sd = eo_data_scope_get(o, ELM_LIST_CLASS)
 
+#define ELM_LIST_DATA_GET_FROM_ITEM(it, sd) \
+  ELM_LIST_DATA_GET(WIDGET(it), sd)
+
 #define ELM_LIST_DATA_GET_OR_RETURN(o, ptr)          \
   ELM_LIST_DATA_GET(o, ptr);                         \
   if (EINA_UNLIKELY(!ptr))                           \

-- 


Reply via email to