Dear all.

As discomfitor suggested, I cleanup some codes.
elm_cnp_selection_set : add buffer length argument and check for image type.
(i think it's urgent issue before elm_cnp_selection_set api is widely used.)
enum defines : add 'type' prefix.

Thanks
Index: elementary/src/lib/elm_entry.c
===================================================================
--- elementary/src/lib/elm_entry.c      (리비전 66563)
+++ elementary/src/lib/elm_entry.c      (작업 사본)
@@ -1121,12 +1121,12 @@
    if (wd->sel_notify_handler)
      {
 #ifdef HAVE_ELEMENTARY_X
-        Elm_Sel_Format formats;
+        Elm_Sel_Format_Type formats;
         wd->selection_asked = EINA_TRUE;
-        formats = ELM_SEL_FORMAT_MARKUP;
+        formats = ELM_SEL_FORMAT_TYPE_MARKUP;
         if (!wd->textonly)
-          formats |= ELM_SEL_FORMAT_IMAGE;
-        elm_cnp_selection_get(ELM_SEL_CLIPBOARD, formats, data, NULL, NULL);
+          formats |= ELM_SEL_FORMAT_TYPE_IMAGE;
+        elm_cnp_selection_get(ELM_SEL_TYPE_CLIPBOARD, formats, data, NULL, 
NULL);
 #endif
      }
 }
@@ -1140,8 +1140,8 @@
    if (!wd) return;
    sel = edje_object_part_text_selection_get(wd->ent, "elm.text");
    if ((!sel) || (!sel[0])) return; /* avoid deleting our own selection */
-   elm_cnp_selection_set(seltype, obj, ELM_SEL_FORMAT_MARKUP, sel);
-   if (seltype == ELM_SEL_CLIPBOARD)
+   elm_cnp_selection_set(seltype, obj, ELM_SEL_FORMAT_TYPE_MARKUP, sel, 
strlen(sel));
+   if (seltype == ELM_SEL_TYPE_CLIPBOARD)
      eina_stringshare_replace(&wd->cut_sel, sel);
 }
 
@@ -1157,7 +1157,7 @@
    edje_object_signal_emit(wd->ent, "elm,state,select,off", "elm");
    if (!_elm_config->desktop_entry)
      elm_widget_scroll_hold_pop(data);
-   _store_selection(ELM_SEL_CLIPBOARD, data);
+   _store_selection(ELM_SEL_TYPE_CLIPBOARD, data);
    edje_object_part_text_insert(wd->ent, "elm.text", "");
    edje_object_part_text_select_none(wd->ent, "elm.text");
    _sizing_eval(data);
@@ -1175,7 +1175,7 @@
         edje_object_signal_emit(wd->ent, "elm,state,select,off", "elm");
         elm_widget_scroll_hold_pop(data);
      }
-   _store_selection(ELM_SEL_CLIPBOARD, data);
+   _store_selection(ELM_SEL_TYPE_CLIPBOARD, data);
    //   edje_object_part_text_select_none(wd->ent, "elm.text");
 }
 
@@ -1531,7 +1531,8 @@
 
         top = elm_widget_top_get(data);
         if ((top) && (elm_win_xwindow_get(top)))
-          elm_cnp_selection_set(ELM_SEL_PRIMARY, data, ELM_SEL_FORMAT_MARKUP, 
txt);
+          elm_cnp_selection_set(ELM_SEL_TYPE_PRIMARY, data,
+                                ELM_SEL_FORMAT_TYPE_MARKUP, txt, strlen(txt));
      }
 #endif
 }
@@ -1559,7 +1560,7 @@
    if (!wd) return;
    wd->have_selection = EINA_TRUE;
    evas_object_smart_callback_call(data, SIG_SELECTION_CHANGED, NULL);
-   _store_selection(ELM_SEL_PRIMARY, data);
+   _store_selection(ELM_SEL_TYPE_PRIMARY, data);
 }
 
 static void
@@ -1579,8 +1580,9 @@
 
              top = elm_widget_top_get(data);
              if ((top) && (elm_win_xwindow_get(top)))
-               elm_cnp_selection_set(ELM_SEL_PRIMARY, data, 
ELM_SEL_FORMAT_MARKUP,
-                                 wd->cut_sel);
+               elm_cnp_selection_set(ELM_SEL_TYPE_PRIMARY, data,
+                                     ELM_SEL_FORMAT_TYPE_MARKUP, wd->cut_sel,
+                                     strlen(wd->cut_sel));
 #endif
              eina_stringshare_del(wd->cut_sel);
              wd->cut_sel = NULL;
@@ -1592,7 +1594,7 @@
 
              top = elm_widget_top_get(data);
              if ((top) && (elm_win_xwindow_get(top)))
-               elm_cnp_selection_clear(ELM_SEL_PRIMARY, data);
+               elm_cnp_selection_clear(ELM_SEL_TYPE_PRIMARY, data);
 #endif
           }
      }
@@ -1602,7 +1604,8 @@
 _signal_entry_paste_request(void *data, Evas_Object *obj __UNUSED__, const 
char *emission, const char *source __UNUSED__)
 {
    Widget_Data *wd = elm_widget_data_get(data);
-   Elm_Sel_Type type = (emission[sizeof("ntry,paste,request,")] == '1') ? 
ELM_SEL_PRIMARY : ELM_SEL_CLIPBOARD;
+   Elm_Sel_Type type = (emission[sizeof("ntry,paste,request,")] == '1') ?
+     ELM_SEL_TYPE_PRIMARY : ELM_SEL_TYPE_CLIPBOARD;
    if (!wd) return;
    evas_object_smart_callback_call(data, SIG_SELECTION_PASTE, NULL);
    if (wd->sel_notify_handler)
@@ -1614,7 +1617,7 @@
         if ((top) && (elm_win_xwindow_get(top)))
           {
              wd->selection_asked = EINA_TRUE;
-             elm_cnp_selection_get(type, ELM_SEL_FORMAT_MARKUP, data,
+             elm_cnp_selection_get(type, ELM_SEL_FORMAT_TYPE_MARKUP, data,
                                NULL, NULL);
           }
 #endif
@@ -2346,7 +2349,7 @@
                                    _event_selection_clear, obj);
      }
 
-   elm_drop_target_add(obj, ELM_SEL_FORMAT_MARKUP | ELM_SEL_FORMAT_IMAGE,
+   elm_drop_target_add(obj, ELM_SEL_FORMAT_TYPE_MARKUP | 
ELM_SEL_FORMAT_TYPE_IMAGE,
                        _drag_drop_cb, NULL);
 #endif
 
@@ -2441,7 +2444,7 @@
    else
      {
 #ifdef HAVE_ELEMENTARY_X
-        elm_drop_target_add(obj, ELM_SEL_FORMAT_MARKUP, _drag_drop_cb, NULL);
+        elm_drop_target_add(obj, ELM_SEL_FORMAT_TYPE_MARKUP, _drag_drop_cb, 
NULL);
 #endif
         edje_object_signal_callback_add(wd->ent, "selection,start", "elm.text",
                                         _signal_selection_start, obj);
@@ -2615,7 +2618,7 @@
 
 #ifdef HAVE_ELEMENTARY_X
    if (editable)
-     elm_drop_target_add(obj, ELM_SEL_FORMAT_MARKUP, _drag_drop_cb, NULL);
+     elm_drop_target_add(obj, ELM_SEL_FORMAT_TYPE_MARKUP, _drag_drop_cb, NULL);
    else
      elm_drop_target_del(obj);
 #endif
@@ -3198,14 +3201,14 @@
 EAPI void
 elm_entry_cnp_textonly_set(Evas_Object *obj, Eina_Bool textonly)
 {
-   Elm_Sel_Format format = ELM_SEL_FORMAT_MARKUP;
+   Elm_Sel_Format_Type format = ELM_SEL_FORMAT_TYPE_MARKUP;
    ELM_CHECK_WIDTYPE(obj, widtype);
    Widget_Data *wd = elm_widget_data_get(obj);
    if (!wd) return;
    textonly = !!textonly;
    if (wd->textonly == textonly) return;
    wd->textonly = !!textonly;
-   if (!textonly) format |= ELM_SEL_FORMAT_IMAGE;
+   if (!textonly) format |= ELM_SEL_FORMAT_TYPE_IMAGE;
 #ifdef HAVE_ELEMENTARY_X
    elm_drop_target_add(obj, format, _drag_drop_cb, NULL);
 #endif
Index: elementary/src/lib/elm_widget.h
===================================================================
--- elementary/src/lib/elm_widget.h     (리비전 66563)
+++ elementary/src/lib/elm_widget.h     (작업 사본)
@@ -714,6 +714,6 @@
 Eina_Bool            elm_selection_selection_has_owner(void);
 Eina_Bool            elm_drop_target_add(Evas_Object *widget, Elm_Sel_Type, 
Elm_Drop_Cb, void *);
 Eina_Bool            elm_drop_target_del(Evas_Object *widget);
-Eina_Bool            elm_drag_start(Evas_Object *, Elm_Sel_Format, const char 
*, void (*)(void *,Evas_Object*),void*);
+Eina_Bool            elm_drag_start(Evas_Object *, Elm_Sel_Format_Type, const 
char *, void (*)(void *,Evas_Object*),void*);
 
 #endif
Index: elementary/src/lib/elm_photo.c
===================================================================
--- elementary/src/lib/elm_photo.c      (리비전 66563)
+++ elementary/src/lib/elm_photo.c      (작업 사본)
@@ -189,7 +189,8 @@
         /* FIXME: Deal with relative paths */
         buf = malloc(strlen(file) + strlen("file://") + 1);
         sprintf(buf, "%s%s","file://",file);
-        elm_drag_start(objv, ELM_SEL_FORMAT_IMAGE, buf, _drag_done_cb, NULL);
+        elm_drag_start(objv, ELM_SEL_FORMAT_TYPE_IMAGE,
+                       buf, _drag_done_cb, NULL);
         free(buf);
      }
    elm_object_scroll_freeze_push(objv);
Index: elementary/src/lib/elm_cnp_helper.c
===================================================================
--- elementary/src/lib/elm_cnp_helper.c (리비전 66563)
+++ elementary/src/lib/elm_cnp_helper.c (작업 사본)
@@ -62,19 +62,19 @@
 
 struct _Cnp_Selection
 {
-   const char      *debug;
-   Evas_Object     *widget;
-   char            *selbuf;
-   Evas_Object     *requestwidget;
-   void            *udata;
-   Elm_Sel_Format   requestformat;
-   Elm_Drop_Cb      datacb;
+   const char          *debug;
+   Evas_Object         *widget;
+   char                *selbuf;
+   Evas_Object         *requestwidget;
+   void                *udata;
+   Elm_Sel_Format_Type  requestformat;
+   Elm_Drop_Cb          datacb;
    Eina_Bool      (*set)     (Ecore_X_Window, const void *data, int size);
    Eina_Bool      (*clear)   (void);
    void           (*request) (Ecore_X_Window, const char *target);
 
-   Elm_Sel_Format    format;
-   Ecore_X_Selection ecore_sel;
+   Elm_Sel_Format_Type  format;
+   Ecore_X_Selection    ecore_sel;
 
    Eina_Bool         active : 1;
 };
@@ -82,7 +82,7 @@
 struct _Escape
 {
    const char *escape;
-   const char  *value;
+   const char *value;
 };
 
 struct _Tmp_Info
@@ -96,7 +96,7 @@
 struct _Cnp_Atom
 {
    const char          *name;
-   Elm_Sel_Format       formats;
+   Elm_Sel_Format_Type  formats;
    /* Called by ecore to do conversion */
    Converter_Fn_Cb      converter;
    Response_Handler_Cb  response;
@@ -116,11 +116,11 @@
 
 struct _Dropable
 {
-   Evas_Object     *obj;
+   Evas_Object         *obj;
    /* FIXME: Cache window */
-   Elm_Sel_Format   types;
-   Elm_Drop_Cb      dropcb;
-   void            *cbdata;
+   Elm_Sel_Format_Type  types;
+   Elm_Drop_Cb          dropcb;
+   void                *cbdata;
 };
 
 static Tmp_Info *elm_cnp_tempfile_create(int size);
@@ -168,7 +168,7 @@
 static Cnp_Atom atoms[CNP_N_ATOMS] = {
      [CNP_ATOM_TARGETS] = {
           "TARGETS",
-          ELM_SEL_TARGETS,
+          ELM_SEL_FORMAT_TYPE_TARGETS,
           targets_converter,
           response_handler_targets,
           notify_handler_targets,
@@ -176,7 +176,7 @@
      },
      [CNP_ATOM_ATOM] = {
           "ATOM", // for opera browser
-          ELM_SEL_TARGETS,
+          ELM_SEL_FORMAT_TYPE_TARGETS,
           targets_converter,
           response_handler_targets,
           notify_handler_targets,
@@ -184,7 +184,7 @@
      },
      [CNP_ATOM_XELM] =  {
           "application/x-elementary-markup",
-          ELM_SEL_FORMAT_MARKUP,
+          ELM_SEL_FORMAT_TYPE_MARKUP,
           general_converter,
           NULL,
           NULL,
@@ -192,7 +192,7 @@
      },
      [CNP_ATOM_text_uri] = {
           "text/uri",
-          ELM_SEL_FORMAT_MARKUP | ELM_SEL_FORMAT_IMAGE, /* Either images or 
entries */
+          ELM_SEL_FORMAT_TYPE_MARKUP | ELM_SEL_FORMAT_TYPE_IMAGE, /* Either 
images or entries */
           general_converter,
           NULL,
           notify_handler_uri,
@@ -200,7 +200,7 @@
      },
      [CNP_ATOM_text_urilist] = {
           "text/uri-list",
-          ELM_SEL_FORMAT_IMAGE,
+          ELM_SEL_FORMAT_TYPE_IMAGE,
           general_converter,
           NULL,
           notify_handler_uri,
@@ -208,13 +208,13 @@
      },
      [CNP_ATOM_text_x_vcard] = {
           "text/x-vcard",
-          ELM_SEL_FORMAT_VCARD,
+          ELM_SEL_FORMAT_TYPE_VCARD,
           vcard_send, NULL,
           vcard_receive, 0
      },
      [CNP_ATOM_image_png] = {
           "image/png",
-          ELM_SEL_FORMAT_IMAGE,
+          ELM_SEL_FORMAT_TYPE_IMAGE,
           image_converter,
           NULL,
           notify_handler_image,
@@ -222,7 +222,7 @@
      },
      [CNP_ATOM_image_jpeg] = {
           "image/jpeg",
-          ELM_SEL_FORMAT_IMAGE,
+          ELM_SEL_FORMAT_TYPE_IMAGE,
           image_converter,
           NULL,
           notify_handler_image,/* Raw image data is the same */
@@ -230,7 +230,7 @@
      },
      [CNP_ATOM_image_bmp] = {
           "image/x-ms-bmp",
-          ELM_SEL_FORMAT_IMAGE,
+          ELM_SEL_FORMAT_TYPE_IMAGE,
           image_converter,
           NULL,
           notify_handler_image,/* Raw image data is the same */
@@ -238,7 +238,7 @@
      },
      [CNP_ATOM_image_gif] = {
           "image/gif",
-          ELM_SEL_FORMAT_IMAGE,
+          ELM_SEL_FORMAT_TYPE_IMAGE,
           image_converter,
           NULL,
           notify_handler_image,/* Raw image data is the same */
@@ -246,7 +246,7 @@
      },
      [CNP_ATOM_image_tiff] = {
           "image/tiff",
-          ELM_SEL_FORMAT_IMAGE,
+          ELM_SEL_FORMAT_TYPE_IMAGE,
           image_converter,
           NULL,
           notify_handler_image,/* Raw image data is the same */
@@ -254,7 +254,7 @@
      },
      [CNP_ATOM_image_svg] = {
           "image/svg+xml",
-          ELM_SEL_FORMAT_IMAGE,
+          ELM_SEL_FORMAT_TYPE_IMAGE,
           image_converter,
           NULL,
           notify_handler_image,/* Raw image data is the same */
@@ -262,7 +262,7 @@
      },
      [CNP_ATOM_image_xpm] = {
           "image/x-xpixmap",
-          ELM_SEL_FORMAT_IMAGE,
+          ELM_SEL_FORMAT_TYPE_IMAGE,
           image_converter,
           NULL,
           notify_handler_image,/* Raw image data is the same */
@@ -270,7 +270,7 @@
      },
      [CNP_ATOM_image_tga] = {
           "image/x-tga",
-          ELM_SEL_FORMAT_IMAGE,
+          ELM_SEL_FORMAT_TYPE_IMAGE,
           image_converter,
           NULL,
           notify_handler_image,/* Raw image data is the same */
@@ -278,7 +278,7 @@
      },
      [CNP_ATOM_image_ppm] = {
           "image/x-portable-pixmap",
-          ELM_SEL_FORMAT_IMAGE,
+          ELM_SEL_FORMAT_TYPE_IMAGE,
           image_converter,
           NULL,
           notify_handler_image,/* Raw image data is the same */
@@ -286,7 +286,7 @@
      },
      [CNP_ATOM_text_html_utf8] = {
           "text/html;charset=utf-8",
-          ELM_SEL_FORMAT_HTML,
+          ELM_SEL_FORMAT_TYPE_HTML,
           general_converter,
           NULL,
           notify_handler_html,
@@ -294,7 +294,7 @@
      },
      [CNP_ATOM_text_html] = {
           "text/html",
-          ELM_SEL_FORMAT_HTML,
+          ELM_SEL_FORMAT_TYPE_HTML,
           general_converter,
           NULL,
           notify_handler_html, /* No encoding: Webkit only */
@@ -302,7 +302,7 @@
      },
      [CNP_ATOM_UTF8STRING] = {
           "UTF8_STRING",
-          ELM_SEL_FORMAT_TEXT | ELM_SEL_FORMAT_MARKUP | ELM_SEL_FORMAT_HTML,
+          ELM_SEL_FORMAT_TYPE_TEXT | ELM_SEL_FORMAT_TYPE_MARKUP | 
ELM_SEL_FORMAT_TYPE_HTML,
           text_converter,
           NULL,
           notify_handler_text,
@@ -310,7 +310,7 @@
      },
      [CNP_ATOM_STRING] = {
           "STRING",
-          ELM_SEL_FORMAT_TEXT | ELM_SEL_FORMAT_MARKUP | ELM_SEL_FORMAT_HTML,
+          ELM_SEL_FORMAT_TYPE_TEXT | ELM_SEL_FORMAT_TYPE_MARKUP | 
ELM_SEL_FORMAT_TYPE_HTML,
           text_converter,
           NULL,
           notify_handler_text,
@@ -318,7 +318,7 @@
      },
      [CNP_ATOM_TEXT] = {
           "TEXT",
-          ELM_SEL_FORMAT_TEXT | ELM_SEL_FORMAT_MARKUP | ELM_SEL_FORMAT_HTML,
+          ELM_SEL_FORMAT_TYPE_TEXT | ELM_SEL_FORMAT_TYPE_MARKUP | 
ELM_SEL_FORMAT_TYPE_HTML,
           text_converter,
           NULL,
           NULL,
@@ -326,7 +326,7 @@
      },
      [CNP_ATOM_text_plain_utf8] = {
           "text/plain;charset=utf-8",
-          ELM_SEL_FORMAT_TEXT | ELM_SEL_FORMAT_MARKUP | ELM_SEL_FORMAT_HTML,
+          ELM_SEL_FORMAT_TYPE_TEXT | ELM_SEL_FORMAT_TYPE_MARKUP | 
ELM_SEL_FORMAT_TYPE_HTML,
           text_converter,
           NULL,
           NULL,
@@ -334,7 +334,7 @@
      },
      [CNP_ATOM_text_plain] = {
           "text/plain",
-          ELM_SEL_FORMAT_TEXT | ELM_SEL_FORMAT_MARKUP | ELM_SEL_FORMAT_HTML,
+          ELM_SEL_FORMAT_TYPE_TEXT | ELM_SEL_FORMAT_TYPE_MARKUP | 
ELM_SEL_FORMAT_TYPE_HTML,
           text_converter,
           NULL,
           NULL,
@@ -342,29 +342,29 @@
      },
 };
 
-static Cnp_Selection selections[ELM_SEL_MAX] = {
-     ARRAYINIT(ELM_SEL_PRIMARY) {
+static Cnp_Selection selections[ELM_SEL_TYPE_MAX] = {
+     ARRAYINIT(ELM_SEL_TYPE_PRIMARY) {
           .debug = "Primary",
           .ecore_sel = ECORE_X_SELECTION_PRIMARY,
           .set = ecore_x_selection_primary_set,
           .clear = ecore_x_selection_primary_clear,
           .request = ecore_x_selection_primary_request,
      },
-     ARRAYINIT(ELM_SEL_SECONDARY) {
+     ARRAYINIT(ELM_SEL_TYPE_SECONDARY) {
           .debug = "Secondary",
           .ecore_sel = ECORE_X_SELECTION_SECONDARY,
           .set = ecore_x_selection_secondary_set,
           .clear = ecore_x_selection_secondary_clear,
           .request = ecore_x_selection_secondary_request,
      },
-     ARRAYINIT(ELM_SEL_CLIPBOARD) {
+     ARRAYINIT(ELM_SEL_TYPE_CLIPBOARD) {
           .debug = "Clipboard",
           .ecore_sel = ECORE_X_SELECTION_CLIPBOARD,
           .set = ecore_x_selection_clipboard_set,
           .clear = ecore_x_selection_clipboard_clear,
           .request = ecore_x_selection_clipboard_request,
      },
-     ARRAYINIT(ELM_SEL_XDND) {
+     ARRAYINIT(ELM_SEL_TYPE_XDND) {
           .debug = "XDnD",
           .ecore_sel = ECORE_X_SELECTION_XDND,
           .request = ecore_x_selection_xdnd_request,
@@ -408,7 +408,8 @@
 }
 
 Eina_Bool
-elm_cnp_selection_set(Elm_Sel_Type selection, Evas_Object *widget, 
Elm_Sel_Format format, const char *selbuf)
+elm_cnp_selection_set(Elm_Sel_Type selection, Evas_Object *widget,
+                      Elm_Sel_Format_Type format, const void *selbuf, size_t 
buflen)
 {
 #ifdef HAVE_ELEMENTARY_X
    Evas_Object *top = elm_widget_top_get(widget);
@@ -418,9 +419,10 @@
    if (top) xwin = elm_win_xwindow_get(top);
    else xwin = elm_win_xwindow_get(widget);
    if (!xwin) return EINA_FALSE;
-   if ((unsigned int)selection >= (unsigned int)ELM_SEL_MAX) return EINA_FALSE;
+   if ((unsigned int)selection >= (unsigned int)ELM_SEL_TYPE_MAX)
+     return EINA_FALSE;
    if (!_elm_cnp_init_count) _elm_cnp_init();
-   if ((!selbuf) && (format != ELM_SEL_FORMAT_IMAGE))
+   if ((!selbuf) && (format != ELM_SEL_FORMAT_TYPE_IMAGE))
      return elm_cnp_selection_clear(selection, widget);
 
    sel = selections + selection;
@@ -430,8 +432,21 @@
 
    sel->set(xwin, &selection, sizeof(Elm_Sel_Type));
    sel->format = format;
-   sel->selbuf = selbuf ? strdup(selbuf) : NULL;
 
+   if (selbuf)
+     {
+        if (format == ELM_SEL_FORMAT_TYPE_IMAGE)
+          {
+             sel->selbuf = malloc(buflen+1);
+             memcpy(sel->selbuf, selbuf, buflen);
+          }
+        else
+          sel->selbuf = strdup((char*)selbuf);
+     }
+   else
+     sel->selbuf = NULL;
+
+
    return EINA_TRUE;
 #else
    return EINA_FALSE;
@@ -444,7 +459,8 @@
 #ifdef HAVE_ELEMENTARY_X
    Cnp_Selection *sel;
 
-   if ((unsigned int)selection >= (unsigned int)ELM_SEL_MAX) return EINA_FALSE;
+   if ((unsigned int)selection >= (unsigned int)ELM_SEL_TYPE_MAX)
+     return EINA_FALSE;
    if (!_elm_cnp_init_count) _elm_cnp_init();
 
    sel = selections + selection;
@@ -454,6 +470,9 @@
 
    sel->active = EINA_FALSE;
    sel->widget = NULL;
+   if (sel->selbuf)
+     free(sel->selbuf);
+   sel->selbuf = NULL;
    sel->clear();
 
    return EINA_TRUE;
@@ -463,14 +482,15 @@
 }
 
 Eina_Bool
-elm_cnp_selection_get(Elm_Sel_Type selection, Elm_Sel_Format format,
-                  Evas_Object *widget, Elm_Drop_Cb datacb, void *udata)
+elm_cnp_selection_get(Elm_Sel_Type selection, Elm_Sel_Format_Type format,
+                      Evas_Object *widget, Elm_Drop_Cb datacb, void *udata)
 {
 #ifdef HAVE_ELEMENTARY_X
    Evas_Object *top;
    Cnp_Selection *sel;
 
-   if ((unsigned int)selection >= (unsigned int)ELM_SEL_MAX) return EINA_FALSE;
+   if ((unsigned int)selection >= (unsigned int)ELM_SEL_TYPE_MAX)
+     return EINA_FALSE;
    if (!_elm_cnp_init_count) _elm_cnp_init();
 
    sel = selections + selection;
@@ -518,17 +538,19 @@
    Cnp_Selection *sel;
    int i;
 
-   for (i = 0; i < ELM_SEL_MAX; i++)
+   for (i = 0; i < ELM_SEL_TYPE_MAX; i++)
      {
         if (selections[i].ecore_sel == ev->selection) break;
      }
    cnp_debug("selection %d clear\n", i);
    /* Not me... Don't care */
-   if (i == ELM_SEL_MAX) return ECORE_CALLBACK_PASS_ON;
+   if (i == ELM_SEL_TYPE_MAX) return ECORE_CALLBACK_PASS_ON;
 
    sel = selections + i;
-   sel->active = 0;
+   sel->active = EINA_FALSE;
    sel->widget = NULL;
+   if (sel->selbuf)
+     free(sel->selbuf);
    sel->selbuf = NULL;
 
    return ECORE_CALLBACK_PASS_ON;
@@ -552,16 +574,16 @@
    switch (ev->selection)
      {
       case ECORE_X_SELECTION_CLIPBOARD:
-         sel = selections + ELM_SEL_CLIPBOARD;
+         sel = selections + ELM_SEL_TYPE_CLIPBOARD;
          break;
       case ECORE_X_SELECTION_PRIMARY:
-         sel = selections + ELM_SEL_PRIMARY;
+         sel = selections + ELM_SEL_TYPE_PRIMARY;
          break;
       case ECORE_X_SELECTION_SECONDARY:
-         sel = selections + ELM_SEL_SECONDARY;
+         sel = selections + ELM_SEL_TYPE_SECONDARY;
          break;
       case ECORE_X_SELECTION_XDND:
-         sel = selections + ELM_SEL_XDND;
+         sel = selections + ELM_SEL_TYPE_XDND;
          break;
       default:
          return ECORE_CALLBACK_PASS_ON;
@@ -587,7 +609,7 @@
    return ECORE_CALLBACK_PASS_ON;
 }
 
-static Elm_Sel_Format
+static Elm_Sel_Format_Type
 _get_selection_type(void *data, int size)
 {
    if (size == sizeof(Elm_Sel_Type))
@@ -595,10 +617,11 @@
         Cnp_Selection *sel;
         sel = selections + *((int *)data);
         if (sel->active &&
-            (sel->format >= ELM_SEL_TARGETS) && (sel->format < 
ELM_SEL_FORMAT_MAX))
+            (sel->format >= ELM_SEL_FORMAT_TYPE_TARGETS) &&
+            (sel->format < ELM_SEL_FORMAT_TYPE_MAX))
           return sel->format;
      }
-   return ELM_SEL_FORMAT_NONE;
+   return ELM_SEL_FORMAT_TYPE_NONE;
 }
 
 static Eina_Bool
@@ -607,14 +630,14 @@
    int i,count;
    Ecore_X_Atom *aret;
    Cnp_Selection *sel;
-   Elm_Sel_Format seltype;
+   Elm_Sel_Format_Type seltype;
 
    if (!data_ret) return EINA_FALSE;
 
-   if (_get_selection_type(data, size) == ELM_SEL_FORMAT_NONE)
+   if (_get_selection_type(data, size) == ELM_SEL_FORMAT_TYPE_NONE)
      {
         /* TODO : fallback into precise type */
-        seltype = ELM_SEL_FORMAT_TEXT;
+        seltype = ELM_SEL_FORMAT_TYPE_TEXT;
      }
    else
      {
@@ -782,7 +805,7 @@
         Elm_Selection_Data ddata;
 
         ddata.x = ddata.y = 0;
-        ddata.format = ELM_SEL_FORMAT_TEXT;
+        ddata.format = ELM_SEL_FORMAT_TYPE_TEXT;
         ddata.data = data->data;
         ddata.len = data->length;
         sel->datacb(sel->udata, sel->widget, &ddata);
@@ -876,7 +899,7 @@
    data = notify->data;
    cnp_debug("vcard receive\n");
 
-   if (sel == (selections + ELM_SEL_XDND))
+   if (sel == (selections + ELM_SEL_TYPE_XDND))
      {
         Elm_Selection_Data ddata;
 
@@ -895,7 +918,7 @@
         dropable = eina_list_data_get(l);
         ddata.x = savedtypes.x;
         ddata.y = savedtypes.y;
-        ddata.format = ELM_SEL_FORMAT_VCARD;
+        ddata.format = ELM_SEL_FORMAT_TYPE_VCARD;
         ddata.data = data->data;
         ddata.len = data->length;
         dropable->dropcb(dropable->cbdata, dropable->obj, &ddata);
@@ -905,7 +928,7 @@
      {
         Elm_Selection_Data ddata;
         ddata.x = ddata.y = 0;
-        ddata.format = ELM_SEL_FORMAT_IMAGE;
+        ddata.format = ELM_SEL_FORMAT_TYPE_IMAGE;
         ddata.data = data->data;
         ddata.len = data->length;
         sel->datacb(sel->udata, sel->widget, &ddata);
@@ -936,7 +959,7 @@
         Elm_Selection_Data ddata;
 
         ddata.x = ddata.y = 0;
-        ddata.format = ELM_SEL_FORMAT_IMAGE;
+        ddata.format = ELM_SEL_FORMAT_TYPE_IMAGE;
         ddata.data = data->data;
         ddata.len = data->length;
         sel->datacb(sel->udata, sel->widget, &ddata);
@@ -973,7 +996,7 @@
      {
         Elm_Selection_Data ddata;
         ddata.x = ddata.y = 0;
-        ddata.format = ELM_SEL_FORMAT_HTML;
+        ddata.format = ELM_SEL_FORMAT_TYPE_HTML;
         ddata.data = data->data;
         ddata.len = data->length;
         sel->datacb(sel->udata, sel->widget, &ddata);
@@ -997,7 +1020,7 @@
    Cnp_Selection *sel;
 
    cnp_debug("text converter\n");
-   if (_get_selection_type(data, size) == ELM_SEL_FORMAT_NONE)
+   if (_get_selection_type(data, size) == ELM_SEL_FORMAT_TYPE_NONE)
      {
         if (data_ret)
           {
@@ -1011,17 +1034,17 @@
    sel = selections + *((int *)data);
    if (!sel->active) return EINA_TRUE;
 
-   if ((sel->format & ELM_SEL_FORMAT_MARKUP) ||
-       (sel->format & ELM_SEL_FORMAT_HTML))
+   if ((sel->format & ELM_SEL_FORMAT_TYPE_MARKUP) ||
+       (sel->format & ELM_SEL_FORMAT_TYPE_HTML))
      {
         *data_ret = remove_tags(sel->selbuf, size_ret);
      }
-   else if (sel->format & ELM_SEL_FORMAT_TEXT)
+   else if (sel->format & ELM_SEL_FORMAT_TYPE_TEXT)
      {
         *data_ret = strdup(sel->selbuf);
         *size_ret = strlen(sel->selbuf);
      }
-   else if (sel->format & ELM_SEL_FORMAT_IMAGE)
+   else if (sel->format & ELM_SEL_FORMAT_TYPE_IMAGE)
      {
         cnp_debug("Image %s\n", evas_object_type_get(sel->widget));
         cnp_debug("Elm type: %s\n", elm_object_widget_type_get(sel->widget));
@@ -1036,7 +1059,7 @@
 static Eina_Bool
 general_converter(char *target __UNUSED__, void *data, int size, void 
**data_ret, int *size_ret, Ecore_X_Atom *ttype __UNUSED__, int *typesize 
__UNUSED__)
 {
-   if (_get_selection_type(data, size) == ELM_SEL_FORMAT_NONE)
+   if (_get_selection_type(data, size) == ELM_SEL_FORMAT_TYPE_NONE)
      {
         if (data_ret)
           {
@@ -1325,11 +1348,11 @@
              ddata.y = savedtypes.y;
 
              /* If it's markup that also supports images */
-             if ((dropable->types & ELM_SEL_FORMAT_MARKUP) &&
-                 (dropable->types & ELM_SEL_FORMAT_IMAGE))
+             if ((dropable->types & ELM_SEL_FORMAT_TYPE_MARKUP) &&
+                 (dropable->types & ELM_SEL_FORMAT_TYPE_IMAGE))
                {
                   int len;
-                  ddata.format = ELM_SEL_FORMAT_MARKUP;
+                  ddata.format = ELM_SEL_FORMAT_TYPE_MARKUP;
 
                   len = strlen(tagstring) + strlen(savedtypes.imgfile);
                   entrytag = alloca(len + 1);
@@ -1343,10 +1366,10 @@
 
                   return EINA_TRUE;
                }
-             else if (dropable->types & ELM_SEL_FORMAT_IMAGE)
+             else if (dropable->types & ELM_SEL_FORMAT_TYPE_IMAGE)
                {
                   cnp_debug("Doing image insert (%s)\n", savedtypes.imgfile);
-                  ddata.format = ELM_SEL_FORMAT_IMAGE;
+                  ddata.format = ELM_SEL_FORMAT_TYPE_IMAGE;
                   ddata.data = (char *)savedtypes.imgfile;
                   dropable->dropcb(dropable->cbdata, dropable->obj, &ddata);
                   ecore_x_dnd_send_finished();
@@ -1372,9 +1395,9 @@
      }
 
    cnp_debug("doing a request then\n");
-   selections[ELM_SEL_XDND].requestwidget = dropable->obj;
-   selections[ELM_SEL_XDND].requestformat = ELM_SEL_FORMAT_MARKUP;
-   selections[ELM_SEL_XDND].active = EINA_TRUE;
+   selections[ELM_SEL_TYPE_XDND].requestwidget = dropable->obj;
+   selections[ELM_SEL_TYPE_XDND].requestformat = ELM_SEL_FORMAT_TYPE_MARKUP;
+   selections[ELM_SEL_TYPE_XDND].active = EINA_TRUE;
 
    ecore_x_selection_xdnd_request(xwin, atoms[i].name);
 
@@ -1545,7 +1568,7 @@
    ecore_x_dnd_drop();
    if (dragdonecb)
      {
-        dragdonecb(dragdonecb,selections[ELM_SEL_XDND].widget);
+        dragdonecb(dragdonecb,selections[ELM_SEL_TYPE_XDND].widget);
         dragdonecb = NULL;
      }
    if (dragwin)
@@ -1565,11 +1588,11 @@
 
 
 Eina_Bool
-elm_drag_start(Evas_Object *obj, Elm_Sel_Format format, const char *data, void 
(*dragdone) (void *data, Evas_Object *), void *donecbdata)
+elm_drag_start(Evas_Object *obj, Elm_Sel_Format_Type format, const char *data, 
void (*dragdone) (void *data, Evas_Object *), void *donecbdata)
 {
    Ecore_X_Window xwin;
    Cnp_Selection *sel;
-   Elm_Sel_Type xdnd = ELM_SEL_XDND;
+   Elm_Sel_Type xdnd = ELM_SEL_TYPE_XDND;
    Ecore_Evas *ee;
    int x, y, x2, y2, x3, y3;
    Evas_Object *icon;
@@ -1582,7 +1605,7 @@
    cnp_debug("starting drag...\n");
 
    ecore_x_dnd_type_set(xwin, "text/uri-list", 1);
-   sel = selections + ELM_SEL_XDND;
+   sel = selections + ELM_SEL_TYPE_XDND;
    sel->active = 1;
    sel->widget = obj;
    sel->format = format;
@@ -1727,7 +1750,7 @@
 #else
 /* Stubs for windows */
 Eina_Bool
-elm_drag_start(Evas_Object *o, Elm_Sel_Format f, const char *d, void 
(*donecb)(void *, Evas_Object *),void *cbdata)
+elm_drag_start(Evas_Object *o, Elm_Sel_Format_Type f, const char *d, void 
(*donecb)(void *, Evas_Object *),void *cbdata)
 {
    return EINA_FALSE;
 }
Index: elementary/src/lib/elm_thumb.c
===================================================================
--- elementary/src/lib/elm_thumb.c      (리비전 66563)
+++ elementary/src/lib/elm_thumb.c      (작업 사본)
@@ -706,7 +706,7 @@
 
    wd->edit = edit;
    if (wd->edit)
-     elm_drop_target_add(obj, ELM_SEL_FORMAT_IMAGE,
+     elm_drop_target_add(obj, ELM_SEL_FORMAT_TYPE_IMAGE,
                          _elm_thumb_dropcb, obj);
    else
      elm_drop_target_del(obj);
Index: elementary/src/lib/els_icon.c
===================================================================
--- elementary/src/lib/els_icon.c       (리비전 66563)
+++ elementary/src/lib/els_icon.c       (작업 사본)
@@ -465,7 +465,7 @@
    sd->edit = edit;
 
    if (sd->edit)
-     elm_drop_target_add(obj, ELM_SEL_FORMAT_IMAGE, _els_smart_icon_dropcb,
+     elm_drop_target_add(obj, ELM_SEL_FORMAT_TYPE_IMAGE, 
_els_smart_icon_dropcb,
                          parent);
    else
      elm_drop_target_del(obj);
Index: elementary/src/lib/Elementary.h.in
===================================================================
--- elementary/src/lib/Elementary.h.in  (리비전 66563)
+++ elementary/src/lib/Elementary.h.in  (작업 사본)
@@ -30414,40 +30414,40 @@
 
    typedef enum _Elm_Sel_Type
    {
-      ELM_SEL_PRIMARY,
-      ELM_SEL_SECONDARY,
-      ELM_SEL_CLIPBOARD,
-      ELM_SEL_XDND,
+      ELM_SEL_TYPE_PRIMARY,
+      ELM_SEL_TYPE_SECONDARY,
+      ELM_SEL_TYPE_CLIPBOARD,
+      ELM_SEL_TYPE_XDND,
 
-      ELM_SEL_MAX,
+      ELM_SEL_TYPE_MAX,
    } Elm_Sel_Type;
 
-   typedef enum _Elm_Sel_Format
+   typedef enum _Elm_Sel_Format_Type
    {
       /** Targets: for matching every atom requesting */
-      ELM_SEL_TARGETS       = -1,
+      ELM_SEL_FORMAT_TYPE_TARGETS  = -1,
       /** they come from outside of elm */
-      ELM_SEL_FORMAT_NONE   = 0x0,
+      ELM_SEL_FORMAT_TYPE_NONE     = 0x0,
       /** Plain unformated text: Used for things that don't want rich markup */
-      ELM_SEL_FORMAT_TEXT   = 0x01,
+      ELM_SEL_FORMAT_TYPE_TEXT     = 0x01,
       /** Edje textblock markup, including inline images */
-      ELM_SEL_FORMAT_MARKUP = 0x02,
+      ELM_SEL_FORMAT_TYPE_MARKUP   = 0x02,
       /** Images */
-      ELM_SEL_FORMAT_IMAGE  = 0x04,
+      ELM_SEL_FORMAT_TYPE_IMAGE    = 0x04,
       /** Vcards */
-      ELM_SEL_FORMAT_VCARD  = 0x08,
+      ELM_SEL_FORMAT_TYPE_VCARD    = 0x08,
       /** Raw HTMLish things for widgets that want that stuff (hello webkit!) 
*/
-      ELM_SEL_FORMAT_HTML   = 0x10,
+      ELM_SEL_FORMAT_TYPE_HTML     = 0x10,
 
-      ELM_SEL_FORMAT_MAX
-   } Elm_Sel_Format;
+      ELM_SEL_FORMAT_TYPE_MAX
+   } Elm_Sel_Format_Type;
 
    struct _Elm_Selection_Data
    {
       int                   x, y;
-      Elm_Sel_Format        format;
+      Elm_Sel_Format_Type   format;
       void                 *data;
-      int                   len;
+      size_t                len;
    };
 
    /**
@@ -30466,7 +30466,7 @@
     *
     */
 
-   EAPI Eina_Bool            elm_cnp_selection_set(Elm_Sel_Type selection, 
Evas_Object *widget, Elm_Sel_Format format, const char *buf);
+   EAPI Eina_Bool            elm_cnp_selection_set(Elm_Sel_Type selection, 
Evas_Object *widget, Elm_Sel_Format_Type format, const void *buf, size_t 
buflen);
 
    /**
     * @brief Retrive the data from the widget which is set for copying and 
pasting.
@@ -30487,7 +30487,7 @@
     *
     */
 
-   EAPI Eina_Bool            elm_cnp_selection_get(Elm_Sel_Type selection, 
Elm_Sel_Format format, Evas_Object *widget, Elm_Drop_Cb datacb, void *udata);
+   EAPI Eina_Bool            elm_cnp_selection_get(Elm_Sel_Type selection, 
Elm_Sel_Format_Type format, Evas_Object *widget, Elm_Drop_Cb datacb, void 
*udata);
 
    /**
     * @brief Clear the data in the widget which is set for copying and pasting.
------------------------------------------------------------------------------
Write once. Port to many.
Get the SDK and tools to simplify cross-platform app development. Create 
new or port existing apps to sell to consumers worldwide. Explore the 
Intel AppUpSM program developer opportunity. appdeveloper.intel.com/join
http://p.sf.net/sfu/intel-appdev
_______________________________________________
enlightenment-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel

Reply via email to