elementary/font - actually it doesnt append the font to the hash when font_hash is...
[framework/uifw/elementary.git] / src / lib / elm_gengrid.c
index 082d94f..8ee50c4 100644 (file)
@@ -27,7 +27,7 @@
 struct Elm_Gen_Item_Type
 {
    Elm_Gen_Item   *it;
-   Ecore_Animator *item_moving_effect_timer;
+   Ecore_Animator *item_reorder_move_animator;
    Evas_Coord   gx, gy, ox, oy, tx, ty, rx, ry;
    unsigned int moving_effect_start_time;
    int          prev_group;
@@ -143,7 +143,8 @@ _event_hook(Evas_Object        *obj,
    elm_smart_scroller_page_size_get(wd->scr, &page_x, &page_y);
    elm_smart_scroller_child_viewport_size_get(wd->scr, &v_w, &v_h);
 
-   if ((!strcmp(ev->keyname, "Left")) || (!strcmp(ev->keyname, "KP_Left")))
+   if ((!strcmp(ev->keyname, "Left")) ||
+       ((!strcmp(ev->keyname, "KP_Left")) && (!ev->string)))
      {
         if ((wd->horizontal) &&
             (((evas_key_modifier_is_set(ev->modifiers, "Shift")) &&
@@ -164,7 +165,8 @@ _event_hook(Evas_Object        *obj,
         else
           x -= step_x;
      }
-   else if ((!strcmp(ev->keyname, "Right")) || (!strcmp(ev->keyname, "KP_Right")))
+   else if ((!strcmp(ev->keyname, "Right")) ||
+            ((!strcmp(ev->keyname, "KP_Right")) && (!ev->string)))
      {
         if ((wd->horizontal) &&
             (((evas_key_modifier_is_set(ev->modifiers, "Shift")) &&
@@ -185,7 +187,8 @@ _event_hook(Evas_Object        *obj,
         else
           x += step_x;
      }
-   else if ((!strcmp(ev->keyname, "Up")) || (!strcmp(ev->keyname, "KP_Up")))
+   else if ((!strcmp(ev->keyname, "Up")) ||
+            ((!strcmp(ev->keyname, "KP_Up")) && (!ev->string)))
      {
         if ((wd->horizontal) &&
             (((evas_key_modifier_is_set(ev->modifiers, "Shift")) &&
@@ -206,7 +209,8 @@ _event_hook(Evas_Object        *obj,
         else
           y -= step_y;
      }
-   else if ((!strcmp(ev->keyname, "Down")) || (!strcmp(ev->keyname, "KP_Down")))
+   else if ((!strcmp(ev->keyname, "Down")) ||
+            ((!strcmp(ev->keyname, "KP_Down")) && (!ev->string)))
      {
         if ((wd->horizontal) &&
             (((evas_key_modifier_is_set(ev->modifiers, "Shift")) &&
@@ -227,7 +231,8 @@ _event_hook(Evas_Object        *obj,
         else
           y += step_y;
      }
-   else if ((!strcmp(ev->keyname, "Home")) || (!strcmp(ev->keyname, "KP_Home")))
+   else if ((!strcmp(ev->keyname, "Home")) ||
+            ((!strcmp(ev->keyname, "KP_Home")) && (!ev->string)))
      {
         it = elm_gengrid_first_item_get(obj);
         elm_gengrid_item_bring_in(it, ELM_GENGRID_ITEM_SCROLLTO_IN);
@@ -235,7 +240,8 @@ _event_hook(Evas_Object        *obj,
         ev->event_flags |= EVAS_EVENT_FLAG_ON_HOLD;
         return EINA_TRUE;
      }
-   else if ((!strcmp(ev->keyname, "End")) || (!strcmp(ev->keyname, "KP_End")))
+   else if ((!strcmp(ev->keyname, "End")) ||
+            ((!strcmp(ev->keyname, "KP_End")) && (!ev->string)))
      {
         it = elm_gengrid_last_item_get(obj);
         elm_gengrid_item_bring_in(it, ELM_GENGRID_ITEM_SCROLLTO_IN);
@@ -243,7 +249,8 @@ _event_hook(Evas_Object        *obj,
         ev->event_flags |= EVAS_EVENT_FLAG_ON_HOLD;
         return EINA_TRUE;
      }
-   else if ((!strcmp(ev->keyname, "Prior")) || (!strcmp(ev->keyname, "KP_Prior")))
+   else if ((!strcmp(ev->keyname, "Prior")) ||
+            ((!strcmp(ev->keyname, "KP_Prior")) && (!ev->string)))
      {
         if (wd->horizontal)
           {
@@ -260,7 +267,8 @@ _event_hook(Evas_Object        *obj,
                y -= page_y;
           }
      }
-   else if ((!strcmp(ev->keyname, "Next")) || (!strcmp(ev->keyname, "KP_Next")))
+   else if ((!strcmp(ev->keyname, "Next")) ||
+            ((!strcmp(ev->keyname, "KP_Next")) && (!ev->string)))
      {
         if (wd->horizontal)
           {
@@ -872,7 +880,7 @@ static void
 _item_highlight(Elm_Gen_Item *it)
 {
    if ((it->wd->select_mode == ELM_OBJECT_SELECT_MODE_NONE) ||
-       (it->wd->no_highlight) || (it->highlighted) ||
+       (!it->wd->highlight) || (it->highlighted) ||
        (it->generation < it->wd->generation)) return;
    edje_object_signal_emit(VIEW(it), "elm,state,selected", "elm");
    it->highlighted = EINA_TRUE;
@@ -926,7 +934,7 @@ _item_realize(Elm_Gen_Item *it)
                 ((void *)it->base.data, WIDGET(it), key);
              if (s)
                {
-                  edje_object_part_text_set(VIEW(it), key, s);
+                  edje_object_part_text_escaped_set(VIEW(it), key, s);
                   free(s);
                }
           }
@@ -1042,7 +1050,7 @@ _item_unrealize_cb(Elm_Gen_Item *it)
 }
 
 static Eina_Bool
-_reorder_item_moving_effect_timer_cb(void *data)
+_reorder_item_move_animator_cb(void *data)
 {
    Elm_Gen_Item *it = data;
    double tt, t;
@@ -1080,7 +1088,7 @@ _reorder_item_moving_effect_timer_cb(void *data)
         else
           evas_object_resize(VIEW(it), it->wd->item_width, it->wd->item_height);
         it->item->moving = EINA_FALSE;
-        it->item->item_moving_effect_timer = NULL;
+        it->item->item_reorder_move_animator = NULL;
         return ECORE_CALLBACK_CANCEL;
      }
 
@@ -1315,7 +1323,7 @@ _item_place(Elm_Gen_Item *it,
                                       it->item->ry = it->item->oy;
                                       it->item->moving = EINA_TRUE;
                                       it->item->moving_effect_start_time = ecore_loop_time_get();
-                                      it->item->item_moving_effect_timer = ecore_animator_add(_reorder_item_moving_effect_timer_cb, it);
+                                      it->item->item_reorder_move_animator = ecore_animator_add(_reorder_item_move_animator_cb, it);
                                       return;
                                    }
                               }
@@ -1385,10 +1393,10 @@ _item_place(Elm_Gen_Item *it,
                          }
                     }
                }
-             else if (it->item->item_moving_effect_timer)
+             else if (it->item->item_reorder_move_animator)
                {
-                  ecore_animator_del(it->item->item_moving_effect_timer);
-                  it->item->item_moving_effect_timer = NULL;
+                  ecore_animator_del(it->item->item_reorder_move_animator);
+                  it->item->item_reorder_move_animator = NULL;
                   it->item->moving = EINA_FALSE;
                }
           }
@@ -1429,7 +1437,6 @@ _item_del(Elm_Gen_Item *it)
    evas_event_freeze(evas_object_evas_get(obj));
    it->wd->selected = eina_list_remove(it->wd->selected, it);
    if (it->realized) _elm_genlist_item_unrealize(it, EINA_FALSE);
-   it->wd->item_count--;
    _elm_genlist_item_del_serious(it);
    elm_gengrid_item_class_unref((Elm_Gengrid_Item_Class *)it->itc);
    evas_event_thaw(evas_object_evas_get(obj));
@@ -1946,6 +1953,7 @@ elm_gengrid_add(Evas_Object *parent)
    wd->align_y = 0.5;
    wd->h_bounce = bounce;
    wd->v_bounce = bounce;
+   wd->highlight = EINA_TRUE;
 
    evas_object_smart_callback_add(obj, "scroll-hold-on", _hold_on, obj);
    evas_object_smart_callback_add(obj, "scroll-hold-off", _hold_off, obj);
@@ -2200,23 +2208,6 @@ elm_gengrid_item_sorted_insert(Evas_Object                  *obj,
    return (Elm_Object_Item *)it;
 }
 
-EINA_DEPRECATED Elm_Object_Item *
-elm_gengrid_item_direct_sorted_insert(Evas_Object                  *obj,
-                                      const Elm_Gengrid_Item_Class *itc,
-                                      const void                   *data,
-                                      Eina_Compare_Cb               comp,
-                                      Evas_Smart_Cb                 func,
-                                      const void                   *func_data)
-{
-   return elm_gengrid_item_sorted_insert(obj, itc, data, comp, func, func_data);
-}
-
-EAPI void
-elm_gengrid_item_del(Elm_Object_Item *it)
-{
-   elm_object_item_del(it);
-}
-
 EAPI void
 elm_gengrid_horizontal_set(Evas_Object *obj,
                            Eina_Bool    horizontal)
@@ -2267,32 +2258,12 @@ elm_gengrid_item_update(Elm_Object_Item *it)
    _item_place(_it, _it->x, _it->y);
 }
 
-EAPI void *
-elm_gengrid_item_data_get(const Elm_Object_Item *it)
-{
-   return elm_object_item_data_get(it);
-}
-
-EAPI void
-elm_gengrid_item_data_set(Elm_Object_Item  *it,
-                          const void       *data)
-{
-   elm_object_item_data_set(it, (void *) data);
-}
-
 EAPI const Elm_Gengrid_Item_Class *
 elm_gengrid_item_item_class_get(const Elm_Object_Item *it)
 {
    return (Elm_Gengrid_Item_Class *)elm_genlist_item_item_class_get(it);
 }
 
-EINA_DEPRECATED EAPI void
-elm_gengrid_item_item_class_set(Elm_Object_Item *it,
-                                const Elm_Gengrid_Item_Class *itc)
-{
-   elm_gengrid_item_item_class_update(it, itc);
-}
-
 EAPI void
 elm_gengrid_item_item_class_update(Elm_Object_Item *it,
                                    const Elm_Gengrid_Item_Class *itc)
@@ -2391,19 +2362,6 @@ elm_gengrid_realized_items_update(Evas_Object *obj)
      elm_gengrid_item_update(it);
 }
 
-EAPI void
-elm_gengrid_item_disabled_set(Elm_Object_Item  *it,
-                              Eina_Bool         disabled)
-{
-   elm_object_item_disabled_set(it, disabled);
-}
-
-EAPI Eina_Bool
-elm_gengrid_item_disabled_get(const Elm_Object_Item *it)
-{
-   return elm_object_item_disabled_get(it);
-}
-
 static Evas_Object *
 _elm_gengrid_item_label_create(void        *data,
                                Evas_Object *obj __UNUSED__,
@@ -2595,54 +2553,6 @@ elm_gengrid_reorder_mode_get(const Evas_Object *obj)
    return wd->reorder_mode;
 }
 
-EINA_DEPRECATED EAPI void
-elm_gengrid_always_select_mode_set(Evas_Object *obj,
-                                   Eina_Bool    always_select)
-{
-   if (always_select)
-     elm_genlist_select_mode_set(obj, ELM_OBJECT_SELECT_MODE_ALWAYS);
-   else
-     {
-        Elm_Object_Select_Mode oldmode = elm_genlist_select_mode_get(obj);
-        if (oldmode == ELM_OBJECT_SELECT_MODE_ALWAYS)
-          elm_genlist_select_mode_set(obj, ELM_OBJECT_SELECT_MODE_DEFAULT);
-     }
-}
-
-EINA_DEPRECATED EAPI Eina_Bool
-elm_gengrid_always_select_mode_get(const Evas_Object *obj)
-{
-   Elm_Object_Select_Mode oldmode = elm_genlist_select_mode_get(obj);
-   if (oldmode == ELM_OBJECT_SELECT_MODE_ALWAYS)
-     return EINA_TRUE;
-   else
-     return EINA_FALSE;
-}
-
-EINA_DEPRECATED EAPI void
-elm_gengrid_no_select_mode_set(Evas_Object *obj,
-                               Eina_Bool    no_select)
-{
-   if (no_select)
-     elm_genlist_select_mode_set(obj, ELM_OBJECT_SELECT_MODE_NONE);
-   else
-     {
-        Elm_Object_Select_Mode oldmode = elm_genlist_select_mode_get(obj);
-        if (oldmode == ELM_OBJECT_SELECT_MODE_NONE)
-          elm_genlist_select_mode_set(obj, ELM_OBJECT_SELECT_MODE_DEFAULT);
-     }
-}
-
-EINA_DEPRECATED EAPI Eina_Bool
-elm_gengrid_no_select_mode_get(const Evas_Object *obj)
-{
-   Elm_Object_Select_Mode oldmode = elm_genlist_select_mode_get(obj);
-   if (oldmode == ELM_OBJECT_SELECT_MODE_NONE)
-     return EINA_TRUE;
-   else
-     return EINA_FALSE;
-}
-
 EAPI void
 elm_gengrid_bounce_set(Evas_Object *obj,
                        Eina_Bool    h_bounce,
@@ -2757,12 +2667,6 @@ elm_gengrid_item_prev_get(const Elm_Object_Item *it)
    return elm_genlist_item_prev_get(it);
 }
 
-EAPI Evas_Object *
-elm_gengrid_item_gengrid_get(const Elm_Object_Item *it)
-{
-   return elm_object_item_widget_get(it);
-}
-
 EAPI void
 elm_gengrid_item_show(Elm_Object_Item *it, Elm_Gengrid_Item_Scrollto_Type type)
 {
@@ -2937,3 +2841,29 @@ elm_gengrid_item_index_get(const Elm_Object_Item *it)
 
    return _it->position;
 }
+
+EAPI void
+elm_gengrid_item_select_mode_set(Elm_Object_Item *it,
+                                 Elm_Object_Select_Mode mode)
+{
+   ELM_OBJ_ITEM_CHECK_OR_RETURN(it);
+   Elm_Gen_Item *_it = (Elm_Gen_Item *)it;
+   if (!_it) return;
+   if (_it->generation < _it->wd->generation) return;
+   if (mode >= ELM_OBJECT_SELECT_MODE_MAX)
+     return;
+   if (_it->select_mode != mode)
+     _it->select_mode = mode;
+
+   if (_it->select_mode == ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY)
+     elm_gengrid_item_update(it);
+}
+
+EAPI Elm_Object_Select_Mode
+elm_gengrid_item_select_mode_get(const Elm_Object_Item *it)
+{
+   ELM_OBJ_ITEM_CHECK_OR_RETURN(it, ELM_OBJECT_SELECT_MODE_MAX);
+   Elm_Gen_Item *_it = (Elm_Gen_Item *)it;
+   if (!_it) return ELM_OBJECT_SELECT_MODE_MAX;
+   return _it->select_mode;
+}