Index: src/lib/edje_util.c
===================================================================
--- src/lib/edje_util.c	(revision 74468)
+++ src/lib/edje_util.c	(working copy)
@@ -1681,6 +1681,20 @@ edje_object_part_text_user_insert(const Evas_Objec
 }
 
 EAPI void
+edje_object_part_text_copypaste_disabled_set(const Evas_Object *obj, const char *part, Eina_Bool disabled)
+{
+   Edje *ed;
+   Edje_Real_Part *rp;
+
+   ed = _edje_fetch(obj);
+   if ((!ed) || (!part)) return;
+   rp = _edje_real_part_recursive_get(ed, part);
+   if (!rp) return;
+   if (rp->part->entry_mode > EDJE_ENTRY_EDIT_MODE_NONE)
+     _edje_entry_copypaste_disabled_set(rp, disabled);
+}
+
+EAPI void
 edje_object_part_text_select_allow_set(const Evas_Object *obj, const char *part, Eina_Bool allow)
 {
    Edje *ed;
Index: src/lib/Edje.h
===================================================================
--- src/lib/Edje.h	(revision 74468)
+++ src/lib/Edje.h	(working copy)
@@ -2584,7 +2584,16 @@ EAPI void             edje_object_part_text_select
  */
 EAPI void             edje_object_part_text_select_extend           (const Evas_Object *obj, const char *part);
 
+/**
+ * @brief Disables selecting texts when an EXPLICIT mode entry is double clicked or triple clicked.
+ *
+ * @param obj A valid Evas_Object handle
+ * @param part The part name
+ * @param disabled EINA_TRUE to disable, EINA_FALSE otherwise
+ */
+EAPI void             edje_object_part_text_copypaste_disabled_set        (const Evas_Object *obj, const char *part, Eina_Bool disabled);
 
+
 /**
  * @brief Advances the cursor to the next cursor position.
  * @see evas_textblock_cursor_char_next
Index: src/lib/edje_entry.c
===================================================================
--- src/lib/edje_entry.c	(revision 74468)
+++ src/lib/edje_entry.c	(working copy)
@@ -37,6 +37,7 @@ struct _Entry
    Eina_Bool had_sel : 1;
    Eina_Bool input_panel_enable : 1;
    Eina_Bool prediction_allow : 1;
+   Eina_Bool copypaste_disabled : 1;
 
 #ifdef HAVE_ECORE_IMF
    Eina_Bool have_preedit : 1;
@@ -1681,7 +1682,7 @@ _edje_part_mouse_down_cb(void *data, Evas *e __UNU
      dosel = EINA_TRUE;
    else if (rp->part->select_mode == EDJE_ENTRY_SELECTION_MODE_EXPLICIT)
      {
-        if (en->select_allow) dosel = EINA_TRUE;
+        if (!en->copypaste_disabled) dosel = EINA_TRUE;
      }
    if (ev->button == 2) dosel = EINA_FALSE;
    if (dosel)
@@ -1691,6 +1692,8 @@ _edje_part_mouse_down_cb(void *data, Evas *e __UNU
         cy = ev->canvas.y - y;
         if (ev->flags & EVAS_BUTTON_TRIPLE_CLICK)
           {
+             if (rp->part->select_mode == EDJE_ENTRY_SELECTION_MODE_EXPLICIT)
+               en->select_allow = EINA_TRUE;
              if (shift)
                {
                   tc = evas_object_textblock_cursor_new(rp->object);
@@ -1713,10 +1716,14 @@ _edje_part_mouse_down_cb(void *data, Evas *e __UNU
                   evas_textblock_cursor_line_char_last(en->cursor);
                   _sel_extend(en->cursor, rp->object, en);
                }
+             if (rp->part->select_mode == EDJE_ENTRY_SELECTION_MODE_EXPLICIT)
+               _edje_emit(en->rp->edje, "selection,end", en->rp->part->name);
              goto end;
           }
         else if (ev->flags & EVAS_BUTTON_DOUBLE_CLICK)
           {
+             if (rp->part->select_mode == EDJE_ENTRY_SELECTION_MODE_EXPLICIT)
+               en->select_allow = EINA_TRUE;
              if (shift)
                {
                   tc = evas_object_textblock_cursor_new(rp->object);
@@ -1743,6 +1750,8 @@ _edje_part_mouse_down_cb(void *data, Evas *e __UNU
                   evas_textblock_cursor_char_next(en->cursor);
                   _sel_extend(en->cursor, rp->object, en);
                }
+             if (rp->part->select_mode == EDJE_ENTRY_SELECTION_MODE_EXPLICIT)
+               _edje_emit(en->rp->edje, "selection,end", en->rp->part->name);
              goto end;
           }
      }
@@ -1885,9 +1894,16 @@ _edje_part_mouse_up_cb(void *data, Evas *e __UNUSE
    if (ev->button != 1) return;
    if (!rp) return;
    if (ev->event_flags & EVAS_EVENT_FLAG_ON_HOLD) return;
-   if (ev->flags & EVAS_BUTTON_TRIPLE_CLICK) return;
-   if (ev->flags & EVAS_BUTTON_DOUBLE_CLICK) return;
    en = rp->entry_data;
+   if ((ev->flags & EVAS_BUTTON_TRIPLE_CLICK) || (ev->flags & EVAS_BUTTON_DOUBLE_CLICK))
+     {
+        if (rp->part->select_mode == EDJE_ENTRY_SELECTION_MODE_EXPLICIT)
+          {
+             if (en->have_selection)
+               en->had_sel = EINA_TRUE;
+          }
+        return;
+     }
    if ((!en) || (rp->part->type != EDJE_PART_TYPE_TEXTBLOCK) ||
        (rp->part->entry_mode < EDJE_ENTRY_EDIT_MODE_SELECTABLE))
      return;
@@ -2637,12 +2653,41 @@ _edje_entry_user_insert(Edje_Real_Part *rp, const
 }
 
 void
+_edje_entry_copypaste_disabled_set(Edje_Real_Part *rp, Eina_Bool disabled)
+{
+   Entry *en = rp->entry_data;
+   if (rp->part->select_mode == EDJE_ENTRY_SELECTION_MODE_DEFAULT)
+     return;
+   en->copypaste_disabled = disabled;
+}
+
+void
 _edje_entry_select_allow_set(Edje_Real_Part *rp, Eina_Bool allow)
 {
    Entry *en = rp->entry_data;
+   Evas_Textblock_Cursor *tc;
    if (rp->part->select_mode == EDJE_ENTRY_SELECTION_MODE_DEFAULT)
      return;
    en->select_allow = allow;
+
+   if ((allow) && (rp->part->select_mode == EDJE_ENTRY_SELECTION_MODE_EXPLICIT))
+     {
+        en->have_selection = EINA_FALSE;
+        en->selecting = EINA_FALSE;
+        _sel_clear(en->cursor, rp->object, en);
+        tc = evas_object_textblock_cursor_new(rp->object);
+        evas_textblock_cursor_copy(en->cursor, tc);
+        evas_textblock_cursor_word_start(en->cursor);
+        _sel_start(en->cursor, rp->object, en);
+        evas_textblock_cursor_word_end(en->cursor);
+        evas_textblock_cursor_char_next(en->cursor);
+        _sel_extend(en->cursor, rp->object, en);
+        _edje_entry_real_part_configure(rp);
+        en->had_sel = EINA_TRUE;
+
+        evas_textblock_cursor_free(tc);
+        _edje_emit(en->rp->edje, "selection,end", en->rp->part->name);
+     }
 }
 
 Eina_Bool
