Index: src/lib/elm_genlist.c
===================================================================
--- src/lib/elm_genlist.c	(리비전 77127)
+++ src/lib/elm_genlist.c	(작업 사본)
@@ -1946,6 +1946,27 @@ _item_block_realize(Item_Block *itb)
 }
 
 static void
+_viewport_coord_get(Elm_Genlist_Smart_Data *sd,
+                    Evas_Coord *vx,
+                    Evas_Coord *vy,
+                    Evas_Coord *vw,
+                    Evas_Coord *vh)
+{
+   Evas_Coord x, y, w, h;
+
+   EINA_SAFETY_ON_NULL_RETURN(sd);
+   sd->s_iface->content_pos_get(ELM_WIDGET_DATA(sd)->obj, &x, &y);
+   sd->s_iface->content_viewport_size_get(ELM_WIDGET_DATA(sd)->obj, &w, &h);
+
+   if (w > sd->minw) x -= ((w - sd->minw) / 2);
+   if (h > sd->minh) y -= ((h - sd->minh) / 2);
+   if (vx) *vx = x;
+   if (vy) *vy = y;
+   if (vw) *vw = w;
+   if (vh) *vh = h;
+}
+
+static void
 _elm_genlist_pan_smart_calculate(Evas_Object *obj)
 {
    Evas_Coord ox, oy, ow, oh, cvx, cvy, cvw, cvh;
@@ -2020,6 +2041,14 @@ _elm_genlist_pan_smart_calculate(Evas_Ob
        (psd->wsd->move_effect_mode == ELM_GENLIST_TREE_EFFECT_NONE))
      _item_auto_scroll(psd->wsd);
 
+   Evas_Coord vx = 0, vy = 0, vw = 0, vh = 0;
+   _viewport_coord_get(psd->wsd, &vx, &vy, &vw, &vh);
+
+   if (psd->wsd->reorder_fast == 1)
+      psd->wsd->s_iface->content_region_show(ELM_WIDGET_DATA(psd->wsd)->obj, vx, vy - 10, vw, vh);
+   else if (psd->wsd->reorder_fast == -1)
+      psd->wsd->s_iface->content_region_show(ELM_WIDGET_DATA(psd->wsd)->obj, vx, vy + 10, vw, vh);
+
    evas_event_thaw(evas_object_evas_get(obj));
    evas_event_thaw_eval(evas_object_evas_get(obj));
 }
@@ -2864,6 +2893,13 @@ _item_mouse_move_cb(void *data,
         if ((sd->reorder_mode) && (sd->reorder_it))
           {
              evas_object_geometry_get(sd->pan_obj, &ox, &oy, &ow, &oh);
+
+             if (ev->cur.canvas.y < (oy + (sd->reorder_it->item->h / 2)))
+                sd->reorder_fast = 1;
+             else if (ev->cur.canvas.y > (oy + oh - (sd->reorder_it->item->h  / 2)))
+                sd->reorder_fast = -1;
+             else sd->reorder_fast = 0;
+
              it_scrl_y = ev->cur.canvas.y - sd->reorder_it->dy;
 
              if (!sd->reorder_start_y)
@@ -3798,6 +3834,7 @@ _item_mouse_up_cb(void *data,
    if ((sd->reorder_mode) && (sd->reorder_it))
      {
         Evas_Coord it_scrl_y = ev->canvas.y - sd->reorder_it->dy;
+        sd->reorder_fast = 0;
 
         if (sd->reorder_rel &&
             (sd->reorder_it->parent == sd->reorder_rel->parent))
@@ -4622,14 +4659,14 @@ _access_obj_process(Elm_Genlist_Smart_Da
 {
    Item_Block *itb;
    Eina_Bool done = EINA_FALSE;
-   
+
    EINA_INLIST_FOREACH(sd->blocks, itb)
      {
         if (itb->realized)
           {
              Eina_List *l;
              Elm_Gen_Item *it;
-             
+
              done = EINA_TRUE;
              EINA_LIST_FOREACH(itb->items, l, it)
                {
@@ -4648,7 +4685,7 @@ _access_hook(Evas_Object *obj, Eina_Bool
 {
    ELM_GENLIST_CHECK(obj);
    ELM_GENLIST_DATA_GET(obj, sd);
-   
+
    if (is_access)
      ELM_WIDGET_CLASS(ELM_WIDGET_DATA(sd)->api)->focus_next =
      _elm_genlist_smart_focus_next;
Index: src/lib/elm_widget_genlist.h
===================================================================
--- src/lib/elm_widget_genlist.h	(리비전 77127)
+++ src/lib/elm_widget_genlist.h	(작업 사본)
@@ -282,6 +282,7 @@ struct _Elm_Genlist_Smart_Data
                                                      * selection */
 
    Eina_Bool                             swipe : 1;
+   int                                   reorder_fast;
 };
 
 typedef struct _Item_Block Item_Block;
