From: Hyoyoung Chang <hyoyoung@gmail.com>

Subject: [E-devel] [patch] elm_cnp_helper - make some cnp apis as
public EAPI

As I suggested, I made a patch for some cnp apis.
I think copying and pasting APIs are pretty mature to be public
Those are elm_selection_set, elm_selection_clear, elm_selection_get.
And adding cnp prefix for distinction from word, or char selections.

elm_selection_set    --> elm_cnp_selection_set
elm_selection_clear --> elm_cnp_selection_clear
elm_selection_get    --> elm_cnp_selection_get

And drag and drop APIs should be remained as private.
It has many flaws.




SVN revision: 66505
This commit is contained in:
Hyoyoung Chang 2011-12-26 04:08:45 +00:00 committed by Carsten Haitzler
parent defb09803a
commit ad04bbfc23
4 changed files with 116 additions and 55 deletions

View File

@ -30394,6 +30394,112 @@ extern "C" {
* @}
*/
/**
* @addtogroup CopyPaste
* @{
*/
typedef struct _Elm_Selection_Data Elm_Selection_Data;
typedef Eina_Bool (*Elm_Drop_Cb) (void *d, Evas_Object *o, Elm_Selection_Data *data);
typedef enum _Elm_Sel_Type
{
ELM_SEL_PRIMARY,
ELM_SEL_SECONDARY,
ELM_SEL_CLIPBOARD,
ELM_SEL_XDND,
ELM_SEL_MAX,
} Elm_Sel_Type;
typedef enum _Elm_Sel_Format
{
/** Targets: for matching every atom requesting */
ELM_SEL_TARGETS = -1,
/** they come from outside of elm */
ELM_SEL_FORMAT_NONE = 0x0,
/** Plain unformated text: Used for things that don't want rich markup */
ELM_SEL_FORMAT_TEXT = 0x01,
/** Edje textblock markup, including inline images */
ELM_SEL_FORMAT_MARKUP = 0x02,
/** Images */
ELM_SEL_FORMAT_IMAGE = 0x04,
/** Vcards */
ELM_SEL_FORMAT_VCARD = 0x08,
/** Raw HTMLish things for widgets that want that stuff (hello webkit!) */
ELM_SEL_FORMAT_HTML = 0x10,
ELM_SEL_FORMAT_MAX
} Elm_Sel_Format;
struct _Elm_Selection_Data
{
int x, y;
Elm_Sel_Format format;
void *data;
int len;
};
/**
* @brief Set a data of a widget to copy and paste.
*
* Append the given callback to the list. This functions will be called
* called.
*
* @param selection selection type for copying and pasting
* @param widget The source widget pointer
* @param format Type of selection format
* @param buf The pointer of data source
* @return If EINA_TRUE, setting data is success.
*
* @ingroup CopyPaste
*
*/
EAPI Eina_Bool elm_cnp_selection_set(Elm_Sel_Type selection, Evas_Object *widget, Elm_Sel_Format format, const char *buf);
/**
* @brief Retrive the data from the widget which is set for copying and pasting.
*
* Getting the data from the widget which is set for copying and pasting.
* Mainly the widget is elm_entry. If then @p datacb and @p udata are
* can be NULL. If not, @p datacb and @p udata are used for retriving data.
*
* @see also elm_cnp_selection_set()
*
* @param selection selection type for copying and pasting
* @param widget The source widget pointer
* @param datacb The user data callback if the target widget isn't elm_entry
* @param udata The user data pointer for @p datacb
* @return If EINA_TRUE, getting data is success.
*
* @ingroup CopyPaste
*
*/
EAPI Eina_Bool elm_cnp_selection_get(Elm_Sel_Type selection, Elm_Sel_Format format, Evas_Object *widget, Elm_Drop_Cb datacb, void *udata);
/**
* @brief Clear the data in the widget which is set for copying and pasting.
*
* Clear the data in the widget. Normally this function isn't need to call.
*
* @see also elm_cnp_selection_set()
*
* @param selection selection type for copying and pasting
* @param widget The source widget pointer
* @return If EINA_TRUE, clearing data is success.
*
* @ingroup CopyPaste
*
*/
EAPI Eina_Bool elm_cnp_selection_clear(Elm_Sel_Type selection, Evas_Object *widget);
/**
* @}
*/
#ifdef __cplusplus
}
#endif

View File

@ -408,7 +408,7 @@ elm_selection_selection_has_owner(void)
}
Eina_Bool
elm_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 format, const char *selbuf)
{
#ifdef HAVE_ELEMENTARY_X
Evas_Object *top = elm_widget_top_get(widget);
@ -421,7 +421,7 @@ elm_selection_set(Elm_Sel_Type selection, Evas_Object *widget, Elm_Sel_Format fo
if ((unsigned int)selection >= (unsigned int)ELM_SEL_MAX) return EINA_FALSE;
if (!_elm_cnp_init_count) _elm_cnp_init();
if ((!selbuf) && (format != ELM_SEL_FORMAT_IMAGE))
return elm_selection_clear(selection, widget);
return elm_cnp_selection_clear(selection, widget);
sel = selections + selection;
@ -439,7 +439,7 @@ elm_selection_set(Elm_Sel_Type selection, Evas_Object *widget, Elm_Sel_Format fo
}
Eina_Bool
elm_selection_clear(Elm_Sel_Type selection, Evas_Object *widget)
elm_cnp_selection_clear(Elm_Sel_Type selection, Evas_Object *widget)
{
#ifdef HAVE_ELEMENTARY_X
Cnp_Selection *sel;
@ -463,7 +463,7 @@ elm_selection_clear(Elm_Sel_Type selection, Evas_Object *widget)
}
Eina_Bool
elm_selection_get(Elm_Sel_Type selection, Elm_Sel_Format format,
elm_cnp_selection_get(Elm_Sel_Type selection, Elm_Sel_Format format,
Evas_Object *widget, Elm_Drop_Cb datacb, void *udata)
{
#ifdef HAVE_ELEMENTARY_X

View File

@ -1126,7 +1126,7 @@ _paste(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
formats = ELM_SEL_FORMAT_MARKUP;
if (!wd->textonly)
formats |= ELM_SEL_FORMAT_IMAGE;
elm_selection_get(ELM_SEL_CLIPBOARD, formats, data, NULL, NULL);
elm_cnp_selection_get(ELM_SEL_CLIPBOARD, formats, data, NULL, NULL);
#endif
}
}
@ -1140,7 +1140,7 @@ _store_selection(Elm_Sel_Type seltype, Evas_Object *obj)
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_selection_set(seltype, obj, ELM_SEL_FORMAT_MARKUP, sel);
elm_cnp_selection_set(seltype, obj, ELM_SEL_FORMAT_MARKUP, sel);
if (seltype == ELM_SEL_CLIPBOARD)
eina_stringshare_replace(&wd->cut_sel, sel);
}
@ -1531,7 +1531,7 @@ _signal_selection_start(void *data, Evas_Object *obj __UNUSED__, const char *emi
top = elm_widget_top_get(data);
if ((top) && (elm_win_xwindow_get(top)))
elm_selection_set(ELM_SEL_PRIMARY, data, ELM_SEL_FORMAT_MARKUP, txt);
elm_cnp_selection_set(ELM_SEL_PRIMARY, data, ELM_SEL_FORMAT_MARKUP, txt);
}
#endif
}
@ -1579,7 +1579,7 @@ _signal_selection_cleared(void *data, Evas_Object *obj __UNUSED__, const char *e
top = elm_widget_top_get(data);
if ((top) && (elm_win_xwindow_get(top)))
elm_selection_set(ELM_SEL_PRIMARY, data, ELM_SEL_FORMAT_MARKUP,
elm_cnp_selection_set(ELM_SEL_PRIMARY, data, ELM_SEL_FORMAT_MARKUP,
wd->cut_sel);
#endif
eina_stringshare_del(wd->cut_sel);
@ -1592,7 +1592,7 @@ _signal_selection_cleared(void *data, Evas_Object *obj __UNUSED__, const char *e
top = elm_widget_top_get(data);
if ((top) && (elm_win_xwindow_get(top)))
elm_selection_clear(ELM_SEL_PRIMARY, data);
elm_cnp_selection_clear(ELM_SEL_PRIMARY, data);
#endif
}
}
@ -1614,7 +1614,7 @@ _signal_entry_paste_request(void *data, Evas_Object *obj __UNUSED__, const char
if ((top) && (elm_win_xwindow_get(top)))
{
wd->selection_asked = EINA_TRUE;
elm_selection_get(type, ELM_SEL_FORMAT_MARKUP, data,
elm_cnp_selection_get(type, ELM_SEL_FORMAT_MARKUP, data,
NULL, NULL);
}
#endif

View File

@ -711,51 +711,6 @@ EAPI Eina_Bool _elm_widget_item_disabled_get(const Elm_Widget_Item *item)
* And yes, elm_widget, should probably be elm_experimental...
* Complaints about this code should go to /dev/null, or failing that nash.
*/
typedef struct _Elm_Selection_Data Elm_Selection_Data;
typedef Eina_Bool (*Elm_Drop_Cb) (void *d, Evas_Object *o, Elm_Selection_Data *data);
typedef enum _Elm_Sel_Type
{
ELM_SEL_PRIMARY,
ELM_SEL_SECONDARY,
ELM_SEL_CLIPBOARD,
ELM_SEL_XDND,
ELM_SEL_MAX,
} Elm_Sel_Type;
typedef enum _Elm_Sel_Format
{
/** Targets: for matching every atom requesting */
ELM_SEL_TARGETS = -1,
/** they come from outside of elm */
ELM_SEL_FORMAT_NONE = 0x0,
/** Plain unformated text: Used for things that don't want rich markup */
ELM_SEL_FORMAT_TEXT = 0x01,
/** Edje textblock markup, including inline images */
ELM_SEL_FORMAT_MARKUP = 0x02,
/** Images */
ELM_SEL_FORMAT_IMAGE = 0x04,
/** Vcards */
ELM_SEL_FORMAT_VCARD = 0x08,
/** Raw HTMLish things for widgets that want that stuff (hello webkit!) */
ELM_SEL_FORMAT_HTML = 0x10,
ELM_SEL_FORMAT_MAX
} Elm_Sel_Format;
struct _Elm_Selection_Data
{
int x, y;
Elm_Sel_Format format;
void *data;
int len;
};
Eina_Bool elm_selection_set(Elm_Sel_Type selection, Evas_Object *widget, Elm_Sel_Format format, const char *buf);
Eina_Bool elm_selection_clear(Elm_Sel_Type selection, Evas_Object *widget);
Eina_Bool elm_selection_get(Elm_Sel_Type selection, Elm_Sel_Format format, Evas_Object *widget, Elm_Drop_Cb datacb, void *udata);
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);