\hypertarget{group__Evas__Object__Group__Events}{\section{Object Events}
\label{group__Evas__Object__Group__Events}\index{Object Events@{Object Events}}
}


Objects generate events when they are moved, resized, when their visibility change, when they are deleted and so on.  


\begin{DoxyCompactItemize}
\item 
void \hyperlink{group__Evas__Object__Group__Events_ga23be30ac5cdfb780f1ff82e9108ec26b}{evas\+\_\+object\+\_\+event\+\_\+callback\+\_\+add} (\hyperlink{group__Evas__Object__Group_ga9e19e6dd1f517a0ba437c0114d3e7c97}{Evas\+\_\+\+Object} $\ast$obj, \hyperlink{Evas__Common_8h_a076b2a9b2de2b2144a4193b1d12ed448}{Evas\+\_\+\+Callback\+\_\+\+Type} type, \hyperlink{Evas__Common_8h_a7088da246b97ce62251547e29469c324}{Evas\+\_\+\+Object\+\_\+\+Event\+\_\+\+Cb} func, const void $\ast$data)
\begin{DoxyCompactList}\small\item\em Add (register) a callback function to a given Evas object event. \end{DoxyCompactList}\item 
void \hyperlink{group__Evas__Object__Group__Events_ga282f84f132c0dbe4110639db342a70d5}{evas\+\_\+object\+\_\+event\+\_\+callback\+\_\+priority\+\_\+add} (\hyperlink{group__Evas__Object__Group_ga9e19e6dd1f517a0ba437c0114d3e7c97}{Evas\+\_\+\+Object} $\ast$obj, \hyperlink{Evas__Common_8h_a076b2a9b2de2b2144a4193b1d12ed448}{Evas\+\_\+\+Callback\+\_\+\+Type} type, \hyperlink{Evas__Common_8h_a569c486e7bbb47ad28baaec79eb1ff3b}{Evas\+\_\+\+Callback\+\_\+\+Priority} priority, \hyperlink{Evas__Common_8h_a7088da246b97ce62251547e29469c324}{Evas\+\_\+\+Object\+\_\+\+Event\+\_\+\+Cb} func, const void $\ast$data)
\begin{DoxyCompactList}\small\item\em Add (register) a callback function to a given Evas object event with a non-\/default priority set. \end{DoxyCompactList}\item 
void $\ast$ \hyperlink{group__Evas__Object__Group__Events_gab271959a45d1d5348f6e78a14def44c2}{evas\+\_\+object\+\_\+event\+\_\+callback\+\_\+del} (\hyperlink{group__Evas__Object__Group_ga9e19e6dd1f517a0ba437c0114d3e7c97}{Evas\+\_\+\+Object} $\ast$obj, \hyperlink{Evas__Common_8h_a076b2a9b2de2b2144a4193b1d12ed448}{Evas\+\_\+\+Callback\+\_\+\+Type} type, \hyperlink{Evas__Common_8h_a7088da246b97ce62251547e29469c324}{Evas\+\_\+\+Object\+\_\+\+Event\+\_\+\+Cb} func)
\begin{DoxyCompactList}\small\item\em Delete a callback function from an object. \end{DoxyCompactList}\item 
void $\ast$ \hyperlink{group__Evas__Object__Group__Events_gacbb06f7468e1bb70586cb4ea64e5901e}{evas\+\_\+object\+\_\+event\+\_\+callback\+\_\+del\+\_\+full} (\hyperlink{group__Evas__Object__Group_ga9e19e6dd1f517a0ba437c0114d3e7c97}{Evas\+\_\+\+Object} $\ast$obj, \hyperlink{Evas__Common_8h_a076b2a9b2de2b2144a4193b1d12ed448}{Evas\+\_\+\+Callback\+\_\+\+Type} type, \hyperlink{Evas__Common_8h_a7088da246b97ce62251547e29469c324}{Evas\+\_\+\+Object\+\_\+\+Event\+\_\+\+Cb} func, const void $\ast$data)
\begin{DoxyCompactList}\small\item\em Delete (unregister) a callback function registered to a given Evas object event. \end{DoxyCompactList}\end{DoxyCompactItemize}


\subsection{Detailed Description}
Objects generate events when they are moved, resized, when their visibility change, when they are deleted and so on. 

These methods allow one to be notified about and to handle such events.

Objects also generate events on input (keyboard and mouse), if they accept them (are visible, focused, etc).

For each of those events, Evas provides a way for one to register callback functions to be issued just after they happen.

The following figure illustrates some Evas (event) callbacks\+:

  
\begin{DoxyImageNoCaption}
  \mbox{\includegraphics{evas-callbacks}}
\end{DoxyImageNoCaption}


These events have their values in the \hyperlink{Evas__Common_8h_a076b2a9b2de2b2144a4193b1d12ed448}{Evas\+\_\+\+Callback\+\_\+\+Type} enumeration, which has also ones happening on the canvas level (see \hyperlink{group__Evas__Canvas__Events}{Canvas Events} ).

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

\subsection{Function Documentation}
\hypertarget{group__Evas__Object__Group__Events_ga23be30ac5cdfb780f1ff82e9108ec26b}{\index{Object Events@{Object Events}!evas\+\_\+object\+\_\+event\+\_\+callback\+\_\+add@{evas\+\_\+object\+\_\+event\+\_\+callback\+\_\+add}}
\index{evas\+\_\+object\+\_\+event\+\_\+callback\+\_\+add@{evas\+\_\+object\+\_\+event\+\_\+callback\+\_\+add}!Object Events@{Object Events}}
\subsubsection[{evas\+\_\+object\+\_\+event\+\_\+callback\+\_\+add}]{\setlength{\rightskip}{0pt plus 5cm}void evas\+\_\+object\+\_\+event\+\_\+callback\+\_\+add (
\begin{DoxyParamCaption}
\item[{{\bf Evas\+\_\+\+Object} $\ast$}]{obj, }
\item[{{\bf Evas\+\_\+\+Callback\+\_\+\+Type}}]{type, }
\item[{{\bf Evas\+\_\+\+Object\+\_\+\+Event\+\_\+\+Cb}}]{func, }
\item[{const void $\ast$}]{data}
\end{DoxyParamCaption}
)}}\label{group__Evas__Object__Group__Events_ga23be30ac5cdfb780f1ff82e9108ec26b}


Add (register) a callback function to a given Evas object event. 


\begin{DoxyParams}{Parameters}
{\em obj} & Object to attach a callback to \\
\hline
{\em type} & The type of event that will trigger the callback \\
\hline
{\em func} & The function to be called when the event is triggered \\
\hline
{\em data} & The data pointer to be passed to {\ttfamily func} \\
\hline
\end{DoxyParams}
This function adds a function callback to an object when the event of type {\ttfamily type} occurs on object {\ttfamily obj}. The function is {\ttfamily func}.

In the event of a memory allocation error during addition of the callback to the object, \hyperlink{group__Evas__Main__Group_gacfae4f589c777003f58d51e502c52835}{evas\+\_\+alloc\+\_\+error()} should be used to determine the nature of the error, if any, and the program should sensibly try and recover.

A callback function must have the \hyperlink{Evas__Common_8h_a7088da246b97ce62251547e29469c324}{Evas\+\_\+\+Object\+\_\+\+Event\+\_\+\+Cb} prototype definition. The first parameter ({\ttfamily data}) in this definition will have the same value passed to \hyperlink{group__Evas__Object__Group__Events_ga23be30ac5cdfb780f1ff82e9108ec26b}{evas\+\_\+object\+\_\+event\+\_\+callback\+\_\+add()} as the {\ttfamily data} parameter, at runtime. The second parameter {\ttfamily e} is the canvas pointer on which the event occurred. The third parameter is a pointer to the object on which event occurred. Finally, the fourth parameter {\ttfamily event\+\_\+info} is a pointer to a data structure that may or may not be passed to the callback, depending on the event type that triggered the callback. This is so because some events don't carry extra context with them, but others do.

The event type {\ttfamily type} to trigger the function may be one of \hyperlink{Evas__Common_8h_a99e208e463a20499aabe6faac8a8cb8aa598c57bc146639618157159a319f11af}{E\+V\+A\+S\+\_\+\+C\+A\+L\+L\+B\+A\+C\+K\+\_\+\+M\+O\+U\+S\+E\+\_\+\+I\+N}, \hyperlink{Evas__Common_8h_a99e208e463a20499aabe6faac8a8cb8aa91aaa30a57047d0ee8a734e603751c25}{E\+V\+A\+S\+\_\+\+C\+A\+L\+L\+B\+A\+C\+K\+\_\+\+M\+O\+U\+S\+E\+\_\+\+O\+U\+T}, \hyperlink{Evas__Common_8h_a99e208e463a20499aabe6faac8a8cb8aa9fa52651ccf7e47cd3b7785fc4cf393f}{E\+V\+A\+S\+\_\+\+C\+A\+L\+L\+B\+A\+C\+K\+\_\+\+M\+O\+U\+S\+E\+\_\+\+D\+O\+W\+N}, \hyperlink{Evas__Common_8h_a99e208e463a20499aabe6faac8a8cb8aa8c1b22c99dd0231cd9ba1fecbffffac7}{E\+V\+A\+S\+\_\+\+C\+A\+L\+L\+B\+A\+C\+K\+\_\+\+M\+O\+U\+S\+E\+\_\+\+U\+P}, \hyperlink{Evas__Common_8h_a99e208e463a20499aabe6faac8a8cb8aa23fb97fb7cbccded54ccf3fc4e1dab8a}{E\+V\+A\+S\+\_\+\+C\+A\+L\+L\+B\+A\+C\+K\+\_\+\+M\+O\+U\+S\+E\+\_\+\+M\+O\+V\+E}, \hyperlink{Evas__Common_8h_a99e208e463a20499aabe6faac8a8cb8aa39d739f473db520ec4dfe0776ed43be4}{E\+V\+A\+S\+\_\+\+C\+A\+L\+L\+B\+A\+C\+K\+\_\+\+M\+O\+U\+S\+E\+\_\+\+W\+H\+E\+E\+L}, \hyperlink{Evas__Common_8h_a99e208e463a20499aabe6faac8a8cb8aab5bb0de31eaeed655255e71ffe518b80}{E\+V\+A\+S\+\_\+\+C\+A\+L\+L\+B\+A\+C\+K\+\_\+\+M\+U\+L\+T\+I\+\_\+\+D\+O\+W\+N}, \hyperlink{Evas__Common_8h_a99e208e463a20499aabe6faac8a8cb8aa4328f52cfb700b5c705edf7173afdd94}{E\+V\+A\+S\+\_\+\+C\+A\+L\+L\+B\+A\+C\+K\+\_\+\+M\+U\+L\+T\+I\+\_\+\+U\+P}, \hyperlink{Evas__Common_8h_a99e208e463a20499aabe6faac8a8cb8aa6d0ade7e69dc62f728fa2e29168e923f}{E\+V\+A\+S\+\_\+\+C\+A\+L\+L\+B\+A\+C\+K\+\_\+\+M\+U\+L\+T\+I\+\_\+\+M\+O\+V\+E}, \hyperlink{Evas__Common_8h_a99e208e463a20499aabe6faac8a8cb8aaab869b5d534f02f1b3e151e2406a8c24}{E\+V\+A\+S\+\_\+\+C\+A\+L\+L\+B\+A\+C\+K\+\_\+\+F\+R\+E\+E}, \hyperlink{Evas__Common_8h_a99e208e463a20499aabe6faac8a8cb8aa336b86bad4f145f84c155e4922335584}{E\+V\+A\+S\+\_\+\+C\+A\+L\+L\+B\+A\+C\+K\+\_\+\+K\+E\+Y\+\_\+\+D\+O\+W\+N}, \hyperlink{Evas__Common_8h_a99e208e463a20499aabe6faac8a8cb8aac436b50ad665089f8a24b0fb827cec5f}{E\+V\+A\+S\+\_\+\+C\+A\+L\+L\+B\+A\+C\+K\+\_\+\+K\+E\+Y\+\_\+\+U\+P}, \hyperlink{Evas__Common_8h_a99e208e463a20499aabe6faac8a8cb8aa819cf61e9d11012b7402338c2ccb7b97}{E\+V\+A\+S\+\_\+\+C\+A\+L\+L\+B\+A\+C\+K\+\_\+\+F\+O\+C\+U\+S\+\_\+\+I\+N}, \hyperlink{Evas__Common_8h_a99e208e463a20499aabe6faac8a8cb8aab26a0af7efaa8b77e996bd438accf8d3}{E\+V\+A\+S\+\_\+\+C\+A\+L\+L\+B\+A\+C\+K\+\_\+\+F\+O\+C\+U\+S\+\_\+\+O\+U\+T}, \hyperlink{Evas__Common_8h_a99e208e463a20499aabe6faac8a8cb8aab433c293bd272670ac3b5e8b1928a540}{E\+V\+A\+S\+\_\+\+C\+A\+L\+L\+B\+A\+C\+K\+\_\+\+S\+H\+O\+W}, \hyperlink{Evas__Common_8h_a99e208e463a20499aabe6faac8a8cb8aa635d910ff45c89f4d7b91630add35cd7}{E\+V\+A\+S\+\_\+\+C\+A\+L\+L\+B\+A\+C\+K\+\_\+\+H\+I\+D\+E}, \hyperlink{Evas__Common_8h_a99e208e463a20499aabe6faac8a8cb8aa9b66bd091da76fb13f551c6db04502b0}{E\+V\+A\+S\+\_\+\+C\+A\+L\+L\+B\+A\+C\+K\+\_\+\+M\+O\+V\+E}, \hyperlink{Evas__Common_8h_a99e208e463a20499aabe6faac8a8cb8aa554e3341a4ae95e15d42da495f8adb21}{E\+V\+A\+S\+\_\+\+C\+A\+L\+L\+B\+A\+C\+K\+\_\+\+R\+E\+S\+I\+Z\+E}, \hyperlink{Evas__Common_8h_a99e208e463a20499aabe6faac8a8cb8aae633ea84ed0fccd3a3b232d0da30b145}{E\+V\+A\+S\+\_\+\+C\+A\+L\+L\+B\+A\+C\+K\+\_\+\+R\+E\+S\+T\+A\+C\+K}, \hyperlink{Evas__Common_8h_a99e208e463a20499aabe6faac8a8cb8aa4471afbcbb4a754b7b0bbde00fb9a277}{E\+V\+A\+S\+\_\+\+C\+A\+L\+L\+B\+A\+C\+K\+\_\+\+D\+E\+L}, \hyperlink{Evas__Common_8h_a99e208e463a20499aabe6faac8a8cb8aa585e05307b99c361e54df68a4f341a85}{E\+V\+A\+S\+\_\+\+C\+A\+L\+L\+B\+A\+C\+K\+\_\+\+H\+O\+L\+D}, \hyperlink{Evas__Common_8h_a99e208e463a20499aabe6faac8a8cb8aa49764394376bb2128446fe7b2bb2ccae}{E\+V\+A\+S\+\_\+\+C\+A\+L\+L\+B\+A\+C\+K\+\_\+\+C\+H\+A\+N\+G\+E\+D\+\_\+\+S\+I\+Z\+E\+\_\+\+H\+I\+N\+T\+S}, \hyperlink{Evas__Common_8h_a99e208e463a20499aabe6faac8a8cb8aa5cd5ca5f4dcd51dd2429f020cb2dfa9e}{E\+V\+A\+S\+\_\+\+C\+A\+L\+L\+B\+A\+C\+K\+\_\+\+I\+M\+A\+G\+E\+\_\+\+P\+R\+E\+L\+O\+A\+D\+E\+D} or \hyperlink{Evas__Common_8h_a99e208e463a20499aabe6faac8a8cb8aaf0a0bdf43416c9c2a80dab7d052ac3f8}{E\+V\+A\+S\+\_\+\+C\+A\+L\+L\+B\+A\+C\+K\+\_\+\+I\+M\+A\+G\+E\+\_\+\+U\+N\+L\+O\+A\+D\+E\+D}.

This determines the kind of event that will trigger the callback. What follows is a list explaining better the nature of each type of event, along with their associated {\ttfamily event\+\_\+info} pointers\+:


\begin{DoxyItemize}
\item \hyperlink{Evas__Common_8h_a99e208e463a20499aabe6faac8a8cb8aa598c57bc146639618157159a319f11af}{E\+V\+A\+S\+\_\+\+C\+A\+L\+L\+B\+A\+C\+K\+\_\+\+M\+O\+U\+S\+E\+\_\+\+I\+N}\+: {\ttfamily event\+\_\+info} is a pointer to an \hyperlink{Evas__Common_8h_a9b42da2562eb8390dd513d7337b1e018}{Evas\+\_\+\+Event\+\_\+\+Mouse\+\_\+\+In} struct~\newline
~\newline
 This event is triggered when the mouse pointer enters the area (not shaded by other objects) of the object {\ttfamily obj}. This may occur by the mouse pointer being moved by evas\+\_\+event\+\_\+feed\+\_\+mouse\+\_\+move() calls, or by the object being shown, raised, moved, resized, or other objects being moved out of the way, hidden or lowered, whatever may cause the mouse pointer to get on top of {\ttfamily obj}, having been on top of another object previously.
\item \hyperlink{Evas__Common_8h_a99e208e463a20499aabe6faac8a8cb8aa91aaa30a57047d0ee8a734e603751c25}{E\+V\+A\+S\+\_\+\+C\+A\+L\+L\+B\+A\+C\+K\+\_\+\+M\+O\+U\+S\+E\+\_\+\+O\+U\+T}\+: {\ttfamily event\+\_\+info} is a pointer to an \hyperlink{Evas__Common_8h_a7a168fcb1c4b6bc53ac4e69f5424f317}{Evas\+\_\+\+Event\+\_\+\+Mouse\+\_\+\+Out} struct~\newline
~\newline
 This event is triggered exactly like \hyperlink{Evas__Common_8h_a99e208e463a20499aabe6faac8a8cb8aa598c57bc146639618157159a319f11af}{E\+V\+A\+S\+\_\+\+C\+A\+L\+L\+B\+A\+C\+K\+\_\+\+M\+O\+U\+S\+E\+\_\+\+I\+N} is, but it occurs when the mouse pointer exits an object's area. Note that no mouse out events will be reported if the mouse pointer is implicitly grabbed to an object (mouse buttons are down, having been pressed while the pointer was over that object). In these cases, mouse out events will be reported once all buttons are released, if the mouse pointer has left the object's area. The indirect ways of taking off the mouse pointer from an object, like cited above, for \hyperlink{Evas__Common_8h_a99e208e463a20499aabe6faac8a8cb8aa598c57bc146639618157159a319f11af}{E\+V\+A\+S\+\_\+\+C\+A\+L\+L\+B\+A\+C\+K\+\_\+\+M\+O\+U\+S\+E\+\_\+\+I\+N}, also apply here, naturally.
\item \hyperlink{Evas__Common_8h_a99e208e463a20499aabe6faac8a8cb8aa9fa52651ccf7e47cd3b7785fc4cf393f}{E\+V\+A\+S\+\_\+\+C\+A\+L\+L\+B\+A\+C\+K\+\_\+\+M\+O\+U\+S\+E\+\_\+\+D\+O\+W\+N}\+: {\ttfamily event\+\_\+info} is a pointer to an \hyperlink{Evas__Common_8h_a907df7a46177e7bac9928ea39fbcca50}{Evas\+\_\+\+Event\+\_\+\+Mouse\+\_\+\+Down} struct~\newline
~\newline
 This event is triggered by a mouse button being pressed while the mouse pointer is over an object. If the pointer mode for Evas is \hyperlink{group__Evas__Object__Group__Extras_gga822b2a69896ff21279debe2a417e3082a088ef2950aeb5a105c53decbbac82a28}{E\+V\+A\+S\+\_\+\+O\+B\+J\+E\+C\+T\+\_\+\+P\+O\+I\+N\+T\+E\+R\+\_\+\+M\+O\+D\+E\+\_\+\+A\+U\+T\+O\+G\+R\+A\+B} (default), this causes this object to {\bfseries passively grab the mouse} until all mouse buttons have been released\+: all future mouse events will be reported to only this object until no buttons are down. That includes mouse move events, mouse in and mouse out events, and further button presses. When all buttons are released, event propagation will occur as normal (see \hyperlink{group__Evas__Object__Group__Extras_ga27baac4c63b590de109e3e3f0d941483}{Evas\+\_\+\+Object\+\_\+\+Pointer\+\_\+\+Mode}).
\item \hyperlink{Evas__Common_8h_a99e208e463a20499aabe6faac8a8cb8aa8c1b22c99dd0231cd9ba1fecbffffac7}{E\+V\+A\+S\+\_\+\+C\+A\+L\+L\+B\+A\+C\+K\+\_\+\+M\+O\+U\+S\+E\+\_\+\+U\+P}\+: {\ttfamily event\+\_\+info} is a pointer to an \hyperlink{Evas__Common_8h_a337e8227780d38bdeae5c0ccd00d04b3}{Evas\+\_\+\+Event\+\_\+\+Mouse\+\_\+\+Up} struct~\newline
~\newline
 This event is triggered by a mouse button being released while the mouse pointer is over an object's area (or when passively grabbed to an object).
\item \hyperlink{Evas__Common_8h_a99e208e463a20499aabe6faac8a8cb8aa23fb97fb7cbccded54ccf3fc4e1dab8a}{E\+V\+A\+S\+\_\+\+C\+A\+L\+L\+B\+A\+C\+K\+\_\+\+M\+O\+U\+S\+E\+\_\+\+M\+O\+V\+E}\+: {\ttfamily event\+\_\+info} is a pointer to an \hyperlink{Evas__Common_8h_a224de88869fe5315ca144ef8a2946827}{Evas\+\_\+\+Event\+\_\+\+Mouse\+\_\+\+Move} struct~\newline
~\newline
 This event is triggered by the mouse pointer being moved while over an object's area (or while passively grabbed to an object).
\item \hyperlink{Evas__Common_8h_a99e208e463a20499aabe6faac8a8cb8aa39d739f473db520ec4dfe0776ed43be4}{E\+V\+A\+S\+\_\+\+C\+A\+L\+L\+B\+A\+C\+K\+\_\+\+M\+O\+U\+S\+E\+\_\+\+W\+H\+E\+E\+L}\+: {\ttfamily event\+\_\+info} is a pointer to an \hyperlink{Evas__Common_8h_a54d0e99e450e158924b06746544bb4dc}{Evas\+\_\+\+Event\+\_\+\+Mouse\+\_\+\+Wheel} struct~\newline
~\newline
 This event is triggered by the mouse wheel being rolled while the mouse pointer is over an object (or passively grabbed to an object).
\item \hyperlink{Evas__Common_8h_a99e208e463a20499aabe6faac8a8cb8aab5bb0de31eaeed655255e71ffe518b80}{E\+V\+A\+S\+\_\+\+C\+A\+L\+L\+B\+A\+C\+K\+\_\+\+M\+U\+L\+T\+I\+\_\+\+D\+O\+W\+N}\+: {\ttfamily event\+\_\+info} is a pointer to an \hyperlink{Evas__Common_8h_a0436550ffcc1e2eab730ef3c493b8c40}{Evas\+\_\+\+Event\+\_\+\+Multi\+\_\+\+Down} struct
\item \hyperlink{Evas__Common_8h_a99e208e463a20499aabe6faac8a8cb8aa4328f52cfb700b5c705edf7173afdd94}{E\+V\+A\+S\+\_\+\+C\+A\+L\+L\+B\+A\+C\+K\+\_\+\+M\+U\+L\+T\+I\+\_\+\+U\+P}\+: {\ttfamily event\+\_\+info} is a pointer to an \hyperlink{Evas__Common_8h_a0f4d63b8673ee370e41e2c0bdc374212}{Evas\+\_\+\+Event\+\_\+\+Multi\+\_\+\+Up} struct
\item \hyperlink{Evas__Common_8h_a99e208e463a20499aabe6faac8a8cb8aa6d0ade7e69dc62f728fa2e29168e923f}{E\+V\+A\+S\+\_\+\+C\+A\+L\+L\+B\+A\+C\+K\+\_\+\+M\+U\+L\+T\+I\+\_\+\+M\+O\+V\+E}\+: {\ttfamily event\+\_\+info} is a pointer to an \hyperlink{Evas__Common_8h_a8658f1e1a6801e219547b05e8728ebd2}{Evas\+\_\+\+Event\+\_\+\+Multi\+\_\+\+Move} struct
\item \hyperlink{Evas__Common_8h_a99e208e463a20499aabe6faac8a8cb8aaab869b5d534f02f1b3e151e2406a8c24}{E\+V\+A\+S\+\_\+\+C\+A\+L\+L\+B\+A\+C\+K\+\_\+\+F\+R\+E\+E}\+: {\ttfamily event\+\_\+info} is {\ttfamily N\+U\+L\+L} ~\newline
~\newline
 This event is triggered just before Evas is about to free all memory used by an object and remove all references to it. This is useful for programs to use if they attached data to an object and want to free it when the object is deleted. The object is still valid when this callback is called, but after it returns, there is no guarantee on the object's validity.
\item \hyperlink{Evas__Common_8h_a99e208e463a20499aabe6faac8a8cb8aa336b86bad4f145f84c155e4922335584}{E\+V\+A\+S\+\_\+\+C\+A\+L\+L\+B\+A\+C\+K\+\_\+\+K\+E\+Y\+\_\+\+D\+O\+W\+N}\+: {\ttfamily event\+\_\+info} is a pointer to an \hyperlink{Evas__Common_8h_a9a1bfd297b751119977f3c14c0004612}{Evas\+\_\+\+Event\+\_\+\+Key\+\_\+\+Down} struct~\newline
~\newline
 This callback is called when a key is pressed and the focus is on the object, or a key has been grabbed to a particular object which wants to intercept the key press regardless of what object has the focus.
\item \hyperlink{Evas__Common_8h_a99e208e463a20499aabe6faac8a8cb8aac436b50ad665089f8a24b0fb827cec5f}{E\+V\+A\+S\+\_\+\+C\+A\+L\+L\+B\+A\+C\+K\+\_\+\+K\+E\+Y\+\_\+\+U\+P}\+: {\ttfamily event\+\_\+info} is a pointer to an \hyperlink{Evas__Common_8h_a92e77497752a3b100b3bfc4ee92daf09}{Evas\+\_\+\+Event\+\_\+\+Key\+\_\+\+Up} struct ~\newline
~\newline
 This callback is called when a key is released and the focus is on the object, or a key has been grabbed to a particular object which wants to intercept the key release regardless of what object has the focus.
\item \hyperlink{Evas__Common_8h_a99e208e463a20499aabe6faac8a8cb8aa819cf61e9d11012b7402338c2ccb7b97}{E\+V\+A\+S\+\_\+\+C\+A\+L\+L\+B\+A\+C\+K\+\_\+\+F\+O\+C\+U\+S\+\_\+\+I\+N}\+: {\ttfamily event\+\_\+info} is {\ttfamily N\+U\+L\+L} ~\newline
~\newline
 This event is called when an object gains the focus. When it is called the object has already gained the focus.
\item \hyperlink{Evas__Common_8h_a99e208e463a20499aabe6faac8a8cb8aab26a0af7efaa8b77e996bd438accf8d3}{E\+V\+A\+S\+\_\+\+C\+A\+L\+L\+B\+A\+C\+K\+\_\+\+F\+O\+C\+U\+S\+\_\+\+O\+U\+T}\+: {\ttfamily event\+\_\+info} is {\ttfamily N\+U\+L\+L} ~\newline
~\newline
 This event is triggered when an object loses the focus. When it is called the object has already lost the focus.
\item \hyperlink{Evas__Common_8h_a99e208e463a20499aabe6faac8a8cb8aab433c293bd272670ac3b5e8b1928a540}{E\+V\+A\+S\+\_\+\+C\+A\+L\+L\+B\+A\+C\+K\+\_\+\+S\+H\+O\+W}\+: {\ttfamily event\+\_\+info} is {\ttfamily N\+U\+L\+L} ~\newline
~\newline
 This event is triggered by the object being shown by \hyperlink{group__Evas__Font__Group_ga9cbc13661584e49fb9d9cdab514a1eeb}{evas\+\_\+object\+\_\+show()}.
\item \hyperlink{Evas__Common_8h_a99e208e463a20499aabe6faac8a8cb8aa635d910ff45c89f4d7b91630add35cd7}{E\+V\+A\+S\+\_\+\+C\+A\+L\+L\+B\+A\+C\+K\+\_\+\+H\+I\+D\+E}\+: {\ttfamily event\+\_\+info} is {\ttfamily N\+U\+L\+L} ~\newline
~\newline
 This event is triggered by an object being hidden by \hyperlink{group__Evas__Font__Group_gacc307a0d7bfc9df151fd9ec75808c587}{evas\+\_\+object\+\_\+hide()}.
\item \hyperlink{Evas__Common_8h_a99e208e463a20499aabe6faac8a8cb8aa9b66bd091da76fb13f551c6db04502b0}{E\+V\+A\+S\+\_\+\+C\+A\+L\+L\+B\+A\+C\+K\+\_\+\+M\+O\+V\+E}\+: {\ttfamily event\+\_\+info} is {\ttfamily N\+U\+L\+L} ~\newline
~\newline
 This event is triggered by an object being moved. evas\+\_\+object\+\_\+move() can trigger this, as can any object-\/specific manipulations that would mean the object's origin could move.
\item \hyperlink{Evas__Common_8h_a99e208e463a20499aabe6faac8a8cb8aa554e3341a4ae95e15d42da495f8adb21}{E\+V\+A\+S\+\_\+\+C\+A\+L\+L\+B\+A\+C\+K\+\_\+\+R\+E\+S\+I\+Z\+E}\+: {\ttfamily event\+\_\+info} is {\ttfamily N\+U\+L\+L} ~\newline
~\newline
 This event is triggered by an object being resized. Resizes can be triggered by evas\+\_\+object\+\_\+resize() or by any object-\/specific calls that may cause the object to resize.
\item \hyperlink{Evas__Common_8h_a99e208e463a20499aabe6faac8a8cb8aae633ea84ed0fccd3a3b232d0da30b145}{E\+V\+A\+S\+\_\+\+C\+A\+L\+L\+B\+A\+C\+K\+\_\+\+R\+E\+S\+T\+A\+C\+K}\+: {\ttfamily event\+\_\+info} is {\ttfamily N\+U\+L\+L} ~\newline
~\newline
 This event is triggered by an object being re-\/stacked. Stacking changes can be triggered by evas\+\_\+object\+\_\+stack\+\_\+below()/evas\+\_\+object\+\_\+stack\+\_\+above() and others.
\item \hyperlink{Evas__Common_8h_a99e208e463a20499aabe6faac8a8cb8aa4471afbcbb4a754b7b0bbde00fb9a277}{E\+V\+A\+S\+\_\+\+C\+A\+L\+L\+B\+A\+C\+K\+\_\+\+D\+E\+L}\+: {\ttfamily event\+\_\+info} is {\ttfamily N\+U\+L\+L}.
\item \hyperlink{Evas__Common_8h_a99e208e463a20499aabe6faac8a8cb8aa585e05307b99c361e54df68a4f341a85}{E\+V\+A\+S\+\_\+\+C\+A\+L\+L\+B\+A\+C\+K\+\_\+\+H\+O\+L\+D}\+: {\ttfamily event\+\_\+info} is a pointer to an \hyperlink{Evas__Common_8h_a6fb6e5748f93fc24d62276e5421f9767}{Evas\+\_\+\+Event\+\_\+\+Hold} struct
\item \hyperlink{Evas__Common_8h_a99e208e463a20499aabe6faac8a8cb8aa49764394376bb2128446fe7b2bb2ccae}{E\+V\+A\+S\+\_\+\+C\+A\+L\+L\+B\+A\+C\+K\+\_\+\+C\+H\+A\+N\+G\+E\+D\+\_\+\+S\+I\+Z\+E\+\_\+\+H\+I\+N\+T\+S}\+: {\ttfamily event\+\_\+info} is {\ttfamily N\+U\+L\+L}.
\item \hyperlink{Evas__Common_8h_a99e208e463a20499aabe6faac8a8cb8aa5cd5ca5f4dcd51dd2429f020cb2dfa9e}{E\+V\+A\+S\+\_\+\+C\+A\+L\+L\+B\+A\+C\+K\+\_\+\+I\+M\+A\+G\+E\+\_\+\+P\+R\+E\+L\+O\+A\+D\+E\+D}\+: {\ttfamily event\+\_\+info} is {\ttfamily N\+U\+L\+L}.
\item \hyperlink{Evas__Common_8h_a99e208e463a20499aabe6faac8a8cb8aaf0a0bdf43416c9c2a80dab7d052ac3f8}{E\+V\+A\+S\+\_\+\+C\+A\+L\+L\+B\+A\+C\+K\+\_\+\+I\+M\+A\+G\+E\+\_\+\+U\+N\+L\+O\+A\+D\+E\+D}\+: {\ttfamily event\+\_\+info} is {\ttfamily N\+U\+L\+L}.
\end{DoxyItemize}

\begin{DoxyNote}{Note}
Be careful not to add the same callback multiple times, if that's not what you want, because Evas won't check if a callback existed before exactly as the one being registered (and thus, call it more than once on the event, in this case). This would make sense if you passed different functions and/or callback data, only.
\end{DoxyNote}
Example\+:  
\begin{DoxyCodeInclude}
1    evas\_object\_event\_callback\_add(
2      d.bg, EVAS\_CALLBACK\_KEY\_DOWN, \_on\_keydown, NULL);
3    if (evas\_alloc\_error() != EVAS\_ALLOC\_ERROR\_NONE)
4      \{
5         fprintf(stderr, "ERROR: Callback registering failed! Aborting.\(\backslash\)n");
6         goto panic;
7      \}

\end{DoxyCodeInclude}


See the full example \hyperlink{Example_Evas_Events}{here}. 

References E\+V\+A\+S\+\_\+\+C\+A\+L\+L\+B\+A\+C\+K\+\_\+\+P\+R\+I\+O\+R\+I\+T\+Y\+\_\+\+D\+E\+F\+A\+U\+L\+T, and evas\+\_\+object\+\_\+event\+\_\+callback\+\_\+priority\+\_\+add().



Referenced by ecore\+\_\+evas\+\_\+ews\+\_\+background\+\_\+set(), ecore\+\_\+evas\+\_\+ews\+\_\+new(), ecore\+\_\+evas\+\_\+object\+\_\+image\+\_\+new(), edje\+\_\+perspective\+\_\+new(), and evas\+\_\+object\+\_\+image\+\_\+native\+\_\+surface\+\_\+set().

\hypertarget{group__Evas__Object__Group__Events_ga282f84f132c0dbe4110639db342a70d5}{\index{Object Events@{Object Events}!evas\+\_\+object\+\_\+event\+\_\+callback\+\_\+priority\+\_\+add@{evas\+\_\+object\+\_\+event\+\_\+callback\+\_\+priority\+\_\+add}}
\index{evas\+\_\+object\+\_\+event\+\_\+callback\+\_\+priority\+\_\+add@{evas\+\_\+object\+\_\+event\+\_\+callback\+\_\+priority\+\_\+add}!Object Events@{Object Events}}
\subsubsection[{evas\+\_\+object\+\_\+event\+\_\+callback\+\_\+priority\+\_\+add}]{\setlength{\rightskip}{0pt plus 5cm}void evas\+\_\+object\+\_\+event\+\_\+callback\+\_\+priority\+\_\+add (
\begin{DoxyParamCaption}
\item[{{\bf Evas\+\_\+\+Object} $\ast$}]{obj, }
\item[{{\bf Evas\+\_\+\+Callback\+\_\+\+Type}}]{type, }
\item[{{\bf Evas\+\_\+\+Callback\+\_\+\+Priority}}]{priority, }
\item[{{\bf Evas\+\_\+\+Object\+\_\+\+Event\+\_\+\+Cb}}]{func, }
\item[{const void $\ast$}]{data}
\end{DoxyParamCaption}
)}}\label{group__Evas__Object__Group__Events_ga282f84f132c0dbe4110639db342a70d5}


Add (register) a callback function to a given Evas object event with a non-\/default priority set. 

Except for the priority field, it's exactly the same as \hyperlink{group__Evas__Object__Group__Events_ga23be30ac5cdfb780f1ff82e9108ec26b}{evas\+\_\+object\+\_\+event\+\_\+callback\+\_\+add}


\begin{DoxyParams}{Parameters}
{\em obj} & Object to attach a callback to \\
\hline
{\em type} & The type of event that will trigger the callback \\
\hline
{\em priority} & The priority of the callback, lower values called first. \\
\hline
{\em func} & The function to be called when the event is triggered \\
\hline
{\em data} & The data pointer to be passed to {\ttfamily func} \\
\hline
\end{DoxyParams}
\begin{DoxySeeAlso}{See also}
\hyperlink{group__Evas__Object__Group__Events_ga23be30ac5cdfb780f1ff82e9108ec26b}{evas\+\_\+object\+\_\+event\+\_\+callback\+\_\+add} 
\end{DoxySeeAlso}
\begin{DoxySince}{Since}
1.\+1 
\end{DoxySince}


References eina\+\_\+inlist\+\_\+append(), and E\+I\+N\+A\+\_\+\+I\+N\+L\+I\+S\+T\+\_\+\+G\+E\+T.



Referenced by evas\+\_\+object\+\_\+event\+\_\+callback\+\_\+add().

\hypertarget{group__Evas__Object__Group__Events_gab271959a45d1d5348f6e78a14def44c2}{\index{Object Events@{Object Events}!evas\+\_\+object\+\_\+event\+\_\+callback\+\_\+del@{evas\+\_\+object\+\_\+event\+\_\+callback\+\_\+del}}
\index{evas\+\_\+object\+\_\+event\+\_\+callback\+\_\+del@{evas\+\_\+object\+\_\+event\+\_\+callback\+\_\+del}!Object Events@{Object Events}}
\subsubsection[{evas\+\_\+object\+\_\+event\+\_\+callback\+\_\+del}]{\setlength{\rightskip}{0pt plus 5cm}void$\ast$ evas\+\_\+object\+\_\+event\+\_\+callback\+\_\+del (
\begin{DoxyParamCaption}
\item[{{\bf Evas\+\_\+\+Object} $\ast$}]{obj, }
\item[{{\bf Evas\+\_\+\+Callback\+\_\+\+Type}}]{type, }
\item[{{\bf Evas\+\_\+\+Object\+\_\+\+Event\+\_\+\+Cb}}]{func}
\end{DoxyParamCaption}
)}}\label{group__Evas__Object__Group__Events_gab271959a45d1d5348f6e78a14def44c2}


Delete a callback function from an object. 


\begin{DoxyParams}{Parameters}
{\em obj} & Object to remove a callback from \\
\hline
{\em type} & The type of event that was triggering the callback \\
\hline
{\em func} & The function that was to be called when the event was triggered \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
The data pointer that was to be passed to the callback
\end{DoxyReturn}
This function removes the most recently added callback from the object {\ttfamily obj} which was triggered by the event type {\ttfamily type} and was calling the function {\ttfamily func} when triggered. If the removal is successful it will also return the data pointer that was passed to \hyperlink{group__Evas__Object__Group__Events_ga23be30ac5cdfb780f1ff82e9108ec26b}{evas\+\_\+object\+\_\+event\+\_\+callback\+\_\+add()} when the callback was added to the object. If not successful {\ttfamily N\+U\+L\+L} will be returned.

Example\+: 
\begin{DoxyCode}
1 extern Evas\_Object *object;
2 void *my\_data;
3 void up\_callback(void *data, Evas *e, Evas\_Object *obj, void *event\_info);
4 
5 my\_data = evas\_object\_event\_callback\_del(object, EVAS\_CALLBACK\_MOUSE\_UP, up\_callback);
\end{DoxyCode}
 \begin{Desc}
\item[Examples\+: ]\par
\hyperlink{evas-smart-interface_8c-example}{evas-\/smart-\/interface.\+c}, and \hyperlink{evas-smart-object_8c-example}{evas-\/smart-\/object.\+c}.\end{Desc}


References E\+I\+N\+A\+\_\+\+I\+N\+L\+I\+S\+T\+\_\+\+F\+O\+R\+E\+A\+C\+H, E\+I\+N\+A\+\_\+\+I\+N\+L\+I\+S\+T\+\_\+\+G\+E\+T, and eina\+\_\+inlist\+\_\+remove().

\hypertarget{group__Evas__Object__Group__Events_gacbb06f7468e1bb70586cb4ea64e5901e}{\index{Object Events@{Object Events}!evas\+\_\+object\+\_\+event\+\_\+callback\+\_\+del\+\_\+full@{evas\+\_\+object\+\_\+event\+\_\+callback\+\_\+del\+\_\+full}}
\index{evas\+\_\+object\+\_\+event\+\_\+callback\+\_\+del\+\_\+full@{evas\+\_\+object\+\_\+event\+\_\+callback\+\_\+del\+\_\+full}!Object Events@{Object Events}}
\subsubsection[{evas\+\_\+object\+\_\+event\+\_\+callback\+\_\+del\+\_\+full}]{\setlength{\rightskip}{0pt plus 5cm}void$\ast$ evas\+\_\+object\+\_\+event\+\_\+callback\+\_\+del\+\_\+full (
\begin{DoxyParamCaption}
\item[{{\bf Evas\+\_\+\+Object} $\ast$}]{obj, }
\item[{{\bf Evas\+\_\+\+Callback\+\_\+\+Type}}]{type, }
\item[{{\bf Evas\+\_\+\+Object\+\_\+\+Event\+\_\+\+Cb}}]{func, }
\item[{const void $\ast$}]{data}
\end{DoxyParamCaption}
)}}\label{group__Evas__Object__Group__Events_gacbb06f7468e1bb70586cb4ea64e5901e}


Delete (unregister) a callback function registered to a given Evas object event. 


\begin{DoxyParams}{Parameters}
{\em obj} & Object to remove a callback from \\
\hline
{\em type} & The type of event that was triggering the callback \\
\hline
{\em func} & The function that was to be called when the event was triggered \\
\hline
{\em data} & The data pointer that was to be passed to the callback \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
The data pointer that was to be passed to the callback
\end{DoxyReturn}
This function removes the most recently added callback from the object {\ttfamily obj}, which was triggered by the event type {\ttfamily type} and was calling the function {\ttfamily func} with data {\ttfamily data}, when triggered. If the removal is successful it will also return the data pointer that was passed to \hyperlink{group__Evas__Object__Group__Events_ga23be30ac5cdfb780f1ff82e9108ec26b}{evas\+\_\+object\+\_\+event\+\_\+callback\+\_\+add()} (that will be the same as the parameter) when the callback was added to the object. In errors, {\ttfamily N\+U\+L\+L} will be returned.

\begin{DoxyNote}{Note}
For deletion of Evas object events callbacks filtering by just type and function pointer, user \hyperlink{group__Evas__Object__Group__Events_gab271959a45d1d5348f6e78a14def44c2}{evas\+\_\+object\+\_\+event\+\_\+callback\+\_\+del()}.
\end{DoxyNote}
Example\+: 
\begin{DoxyCode}
1 extern Evas\_Object *object;
2 void *my\_data;
3 void up\_callback(void *data, Evas *e, Evas\_Object *obj, void *event\_info);
4 
5 my\_data = evas\_object\_event\_callback\_del\_full(object, EVAS\_CALLBACK\_MOUSE\_UP, up\_callback, data);
\end{DoxyCode}
 

References E\+I\+N\+A\+\_\+\+I\+N\+L\+I\+S\+T\+\_\+\+F\+O\+R\+E\+A\+C\+H, E\+I\+N\+A\+\_\+\+I\+N\+L\+I\+S\+T\+\_\+\+G\+E\+T, and eina\+\_\+inlist\+\_\+remove().



Referenced by evas\+\_\+object\+\_\+image\+\_\+native\+\_\+surface\+\_\+set().

