\hypertarget{group__Evas__Object__Group__Extras}{}\doxysection{Extra Object Manipulation}
\label{group__Evas__Object__Group__Extras}\index{Extra Object Manipulation@{Extra Object Manipulation}}


Miscellaneous functions that also apply to any object, but are less used or not implemented by all objects.  


\doxysubsection*{Typedefs}
\begin{DoxyCompactItemize}
\item 
typedef enum \mbox{\hyperlink{group__Evas__Object__Group__Extras_ga822b2a69896ff21279debe2a417e3082}{\+\_\+\+Evas\+\_\+\+Object\+\_\+\+Pointer\+\_\+\+Mode}} \mbox{\hyperlink{group__Evas__Object__Group__Extras_gaceae456e143f253d2ed7498cea0bac63}{Evas\+\_\+\+Object\+\_\+\+Pointer\+\_\+\+Mode}}
\begin{DoxyCompactList}\small\item\em How the mouse pointer should be handled by Evas. \end{DoxyCompactList}\end{DoxyCompactItemize}
\doxysubsection*{Enumerations}
\begin{DoxyCompactItemize}
\item 
enum \mbox{\hyperlink{group__Evas__Object__Group__Extras_ga822b2a69896ff21279debe2a417e3082}{\+\_\+\+Evas\+\_\+\+Object\+\_\+\+Pointer\+\_\+\+Mode}} \{ \newline
\mbox{\hyperlink{group__Evas__Object__Group__Extras_gga822b2a69896ff21279debe2a417e3082a088ef2950aeb5a105c53decbbac82a28}{EVAS\+\_\+\+OBJECT\+\_\+\+POINTER\+\_\+\+MODE\+\_\+\+AUTOGRAB}}
, \newline
\mbox{\hyperlink{group__Evas__Object__Group__Extras_gga822b2a69896ff21279debe2a417e3082a555fdeb1038d1f208168a7001d21753b}{EVAS\+\_\+\+OBJECT\+\_\+\+POINTER\+\_\+\+MODE\+\_\+\+NOGRAB}}
, \newline
\mbox{\hyperlink{group__Evas__Object__Group__Extras_gga822b2a69896ff21279debe2a417e3082af7aa2988f33bad17a3afb4f99f004c74}{EVAS\+\_\+\+OBJECT\+\_\+\+POINTER\+\_\+\+MODE\+\_\+\+NOGRAB\+\_\+\+NO\+\_\+\+REPEAT\+\_\+\+UPDOWN}}
 \}
\begin{DoxyCompactList}\small\item\em How the mouse pointer should be handled by Evas. \end{DoxyCompactList}\end{DoxyCompactItemize}
\begin{DoxyCompactItemize}
\item 
EVAS\+\_\+\+API void \mbox{\hyperlink{group__Evas__Object__Group__Extras_ga3061f8abe8f1a1f657d622ae0409d8e3}{evas\+\_\+object\+\_\+data\+\_\+set}} (\mbox{\hyperlink{group__Evas__Object__Group_ga9e19e6dd1f517a0ba437c0114d3e7c97}{Evas\+\_\+\+Object}} $\ast$obj, const char $\ast$key, const void $\ast$data)
\begin{DoxyCompactList}\small\item\em Set an attached data pointer to an object with a given string key. \end{DoxyCompactList}\item 
EVAS\+\_\+\+API void $\ast$ \mbox{\hyperlink{group__Evas__Object__Group__Extras_ga3b85d805f879e71beed360650dda697b}{evas\+\_\+object\+\_\+data\+\_\+get}} (const \mbox{\hyperlink{group__Evas__Object__Group_ga9e19e6dd1f517a0ba437c0114d3e7c97}{Evas\+\_\+\+Object}} $\ast$obj, const char $\ast$key)
\begin{DoxyCompactList}\small\item\em Return an attached data pointer on an Evas object by its given string key. \end{DoxyCompactList}\item 
EVAS\+\_\+\+API void $\ast$ \mbox{\hyperlink{group__Evas__Object__Group__Extras_ga16ac0bf7e929542743b232e9c502b550}{evas\+\_\+object\+\_\+data\+\_\+del}} (\mbox{\hyperlink{group__Evas__Object__Group_ga9e19e6dd1f517a0ba437c0114d3e7c97}{Evas\+\_\+\+Object}} $\ast$obj, const char $\ast$key)
\begin{DoxyCompactList}\small\item\em Delete an attached data pointer from an object. \end{DoxyCompactList}\end{DoxyCompactItemize}


\doxysubsection{Detailed Description}
Miscellaneous functions that also apply to any object, but are less used or not implemented by all objects. 

Examples of this group of functions can be found \mbox{\hyperlink{Example_Evas_Stacking}{here}} and \mbox{\hyperlink{Example_Evas_Events}{here}}. 

\doxysubsection{Typedef Documentation}
\mbox{\Hypertarget{group__Evas__Object__Group__Extras_gaceae456e143f253d2ed7498cea0bac63}\label{group__Evas__Object__Group__Extras_gaceae456e143f253d2ed7498cea0bac63}} 
\index{Extra Object Manipulation@{Extra Object Manipulation}!Evas\_Object\_Pointer\_Mode@{Evas\_Object\_Pointer\_Mode}}
\index{Evas\_Object\_Pointer\_Mode@{Evas\_Object\_Pointer\_Mode}!Extra Object Manipulation@{Extra Object Manipulation}}
\doxysubsubsection{\texorpdfstring{Evas\_Object\_Pointer\_Mode}{Evas\_Object\_Pointer\_Mode}}
{\footnotesize\ttfamily typedef enum \mbox{\hyperlink{group__Evas__Object__Group__Extras_ga822b2a69896ff21279debe2a417e3082}{\+\_\+\+Evas\+\_\+\+Object\+\_\+\+Pointer\+\_\+\+Mode}} \mbox{\hyperlink{group__Evas__Object__Group__Extras_gaceae456e143f253d2ed7498cea0bac63}{Evas\+\_\+\+Object\+\_\+\+Pointer\+\_\+\+Mode}}}



How the mouse pointer should be handled by Evas. 

In the mode \mbox{\hyperlink{group__Evas__Object__Group__Extras_gga822b2a69896ff21279debe2a417e3082a088ef2950aeb5a105c53decbbac82a28}{EVAS\+\_\+\+OBJECT\+\_\+\+POINTER\+\_\+\+MODE\+\_\+\+AUTOGRAB}}, when a mouse button is pressed down over an object and held, with the mouse pointer being moved outside of it, the pointer still behaves as being bound to that object, albeit out of its drawing region. When the button is released, the event will be fed to the object, that may check if the final position is over it or not and do something about it.

In the mode \mbox{\hyperlink{group__Evas__Object__Group__Extras_gga822b2a69896ff21279debe2a417e3082a555fdeb1038d1f208168a7001d21753b}{EVAS\+\_\+\+OBJECT\+\_\+\+POINTER\+\_\+\+MODE\+\_\+\+NOGRAB}}, the pointer will always be bound to the object right below it. How the mouse pointer should be handled by Evas. 

\doxysubsection{Enumeration Type Documentation}
\mbox{\Hypertarget{group__Evas__Object__Group__Extras_ga822b2a69896ff21279debe2a417e3082}\label{group__Evas__Object__Group__Extras_ga822b2a69896ff21279debe2a417e3082}} 
\index{Extra Object Manipulation@{Extra Object Manipulation}!\_Evas\_Object\_Pointer\_Mode@{\_Evas\_Object\_Pointer\_Mode}}
\index{\_Evas\_Object\_Pointer\_Mode@{\_Evas\_Object\_Pointer\_Mode}!Extra Object Manipulation@{Extra Object Manipulation}}
\doxysubsubsection{\texorpdfstring{\_Evas\_Object\_Pointer\_Mode}{\_Evas\_Object\_Pointer\_Mode}}
{\footnotesize\ttfamily enum \mbox{\hyperlink{group__Evas__Object__Group__Extras_ga822b2a69896ff21279debe2a417e3082}{\+\_\+\+Evas\+\_\+\+Object\+\_\+\+Pointer\+\_\+\+Mode}}}



How the mouse pointer should be handled by Evas. 

In the mode \mbox{\hyperlink{group__Evas__Object__Group__Extras_gga822b2a69896ff21279debe2a417e3082a088ef2950aeb5a105c53decbbac82a28}{EVAS\+\_\+\+OBJECT\+\_\+\+POINTER\+\_\+\+MODE\+\_\+\+AUTOGRAB}}, when a mouse button is pressed down over an object and held, with the mouse pointer being moved outside of it, the pointer still behaves as being bound to that object, albeit out of its drawing region. When the button is released, the event will be fed to the object, that may check if the final position is over it or not and do something about it.

In the mode \mbox{\hyperlink{group__Evas__Object__Group__Extras_gga822b2a69896ff21279debe2a417e3082a555fdeb1038d1f208168a7001d21753b}{EVAS\+\_\+\+OBJECT\+\_\+\+POINTER\+\_\+\+MODE\+\_\+\+NOGRAB}}, the pointer will always be bound to the object right below it. \begin{DoxyEnumFields}{Enumerator}
\raisebox{\heightof{T}}[0pt][0pt]{\index{EVAS\_OBJECT\_POINTER\_MODE\_AUTOGRAB@{EVAS\_OBJECT\_POINTER\_MODE\_AUTOGRAB}!Extra Object Manipulation@{Extra Object Manipulation}}\index{Extra Object Manipulation@{Extra Object Manipulation}!EVAS\_OBJECT\_POINTER\_MODE\_AUTOGRAB@{EVAS\_OBJECT\_POINTER\_MODE\_AUTOGRAB}}}\mbox{\Hypertarget{group__Evas__Object__Group__Extras_gga822b2a69896ff21279debe2a417e3082a088ef2950aeb5a105c53decbbac82a28}\label{group__Evas__Object__Group__Extras_gga822b2a69896ff21279debe2a417e3082a088ef2950aeb5a105c53decbbac82a28}} 
EVAS\+\_\+\+OBJECT\+\_\+\+POINTER\+\_\+\+MODE\+\_\+\+AUTOGRAB&default, X11-\/like \\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{EVAS\_OBJECT\_POINTER\_MODE\_NOGRAB@{EVAS\_OBJECT\_POINTER\_MODE\_NOGRAB}!Extra Object Manipulation@{Extra Object Manipulation}}\index{Extra Object Manipulation@{Extra Object Manipulation}!EVAS\_OBJECT\_POINTER\_MODE\_NOGRAB@{EVAS\_OBJECT\_POINTER\_MODE\_NOGRAB}}}\mbox{\Hypertarget{group__Evas__Object__Group__Extras_gga822b2a69896ff21279debe2a417e3082a555fdeb1038d1f208168a7001d21753b}\label{group__Evas__Object__Group__Extras_gga822b2a69896ff21279debe2a417e3082a555fdeb1038d1f208168a7001d21753b}} 
EVAS\+\_\+\+OBJECT\+\_\+\+POINTER\+\_\+\+MODE\+\_\+\+NOGRAB&pointer always bound to the object right below it \\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{EVAS\_OBJECT\_POINTER\_MODE\_NOGRAB\_NO\_REPEAT\_UPDOWN@{EVAS\_OBJECT\_POINTER\_MODE\_NOGRAB\_NO\_REPEAT\_UPDOWN}!Extra Object Manipulation@{Extra Object Manipulation}}\index{Extra Object Manipulation@{Extra Object Manipulation}!EVAS\_OBJECT\_POINTER\_MODE\_NOGRAB\_NO\_REPEAT\_UPDOWN@{EVAS\_OBJECT\_POINTER\_MODE\_NOGRAB\_NO\_REPEAT\_UPDOWN}}}\mbox{\Hypertarget{group__Evas__Object__Group__Extras_gga822b2a69896ff21279debe2a417e3082af7aa2988f33bad17a3afb4f99f004c74}\label{group__Evas__Object__Group__Extras_gga822b2a69896ff21279debe2a417e3082af7aa2988f33bad17a3afb4f99f004c74}} 
EVAS\+\_\+\+OBJECT\+\_\+\+POINTER\+\_\+\+MODE\+\_\+\+NOGRAB\+\_\+\+NO\+\_\+\+REPEAT\+\_\+\+UPDOWN&useful on object with \char`\"{}repeat events\char`\"{} enabled, where mouse/touch up and down events WONT be repeated to objects and these objects wont be auto-\/grabbed. \begin{DoxySince}{Since}
1.\+2 
\end{DoxySince}
\\
\hline

\end{DoxyEnumFields}


\doxysubsection{Function Documentation}
\mbox{\Hypertarget{group__Evas__Object__Group__Extras_ga3061f8abe8f1a1f657d622ae0409d8e3}\label{group__Evas__Object__Group__Extras_ga3061f8abe8f1a1f657d622ae0409d8e3}} 
\index{Extra Object Manipulation@{Extra Object Manipulation}!evas\_object\_data\_set@{evas\_object\_data\_set}}
\index{evas\_object\_data\_set@{evas\_object\_data\_set}!Extra Object Manipulation@{Extra Object Manipulation}}
\doxysubsubsection{\texorpdfstring{evas\_object\_data\_set()}{evas\_object\_data\_set()}}
{\footnotesize\ttfamily EVAS\+\_\+\+API void evas\+\_\+object\+\_\+data\+\_\+set (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{group__Evas__Object__Group_ga9e19e6dd1f517a0ba437c0114d3e7c97}{Evas\+\_\+\+Object}} $\ast$}]{obj,  }\item[{const char $\ast$}]{key,  }\item[{const void $\ast$}]{data }\end{DoxyParamCaption})}



Set an attached data pointer to an object with a given string key. 


\begin{DoxyParams}{Parameters}
{\em obj} & The object to attach the data pointer to \\
\hline
{\em key} & The string key for the data to access it \\
\hline
{\em data} & The pointer to the data to be attached\\
\hline
\end{DoxyParams}
This attaches the pointer {\ttfamily data} to the object {\ttfamily obj}, given the access string {\ttfamily key}. This pointer will stay \char`\"{}hooked\char`\"{} to the object until a new pointer with the same string key is attached with \mbox{\hyperlink{group__Evas__Object__Group__Extras_ga3061f8abe8f1a1f657d622ae0409d8e3}{evas\+\_\+object\+\_\+data\+\_\+set()}} or it is deleted with \mbox{\hyperlink{group__Evas__Object__Group__Extras_ga16ac0bf7e929542743b232e9c502b550}{evas\+\_\+object\+\_\+data\+\_\+del()}}. On deletion of the object {\ttfamily obj}, the pointers will not be accessible from the object anymore.

You can find the pointer attached under a string key using \mbox{\hyperlink{group__Evas__Object__Group__Extras_ga3b85d805f879e71beed360650dda697b}{evas\+\_\+object\+\_\+data\+\_\+get()}}. It is the job of the calling application to free any data pointed to by {\ttfamily data} when it is no longer required.

If {\ttfamily data} is {\ttfamily NULL}, the old value stored at {\ttfamily key} will be removed but no new value will be stored. This is synonymous with calling \mbox{\hyperlink{group__Evas__Object__Group__Extras_ga16ac0bf7e929542743b232e9c502b550}{evas\+\_\+object\+\_\+data\+\_\+del()}} with {\ttfamily obj} and {\ttfamily key}.

\begin{DoxyNote}{Note}
This function is very handy when you have data associated specifically to an Evas object, being of use only when dealing with it. Than you don\textquotesingle{}t have the burden to a pointer to it elsewhere, using this family of functions.
\end{DoxyNote}
Example\+:


\begin{DoxyCode}{0}
\DoxyCodeLine{\textcolor{keywordtype}{int}\ *my\_data;}
\DoxyCodeLine{\textcolor{keyword}{extern}\ \mbox{\hyperlink{group__Evas__Object__Group_ga9e19e6dd1f517a0ba437c0114d3e7c97}{Evas\_Object}}\ *obj;}
\DoxyCodeLine{}
\DoxyCodeLine{my\_data\ =\ malloc(500);}
\DoxyCodeLine{\mbox{\hyperlink{group__Evas__Object__Group__Extras_ga3061f8abe8f1a1f657d622ae0409d8e3}{evas\_object\_data\_set}}(obj,\ \textcolor{stringliteral}{"{}name\_of\_data"{}},\ my\_data);}
\DoxyCodeLine{printf(\textcolor{stringliteral}{"{}The\ data\ that\ was\ attached\ was\ \%p\(\backslash\)n"{}},\ evas\_object\_data\_get(obj,\ \textcolor{stringliteral}{"{}name\_of\_data"{}}));}

\end{DoxyCode}
 

Referenced by \mbox{\hyperlink{group__Ecore__Evas__Group_gaca412094dad41a3bb020656b0eee97e2}{ecore\+\_\+evas\+\_\+object\+\_\+image\+\_\+new()}}, \mbox{\hyperlink{group__Edje__Perspective_gab9535d9102c796181d633192b63bf25c}{edje\+\_\+perspective\+\_\+new()}}, \mbox{\hyperlink{group__Access_gada7496b1b9dca46e849a681446c871a1}{elm\+\_\+access\+\_\+action\+\_\+cb\+\_\+set()}}, and \mbox{\hyperlink{group__Elm__Gesture__Layer__Group_gad0c59dbad956d63ff015bac89f9b7b0c}{elm\+\_\+gesture\+\_\+layer\+\_\+tap\+\_\+longpress\+\_\+cb\+\_\+add()}}.

\mbox{\Hypertarget{group__Evas__Object__Group__Extras_ga3b85d805f879e71beed360650dda697b}\label{group__Evas__Object__Group__Extras_ga3b85d805f879e71beed360650dda697b}} 
\index{Extra Object Manipulation@{Extra Object Manipulation}!evas\_object\_data\_get@{evas\_object\_data\_get}}
\index{evas\_object\_data\_get@{evas\_object\_data\_get}!Extra Object Manipulation@{Extra Object Manipulation}}
\doxysubsubsection{\texorpdfstring{evas\_object\_data\_get()}{evas\_object\_data\_get()}}
{\footnotesize\ttfamily EVAS\+\_\+\+API void $\ast$ evas\+\_\+object\+\_\+data\+\_\+get (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{group__Evas__Object__Group_ga9e19e6dd1f517a0ba437c0114d3e7c97}{Evas\+\_\+\+Object}} $\ast$}]{obj,  }\item[{const char $\ast$}]{key }\end{DoxyParamCaption})}



Return an attached data pointer on an Evas object by its given string key. 


\begin{DoxyParams}{Parameters}
{\em obj} & The object to which the data was attached \\
\hline
{\em key} & The string key the data was stored under \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
The data pointer stored, or {\ttfamily NULL} if none was stored
\end{DoxyReturn}
This function will return the data pointer attached to the object {\ttfamily obj}, stored using the string key {\ttfamily key}. If the object is valid and a data pointer was stored under the given key, that pointer will be returned. If this is not the case, {\ttfamily NULL} will be returned, signifying an invalid object or a non-\/existent key. It is possible that a {\ttfamily NULL} pointer was stored given that key, but this situation is nonsensical and thus can be considered an error as well. {\ttfamily NULL} pointers are never stored as this is the return value if an error occurs.

Example\+:


\begin{DoxyCode}{0}
\DoxyCodeLine{\textcolor{keywordtype}{int}\ *my\_data;}
\DoxyCodeLine{\textcolor{keyword}{extern}\ \mbox{\hyperlink{group__Evas__Object__Group_ga9e19e6dd1f517a0ba437c0114d3e7c97}{Evas\_Object}}\ *obj;}
\DoxyCodeLine{}
\DoxyCodeLine{my\_data\ =\ evas\_object\_data\_get(obj,\ \textcolor{stringliteral}{"{}name\_of\_my\_data"{}});}
\DoxyCodeLine{\textcolor{keywordflow}{if}\ (my\_data)\ printf(\textcolor{stringliteral}{"{}Data\ stored\ was\ \%p\(\backslash\)n"{}},\ my\_data);}
\DoxyCodeLine{\textcolor{keywordflow}{else}\ printf(\textcolor{stringliteral}{"{}No\ data\ was\ stored\ on\ the\ object\(\backslash\)n"{}});}

\end{DoxyCode}
 \mbox{\Hypertarget{group__Evas__Object__Group__Extras_ga16ac0bf7e929542743b232e9c502b550}\label{group__Evas__Object__Group__Extras_ga16ac0bf7e929542743b232e9c502b550}} 
\index{Extra Object Manipulation@{Extra Object Manipulation}!evas\_object\_data\_del@{evas\_object\_data\_del}}
\index{evas\_object\_data\_del@{evas\_object\_data\_del}!Extra Object Manipulation@{Extra Object Manipulation}}
\doxysubsubsection{\texorpdfstring{evas\_object\_data\_del()}{evas\_object\_data\_del()}}
{\footnotesize\ttfamily EVAS\+\_\+\+API void $\ast$ evas\+\_\+object\+\_\+data\+\_\+del (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{group__Evas__Object__Group_ga9e19e6dd1f517a0ba437c0114d3e7c97}{Evas\+\_\+\+Object}} $\ast$}]{obj,  }\item[{const char $\ast$}]{key }\end{DoxyParamCaption})}



Delete an attached data pointer from an object. 


\begin{DoxyParams}{Parameters}
{\em obj} & The object to delete the data pointer from \\
\hline
{\em key} & The string key the data was stored under \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
The original data pointer stored at {\ttfamily key} on {\ttfamily obj} 
\end{DoxyReturn}
This will remove the stored data pointer from {\ttfamily obj} stored under {\ttfamily key} and return this same pointer, if actually there was data there, or {\ttfamily NULL}, if nothing was stored under that key.

Example\+:


\begin{DoxyCode}{0}
\DoxyCodeLine{\textcolor{keywordtype}{int}\ *my\_data;}
\DoxyCodeLine{\textcolor{keyword}{extern}\ \mbox{\hyperlink{group__Evas__Object__Group_ga9e19e6dd1f517a0ba437c0114d3e7c97}{Evas\_Object}}\ *obj;}
\DoxyCodeLine{}
\DoxyCodeLine{my\_data\ =\ evas\_object\_data\_del(obj,\ \textcolor{stringliteral}{"{}name\_of\_my\_data"{}});}

\end{DoxyCode}
 