Index: src/lib/elm_entry.c
===================================================================
--- src/lib/elm_entry.c	(revision 74468)
+++ src/lib/elm_entry.c	(working copy)
@@ -1149,14 +1149,6 @@ _dismissed(void *data, Evas_Object *obj __UNUSED__
    if (!wd) return;
    wd->usedown = 0;
    if (wd->hoversel) evas_object_hide(wd->hoversel);
-   if (wd->selmode)
-     {
-        if (!_elm_config->desktop_entry)
-          {
-             if (!wd->password)
-               edje_object_part_text_select_allow_set(wd->ent, "elm.text", EINA_TRUE);
-          }
-     }
    elm_widget_scroll_freeze_pop(data);
    if (wd->hovdeljob) ecore_job_del(wd->hovdeljob);
    wd->hovdeljob = ecore_job_add(_hover_del, data);
@@ -1295,13 +1287,9 @@ _copy(void *data, Evas_Object *obj __UNUSED__, voi
 {
    Widget_Data *wd = elm_widget_data_get(data);
    if (!wd) return;
-   wd->selmode = EINA_FALSE;
+   wd->selmode = EINA_TRUE;
    if (!_elm_config->desktop_entry)
-     {
-        edje_object_part_text_select_allow_set(wd->ent, "elm.text", EINA_FALSE);
-        edje_object_signal_emit(wd->ent, "elm,state,select,off", "elm");
-        elm_widget_scroll_hold_pop(data);
-     }
+     elm_widget_scroll_hold_pop(data);
    _store_selection(ELM_SEL_TYPE_CLIPBOARD, data);
    //   edje_object_part_text_select_none(wd->ent, "elm.text");
 }
@@ -1403,11 +1391,6 @@ _menu_press(Evas_Object *obj)
              evas_object_show(wd->hoversel);
              elm_hoversel_hover_begin(wd->hoversel);
           }
-        if (!_elm_config->desktop_entry)
-          {
-             edje_object_part_text_select_allow_set(wd->ent, "elm.text", EINA_FALSE);
-             edje_object_part_text_select_abort(wd->ent, "elm.text");
-          }
      }
 }
 
@@ -3096,6 +3079,7 @@ elm_entry_context_menu_disabled_set(Evas_Object *o
    if (!wd) return;
    if (wd->context_menu == !disabled) return;
    wd->context_menu = !disabled;
+   edje_object_part_text_copypaste_disabled_set(wd->ent, "elm.text", disabled);
 }
 
 EAPI Eina_Bool
