From: discomfitor Date: Tue, 28 Feb 2012 05:49:07 +0000 (+0000) Subject: From: Hyoyoung Chang X-Git-Tag: REL_F_I9500_20120323_1~17^2~500 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=f1a3aeaeaa1db299bbeab92e61b755aa6ddb56c4;p=framework%2Fuifw%2Felementary.git From: Hyoyoung Chang Subject: [E-devel] [patch] elm_cnp - revise document Date: Tue, 28 Feb 2012 13:55:59 +0900 Dear all. As i said earlier, elm_cnp's document is revised. I add information about x11 and make some comment clear. Thanks git-svn-id: svn+ssh://svn.enlightenment.org/var/svn/e/trunk/elementary@68489 7cbeb6ba-43b4-40fd-8cce-4c39aea84d33 --- diff --git a/src/lib/elm_cnp.h b/src/lib/elm_cnp.h index 4e204a4..57afefc 100644 --- a/src/lib/elm_cnp.h +++ b/src/lib/elm_cnp.h @@ -2,13 +2,40 @@ * @defgroup CopyPaste CopyPaste * * Implements the following functionality - * a. select, copy/cut and paste + * a. select, copy/cut and paste * b. clipboard - * c. drag and drop + * c. drag and drop * in order to share data across application windows. * - * Contains functions to select a portion of text, send it to a buffer, - * and paste the selection into a target. + * Contains functions to select text or a portion of data, + * send it to a buffer, and paste the data into a target. + * + * elm_cnp provides generic copy and paste facility based on its windowing system. + * It is not necessary to know the details of each windowing system, + * but some terms and behavior are common. + * Currently the X11 window system is widely used, and only X11 functionality is implemented. + * + * In X11R6 window sytem, CopyPaste works like a peer-to-peer communication. + * Copying is an operation on an object in an X server. + * X11 calls those objects 'selections' which have names. + * Generally, two selection types are needed for copy and paste: + * The Primary selection and the Clipboard selection. + * Primary selection is for selecting text (that means highlighted text). + * Clipboard selection is for explicit copying behavior + * (such as ctrl+c, or 'copy' in a menu). + * Thus, in applications most cases only use the clipboard selection. + * As stated before, taking ownership of a selection doesn't move any actual data. + * Copying and Pasting is described as follows: + * 1. Copy text in Program A : Program A takes ownership of the selection + * 2. Paste text in Program B : Program B notes that Program A owns the selection + * 3. Program B asks A for the text + * 4. Program A responds and sends the text to program B + * 5. Program B pastes the response + * More information is on + * - http://www.jwz.org/doc/x-cut-and-paste.html + * - X11R6 Inter-Client Communication Conventions Manual, section 2 + * + * TODO: add for other window system. * * @{ */ @@ -20,7 +47,7 @@ */ typedef enum { - ELM_SEL_TYPE_PRIMARY, /**< Primary text selection (middle mouse) */ + ELM_SEL_TYPE_PRIMARY, /**< Primary text selection (highlighted or selected text) */ ELM_SEL_TYPE_SECONDARY, /**< Used when primary selection is in use */ ELM_SEL_TYPE_XDND, /**< Drag 'n' Drop */ ELM_SEL_TYPE_CLIPBOARD, /**< Clipboard selection (ctrl+C) */ @@ -32,19 +59,19 @@ typedef enum typedef enum { /** For matching every possible atom */ - ELM_SEL_FORMAT_TARGETS = -1, + ELM_SEL_FORMAT_TARGETS = -1, /** Content is from outside of Elementary */ - ELM_SEL_FORMAT_NONE = 0x0, + ELM_SEL_FORMAT_NONE = 0x0, /** Plain unformatted text: Used for things that don't want rich markup */ - ELM_SEL_FORMAT_TEXT = 0x01, + ELM_SEL_FORMAT_TEXT = 0x01, /** Edje textblock markup, including inline images */ - ELM_SEL_FORMAT_MARKUP = 0x02, + ELM_SEL_FORMAT_MARKUP = 0x02, /** Images */ - ELM_SEL_FORMAT_IMAGE = 0x04, + ELM_SEL_FORMAT_IMAGE = 0x04, /** Vcards */ - ELM_SEL_FORMAT_VCARD = 0x08, + ELM_SEL_FORMAT_VCARD = 0x08, /** Raw HTML-like data (eg. webkit) */ - ELM_SEL_FORMAT_HTML = 0x10, + ELM_SEL_FORMAT_HTML = 0x10, } Elm_Sel_Format; /** @@ -71,10 +98,10 @@ typedef Eina_Bool (*Elm_Drop_Cb)(void *data, Evas_Object *obj, Elm_Selection_Dat /** - * @brief Set copy and paste data for a widget. + * @brief Set copy data for a widget. * - * XXX: need to be rewritten. - * Append the given callback to the list. + * Set copy data and take ownership of selection. Format is used for specifying the selection type, + * and this is used during pasting. * * @param selection Selection type for copying and pasting * @param obj The source widget pointer @@ -94,7 +121,7 @@ EAPI Eina_Bool elm_cnp_selection_set(Elm_Sel_Type selection, Evas_Object *obj, size_t buflen); /** - * @brief Retrieve selection data from a widget. + * @brief Retrieve data from a widget that has a selection. * * Gets the current selection data from a widget. * The widget input here will usually be elm_entry, @@ -129,6 +156,8 @@ EAPI Eina_Bool elm_cnp_selection_get(Elm_Sel_Type selection, /** * @brief Clear the selection data of a widget. * + * Clear all data from the selection which is owned by a widget. + * * @see also elm_cnp_selection_set() * * @param obj The source widget