Index: src/lib/elm_widget_diskselector.h
===================================================================
--- src/lib/elm_widget_diskselector.h	(리비전 75586)
+++ src/lib/elm_widget_diskselector.h	(작업 사본)
@@ -151,6 +151,7 @@ struct _Elm_Diskselector_Smart_Data
    Eina_Bool                             init : 1;
    Eina_Bool                             round : 1;
    Eina_Bool                             display_item_num_by_api : 1;
+   Eina_Bool                             auto_select : 1;
 };
 
 struct _Elm_Diskselector_Item
Index: src/lib/elm_diskselector.h
===================================================================
--- src/lib/elm_diskselector.h	(리비전 75586)
+++ src/lib/elm_diskselector.h	(작업 사본)
@@ -175,6 +175,34 @@ EAPI void                   elm_diskselector_displ
 EAPI int                   elm_diskselector_display_item_num_get(const Evas_Object *obj);
 
 /**
+ * Set the auto select of the diskselector
+ *
+ * After scroll diskselector, an item which is right in the center of diskselector
+ * is selected automatically. This is default behavior of diskselector.
+ * If @p enable is @c EINA_FALSE, the automatic selection is disabled and
+ * even though item is not right in the center user can select item by clicking.
+ *
+ * @param obj The diskselector object.
+ * @param enable EINA_TRUE to enable auto select, EINA_FALSE to disable auto select.
+ * default is EINA_TRUE.
+ *
+ * @ingroup Diskselector
+ * @since 1.8
+ */
+EAPI void                  elm_diskselector_autoselect_set(Evas_Object *obj, Eina_Bool enable);
+
+/**
+ * Get the auto select of the diskselector object.
+ *
+ * @param obj The diskselector object.
+ * @return The auto select set (EINA_TRUE by default)
+ *
+ * @ingroup Diskselector
+ * @since 1.8
+ */
+EAPI Eina_Bool             elm_diskselector_autoselect_get(const Evas_Object *obj);
+
+/**
  * Set bouncing behaviour when the scrolled content reaches an edge.
  *
  * Tell the internal scroller object whether it should bounce or not
Index: src/lib/elm_diskselector.c
===================================================================
--- src/lib/elm_diskselector.c	(리비전 75586)
+++ src/lib/elm_diskselector.c	(작업 사본)
@@ -535,6 +535,7 @@ _item_click_cb(void *data,
      }
 
    if (it->func) it->func((void *)it->base.data, WIDGET(it), it);
+   evas_object_smart_callback_call(WIDGET(it), SIG_SELECTED, it);
 }
 
 static char *
@@ -614,6 +615,10 @@ _item_new(Evas_Object *obj,
         _item_content_set_hook((Elm_Object_Item *)it, "icon", icon);
      }
 
+   ELM_DISKSELECTOR_DATA_GET(obj, sd);
+   if (!sd->auto_select)
+     edje_object_signal_emit(VIEW(it), "elm,state,autoselect,disable", "elm");
+
    //XXX: ACCESS
    _elm_access_widget_item_register((Elm_Widget_Item *)it);
 
@@ -873,6 +878,8 @@ _scroll_animate_stop_cb(Evas_Object *obj,
 
    if (sd->idler) return;
 
+   if (!sd->auto_select) return;
+
    if (!sd->round)
      list = sd->items;
    else
@@ -1088,6 +1095,7 @@ _elm_diskselector_smart_add(Evas_Object *obj)
    priv->init = EINA_FALSE;
    priv->len_side = 3;
    priv->display_item_num_by_api = EINA_FALSE;
+   priv->auto_select = EINA_TRUE;
 
    _elm_diskselector_smart_theme(obj);
    priv->s_iface->policy_set
@@ -1646,3 +1654,39 @@ elm_diskselector_display_item_num_get(const Evas_O
 
    return sd->display_item_num;
 }
+
+EAPI void
+elm_diskselector_autoselect_set(Evas_Object *obj, Eina_Bool enable)
+{
+   Elm_Diskselector_Item *it;
+   Eina_List *l, *list;
+
+   ELM_DISKSELECTOR_CHECK(obj);
+   ELM_DISKSELECTOR_DATA_GET(obj, sd);
+
+   enable = !!enable;
+   if (sd->auto_select == enable) return;
+   sd->auto_select = enable;
+
+   if (!sd->round)
+     list = sd->items;
+   else
+     list = sd->r_items;
+
+   EINA_LIST_FOREACH (list, l, it)
+     {
+        if (!sd->auto_select)
+          edje_object_signal_emit(VIEW(it), "elm,state,autoselect,disable", "elm");
+        else
+          edje_object_signal_emit(VIEW(it), "elm,state,autoselect,default", "elm");
+     }
+}
+
+EAPI Eina_Bool
+elm_diskselector_autoselect_get(const Evas_Object *obj)
+{
+   ELM_DISKSELECTOR_CHECK(obj) EINA_TRUE;
+   ELM_DISKSELECTOR_DATA_GET(obj, sd);
+
+   return sd->auto_select;
+}
Index: data/themes/widgets/diskselector.edc
===================================================================
--- data/themes/widgets/diskselector.edc	(리비전 75586)
+++ data/themes/widgets/diskselector.edc	(작업 사본)
@@ -186,6 +186,17 @@ group { name: "elm/diskselector/item/default";
             text.align: 0.8 0.5;
          }
       }
+     part { name: "auto_select";
+        type: RECT;
+        mouse_events: 1;
+        repeat_events: 1;
+        description {
+           state: "default" 0.0;
+        }
+        description {
+           state: "disable" 0.0;
+        }
+     }
    }
 
    programs {
@@ -223,6 +234,29 @@ group { name: "elm/diskselector/item/default";
          action: STATE_SET "icon_only" 0.0;
          target: "elm.swallow.icon";
       }
+      program { name: "auto_select";
+         signal: "elm,state,autoselect,default";
+         source: "elm";
+         action: STATE_SET "default" 0.0;
+         target: "auto_select";
+      }
+      program { name: "auto_select_disable";
+         signal: "elm,state,autoselect,disable";
+         source: "elm";
+         action: STATE_SET "disable" 0.0;
+         target: "auto_select";
+      }
+      program { name: "item_click";
+         signal: "mouse,clicked,1";
+         source: "auto_select";
+         script {
+            new st[31];
+            new Float:vl;
+            get_state(PART:"auto_select", st, 30, vl);
+            if (!strcmp(st, "disable"))
+              emit("elm,action,click", "");
+         }
+      }
    }
 }
 
@@ -275,13 +309,15 @@ group { name: "elm/diskselector/item/datetime/defa
            text.align: 0.8 0.5;
         }
      }
-     part { name: "over1";
+     part { name: "auto_select";
         mouse_events: 1;
         repeat_events: 1;
-        ignore_flags: ON_HOLD;
         description {
            state: "default" 0.0;
         }
+        description {
+           state: "disable" 0.0;
+        }
      }
    }
    programs {
@@ -362,10 +398,28 @@ group { name: "elm/diskselector/item/datetime/defa
             update_state();
          }
       }
+      program { name: "auto_select";
+         signal: "elm,state,autoselect,default";
+         source: "elm";
+         action: STATE_SET "default" 0.0;
+         target: "auto_select";
+      }
+      program { name: "auto_select_disable";
+         signal: "elm,state,autoselect,disable";
+         source: "elm";
+         action: STATE_SET "disable" 0.0;
+         target: "auto_select";
+      }
       program { name: "field_click";
          signal: "mouse,clicked,1";
-         source: "over1";
-         action: SIGNAL_EMIT "elm,action,click" "";
+         source: "auto_select";
+         script {
+            new st[31];
+            new Float:vl;
+            get_state(PART:"auto_select", st, 30, vl);
+            if (!strcmp(st, "disable"))
+              emit("elm,action,click", "");
+         }
       }
    }
 }
