This example demonstrates how to connect input method framework and handle preedit and commit string from input method framework.

To input Chinese, Japanese, Korean and other complex languages, the editor should be connected with input method framework.

How to initialize and shutdown ecore imf module \begin{DoxyItemize}
\item \mbox{\hyperlink{group__Ecore__IMF__Lib__Group_gade7d780e03136d2799e6d212d188184a}{ecore\+\_\+imf\+\_\+init()}} should be called to initialize and load immodule. \item \mbox{\hyperlink{group__Ecore__IMF__Lib__Group_ga498318d0ef919461c2a84d68989bfa76}{ecore\+\_\+imf\+\_\+shutdown()}} is used for shutdowning and unloading immodule.\end{DoxyItemize}
How to create input context and register pre-\/edit and commit event handler

Each entry should have each input context to connect with input service framework. Key event is processed by input method engine. The result is notified to application through ECORE\+\_\+\+IMF\+\_\+\+CALLBACK\+\_\+\+PREEDIT\+\_\+\+CHANGED and ECORE\+\_\+\+IMF\+\_\+\+CALLBACK\+\_\+\+COMMIT event.

The full example follows.


\begin{DoxyCodeInclude}{0}
\DoxyCodeLine{}
\DoxyCodeLine{\textcolor{preprocessor}{\#include <Ecore.h>}}
\DoxyCodeLine{\textcolor{preprocessor}{\#include <\mbox{\hyperlink{Ecore__Evas_8h}{Ecore\_Evas.h}}>}}
\DoxyCodeLine{\textcolor{preprocessor}{\#include <Ecore\_IMF.h>}}
\DoxyCodeLine{\textcolor{preprocessor}{\#include <Ecore\_IMF\_Evas.h>}}
\DoxyCodeLine{\textcolor{preprocessor}{\#include <Evas.h>}}
\DoxyCodeLine{\textcolor{preprocessor}{\#include <stdio.h>}}
\DoxyCodeLine{}
\DoxyCodeLine{\textcolor{preprocessor}{\#define WIDTH 480}}
\DoxyCodeLine{\textcolor{preprocessor}{\#define HEIGHT 800}}
\DoxyCodeLine{}
\DoxyCodeLine{\textcolor{keyword}{typedef} \textcolor{keyword}{struct }\_Entry Entry;}
\DoxyCodeLine{}
\DoxyCodeLine{\textcolor{keyword}{struct }\_Entry}
\DoxyCodeLine{\{}
\DoxyCodeLine{   \mbox{\hyperlink{group__Evas__Object__Group_ga9e19e6dd1f517a0ba437c0114d3e7c97}{Evas\_Object}}           *rect;}
\DoxyCodeLine{   \mbox{\hyperlink{group__Evas__Object__Group_ga9e19e6dd1f517a0ba437c0114d3e7c97}{Evas\_Object}}           *txt\_obj;}
\DoxyCodeLine{   \mbox{\hyperlink{group__Evas__Object__Textblock__Group_ga0936b029caf5493691f7fd523f8b885c}{Evas\_Textblock\_Style}}  *txt\_style;}
\DoxyCodeLine{   \mbox{\hyperlink{struct__Efl__Text__Cursor__Handle}{Evas\_Textblock\_Cursor}} *cursor;}
\DoxyCodeLine{   \mbox{\hyperlink{struct__Efl__Text__Cursor__Handle}{Evas\_Textblock\_Cursor}} *preedit\_start;}
\DoxyCodeLine{   \mbox{\hyperlink{struct__Efl__Text__Cursor__Handle}{Evas\_Textblock\_Cursor}} *preedit\_end;}
\DoxyCodeLine{   \mbox{\hyperlink{group__Ecore__IMF__Context__Group_gab990e052e8501815371d7289dfd4a017}{Ecore\_IMF\_Context}}     *imf\_context;}
\DoxyCodeLine{   \mbox{\hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\_Bool}}              have\_preedit : 1;}
\DoxyCodeLine{\};}
\DoxyCodeLine{}
\DoxyCodeLine{\textcolor{keyword}{static} \textcolor{keywordtype}{void} \_imf\_cursor\_info\_set(Entry *en);}
\DoxyCodeLine{}
\DoxyCodeLine{\textcolor{keyword}{static} \textcolor{keywordtype}{void}}
\DoxyCodeLine{\mbox{\hyperlink{group__Elm__Gesture__Layer_gac99bfa54a39fbdd3e6ef1ed06abca820}{\_mouse\_down\_cb}}(\textcolor{keywordtype}{void} *data, \mbox{\hyperlink{group__Evas__Canvas_ga5ff87cc4ce6bc43e3b640a6d37f73043}{Evas}} *e \mbox{\hyperlink{group__Eina__Types__Group_ga82d751be730f849719ca292f9558be87}{EINA\_UNUSED}}, \mbox{\hyperlink{group__Evas__Object__Group_ga9e19e6dd1f517a0ba437c0114d3e7c97}{Evas\_Object}} *o \mbox{\hyperlink{group__Eina__Types__Group_ga82d751be730f849719ca292f9558be87}{EINA\_UNUSED}}, \textcolor{keywordtype}{void} *event\_info)}
\DoxyCodeLine{\{}
\DoxyCodeLine{   Entry *en = data;}
\DoxyCodeLine{   \mbox{\hyperlink{struct__Evas__Event__Mouse__Down}{Evas\_Event\_Mouse\_Down}} *ev = event\_info;}
\DoxyCodeLine{   \textcolor{keywordflow}{if} (!en) \textcolor{keywordflow}{return};}
\DoxyCodeLine{}
\DoxyCodeLine{   \textcolor{keywordflow}{if} (en-\/>imf\_context)}
\DoxyCodeLine{     \{}
\DoxyCodeLine{        \mbox{\hyperlink{struct__Ecore__IMF__Event__Mouse__Down}{Ecore\_IMF\_Event\_Mouse\_Down}} ecore\_ev;}
\DoxyCodeLine{        \mbox{\hyperlink{group__Ecore__IMF__Evas__Group_gae2f41c890f7e9630197bf32a8278f9a0}{ecore\_imf\_evas\_event\_mouse\_down\_wrap}}(ev, \&ecore\_ev);}
\DoxyCodeLine{        \textcolor{keywordflow}{if} (\mbox{\hyperlink{group__Ecore__IMF__Context__Group_gacf389a792142af2dc14f660c70cde7ec}{ecore\_imf\_context\_filter\_event}}(en-\/>imf\_context,}
\DoxyCodeLine{                                           \mbox{\hyperlink{group__Ecore__IMF__Context__Group_gga9dcc60537ec7b124a90da72daba4f780ab7204eadb553c0444df98bab6579b0da}{ECORE\_IMF\_EVENT\_MOUSE\_DOWN}},}
\DoxyCodeLine{                                           (\mbox{\hyperlink{union__Ecore__IMF__Event}{Ecore\_IMF\_Event}} *)\&ecore\_ev))}
\DoxyCodeLine{          \textcolor{keywordflow}{return};}
\DoxyCodeLine{}
\DoxyCodeLine{        \textcolor{comment}{// ecore\_imf\_context\_reset should be called before calculating new cursor position}}
\DoxyCodeLine{        \mbox{\hyperlink{group__Ecore__IMF__Context__Group_ga853f78bd8ab1bcedbc56c32bbc2af9aa}{ecore\_imf\_context\_reset}}(en-\/>imf\_context);}
\DoxyCodeLine{     \}}
\DoxyCodeLine{}
\DoxyCodeLine{   \textcolor{comment}{// calculate new cursor position}}
\DoxyCodeLine{\}}
\DoxyCodeLine{}
\DoxyCodeLine{\textcolor{keyword}{static} \textcolor{keywordtype}{void}}
\DoxyCodeLine{\_mouse\_up\_cb(\textcolor{keywordtype}{void} *data, \mbox{\hyperlink{group__Evas__Canvas_ga5ff87cc4ce6bc43e3b640a6d37f73043}{Evas}} *e \mbox{\hyperlink{group__Eina__Types__Group_ga82d751be730f849719ca292f9558be87}{EINA\_UNUSED}}, \mbox{\hyperlink{group__Evas__Object__Group_ga9e19e6dd1f517a0ba437c0114d3e7c97}{Evas\_Object}} *o \mbox{\hyperlink{group__Eina__Types__Group_ga82d751be730f849719ca292f9558be87}{EINA\_UNUSED}}, \textcolor{keywordtype}{void} *event\_info)}
\DoxyCodeLine{\{}
\DoxyCodeLine{   Entry *en = data;}
\DoxyCodeLine{   \mbox{\hyperlink{struct__Evas__Event__Mouse__Up}{Evas\_Event\_Mouse\_Up}} *ev = event\_info;}
\DoxyCodeLine{   \textcolor{keywordflow}{if} (!en) \textcolor{keywordflow}{return};}
\DoxyCodeLine{}
\DoxyCodeLine{   \textcolor{keywordflow}{if} (ev-\/>event\_flags \& \mbox{\hyperlink{Evas__Common_8h_a89ffbc5f4d2796994c8b07ef95ef3d1aa2370cbd360270536042b7cfd8c7fcd83}{EVAS\_EVENT\_FLAG\_ON\_HOLD}})}
\DoxyCodeLine{     \{}
\DoxyCodeLine{        \_imf\_cursor\_info\_set(en);}
\DoxyCodeLine{        \textcolor{keywordflow}{return};}
\DoxyCodeLine{     \}}
\DoxyCodeLine{}
\DoxyCodeLine{   \textcolor{keywordflow}{if} (en-\/>imf\_context)}
\DoxyCodeLine{     \{}
\DoxyCodeLine{        \mbox{\hyperlink{struct__Ecore__IMF__Event__Mouse__Up}{Ecore\_IMF\_Event\_Mouse\_Up}} ecore\_ev;}
\DoxyCodeLine{        \mbox{\hyperlink{group__Ecore__IMF__Evas__Group_gaf20488b6add20938213d8c762e258a04}{ecore\_imf\_evas\_event\_mouse\_up\_wrap}}(ev, \&ecore\_ev);}
\DoxyCodeLine{        \textcolor{keywordflow}{if} (\mbox{\hyperlink{group__Ecore__IMF__Context__Group_gacf389a792142af2dc14f660c70cde7ec}{ecore\_imf\_context\_filter\_event}}(en-\/>imf\_context,}
\DoxyCodeLine{                                           \mbox{\hyperlink{group__Ecore__IMF__Context__Group_gga9dcc60537ec7b124a90da72daba4f780a39ecdd38e486c3f62a852587cf81b0bf}{ECORE\_IMF\_EVENT\_MOUSE\_UP}},}
\DoxyCodeLine{                                           (\mbox{\hyperlink{union__Ecore__IMF__Event}{Ecore\_IMF\_Event}} *)\&ecore\_ev))}
\DoxyCodeLine{          \textcolor{keywordflow}{return};}
\DoxyCodeLine{     \}}
\DoxyCodeLine{}
\DoxyCodeLine{   \textcolor{keywordflow}{if} (en-\/>rect)}
\DoxyCodeLine{     \{}
\DoxyCodeLine{        \textcolor{keywordflow}{if} (\mbox{\hyperlink{group__Evas__Object__Group_ga783769a4390af622ee0d0f18f04b0df1}{evas\_object\_focus\_get}}(en-\/>rect))}
\DoxyCodeLine{          \{}
\DoxyCodeLine{             \textcolor{comment}{// notify cursor information}}
\DoxyCodeLine{             \_imf\_cursor\_info\_set(en);}
\DoxyCodeLine{          \}}
\DoxyCodeLine{        \textcolor{keywordflow}{else}}
\DoxyCodeLine{          \mbox{\hyperlink{group__Evas__Object__Group_gac6d65f8896ab59780553676d0017c2ef}{evas\_object\_focus\_set}}(en-\/>rect, \mbox{\hyperlink{group__Eina__Types__Group_ga05c12dacc8b4058994df842b41be85fc}{EINA\_TRUE}});}
\DoxyCodeLine{     \}}
\DoxyCodeLine{\}}
\DoxyCodeLine{}
\DoxyCodeLine{\textcolor{keyword}{static} \textcolor{keywordtype}{void}}
\DoxyCodeLine{\_entry\_focus\_in\_cb(\textcolor{keywordtype}{void} *data, \mbox{\hyperlink{group__Evas__Canvas_ga5ff87cc4ce6bc43e3b640a6d37f73043}{Evas}} *e \mbox{\hyperlink{group__Eina__Types__Group_ga82d751be730f849719ca292f9558be87}{EINA\_UNUSED}}, \mbox{\hyperlink{group__Evas__Object__Group_ga9e19e6dd1f517a0ba437c0114d3e7c97}{Evas\_Object}} *o \mbox{\hyperlink{group__Eina__Types__Group_ga82d751be730f849719ca292f9558be87}{EINA\_UNUSED}}, \textcolor{keywordtype}{void} *event\_info \mbox{\hyperlink{group__Eina__Types__Group_ga82d751be730f849719ca292f9558be87}{EINA\_UNUSED}})}
\DoxyCodeLine{\{}
\DoxyCodeLine{   Entry *en = data;}
\DoxyCodeLine{   \textcolor{keywordflow}{if} (!en) \textcolor{keywordflow}{return};}
\DoxyCodeLine{}
\DoxyCodeLine{   \textcolor{keywordflow}{if} (en-\/>imf\_context)}
\DoxyCodeLine{     \mbox{\hyperlink{group__Ecore__IMF__Context__Group_ga339824577964ce0f221cae1f4b43755d}{ecore\_imf\_context\_focus\_in}}(en-\/>imf\_context);}
\DoxyCodeLine{}
\DoxyCodeLine{   \textcolor{comment}{// notify the cursor information}}
\DoxyCodeLine{   \_imf\_cursor\_info\_set(en);}
\DoxyCodeLine{\}}
\DoxyCodeLine{}
\DoxyCodeLine{\textcolor{keyword}{static} \textcolor{keywordtype}{void}}
\DoxyCodeLine{\_entry\_focus\_out\_cb(\textcolor{keywordtype}{void} *data, \mbox{\hyperlink{group__Evas__Canvas_ga5ff87cc4ce6bc43e3b640a6d37f73043}{Evas}} *e \mbox{\hyperlink{group__Eina__Types__Group_ga82d751be730f849719ca292f9558be87}{EINA\_UNUSED}}, \mbox{\hyperlink{group__Evas__Object__Group_ga9e19e6dd1f517a0ba437c0114d3e7c97}{Evas\_Object}} *o \mbox{\hyperlink{group__Eina__Types__Group_ga82d751be730f849719ca292f9558be87}{EINA\_UNUSED}}, \textcolor{keywordtype}{void} *event\_info \mbox{\hyperlink{group__Eina__Types__Group_ga82d751be730f849719ca292f9558be87}{EINA\_UNUSED}})}
\DoxyCodeLine{\{}
\DoxyCodeLine{   Entry *en = data;}
\DoxyCodeLine{   \textcolor{keywordflow}{if} (!en) \textcolor{keywordflow}{return};}
\DoxyCodeLine{}
\DoxyCodeLine{   \textcolor{keywordflow}{if} (en-\/>imf\_context)}
\DoxyCodeLine{     \{}
\DoxyCodeLine{        \textcolor{comment}{// ecore\_imf\_context\_reset should be called for flushing the preedit string in focus-\/out event handler}}
\DoxyCodeLine{        \mbox{\hyperlink{group__Ecore__IMF__Context__Group_ga853f78bd8ab1bcedbc56c32bbc2af9aa}{ecore\_imf\_context\_reset}}(en-\/>imf\_context);}
\DoxyCodeLine{        \mbox{\hyperlink{group__Ecore__IMF__Context__Group_gafee39309634c1663f7b8ea910c75bcbd}{ecore\_imf\_context\_focus\_out}}(en-\/>imf\_context);}
\DoxyCodeLine{     \}}
\DoxyCodeLine{\}}
\DoxyCodeLine{}
\DoxyCodeLine{\textcolor{keyword}{static} \textcolor{keywordtype}{void}}
\DoxyCodeLine{\_canvas\_focus\_in\_cb(\textcolor{keywordtype}{void} *data \mbox{\hyperlink{group__Eina__Types__Group_ga82d751be730f849719ca292f9558be87}{EINA\_UNUSED}}, \mbox{\hyperlink{group__Evas__Canvas_ga5ff87cc4ce6bc43e3b640a6d37f73043}{Evas}} *e, \textcolor{keywordtype}{void} *event\_info \mbox{\hyperlink{group__Eina__Types__Group_ga82d751be730f849719ca292f9558be87}{EINA\_UNUSED}})}
\DoxyCodeLine{\{}
\DoxyCodeLine{   Entry *en;}
\DoxyCodeLine{   \mbox{\hyperlink{group__Evas__Object__Group_ga9e19e6dd1f517a0ba437c0114d3e7c97}{Evas\_Object}} *obj = \mbox{\hyperlink{group__Evas__Canvas_ga8e5a5459c8e3e7cf1f0df4b3162b2e0d}{evas\_focus\_get}}(e);}
\DoxyCodeLine{   \textcolor{keywordflow}{if} (!obj) \textcolor{keywordflow}{return};}
\DoxyCodeLine{}
\DoxyCodeLine{   en = \mbox{\hyperlink{group__Evas__Object__Group__Extras_ga3b85d805f879e71beed360650dda697b}{evas\_object\_data\_get}}(obj, \textcolor{stringliteral}{"{}Entry"{}});}
\DoxyCodeLine{   \textcolor{keywordflow}{if} (en)}
\DoxyCodeLine{     \_entry\_focus\_in\_cb(en, NULL, NULL, NULL);}
\DoxyCodeLine{\}}
\DoxyCodeLine{}
\DoxyCodeLine{\textcolor{keyword}{static} \textcolor{keywordtype}{void}}
\DoxyCodeLine{\_canvas\_focus\_out\_cb(\textcolor{keywordtype}{void} *data \mbox{\hyperlink{group__Eina__Types__Group_ga82d751be730f849719ca292f9558be87}{EINA\_UNUSED}}, \mbox{\hyperlink{group__Evas__Canvas_ga5ff87cc4ce6bc43e3b640a6d37f73043}{Evas}} *e, \textcolor{keywordtype}{void} *event\_info \mbox{\hyperlink{group__Eina__Types__Group_ga82d751be730f849719ca292f9558be87}{EINA\_UNUSED}})}
\DoxyCodeLine{\{}
\DoxyCodeLine{   Entry *en;}
\DoxyCodeLine{   \mbox{\hyperlink{group__Evas__Object__Group_ga9e19e6dd1f517a0ba437c0114d3e7c97}{Evas\_Object}} *obj = \mbox{\hyperlink{group__Evas__Canvas_ga8e5a5459c8e3e7cf1f0df4b3162b2e0d}{evas\_focus\_get}}(e);}
\DoxyCodeLine{   \textcolor{keywordflow}{if} (!obj) \textcolor{keywordflow}{return};}
\DoxyCodeLine{}
\DoxyCodeLine{   en = \mbox{\hyperlink{group__Evas__Object__Group__Extras_ga3b85d805f879e71beed360650dda697b}{evas\_object\_data\_get}}(obj, \textcolor{stringliteral}{"{}Entry"{}});}
\DoxyCodeLine{   \textcolor{keywordflow}{if} (en)}
\DoxyCodeLine{     \_entry\_focus\_out\_cb(en, NULL, NULL, NULL);}
\DoxyCodeLine{\}}
\DoxyCodeLine{}
\DoxyCodeLine{\textcolor{keyword}{static} \textcolor{keywordtype}{void}}
\DoxyCodeLine{\_imf\_cursor\_info\_set(Entry *en)}
\DoxyCodeLine{\{}
\DoxyCodeLine{   \mbox{\hyperlink{Evas__Common_8h_a2453e92182bad3b0e0d84e5aff433b07}{Evas\_Coord}} x, y, w, h;}
\DoxyCodeLine{   \mbox{\hyperlink{Evas__Common_8h_a2453e92182bad3b0e0d84e5aff433b07}{Evas\_Coord}} cx, cy, cw, ch; \textcolor{comment}{// cursor geometry}}
\DoxyCodeLine{   \textcolor{keywordtype}{int} cursor\_pos; \textcolor{comment}{// cursor position in chars (Not bytes)}}
\DoxyCodeLine{   Evas\_BiDi\_Direction dir;}
\DoxyCodeLine{}
\DoxyCodeLine{   \textcolor{keywordflow}{if} (!en) \textcolor{keywordflow}{return};}
\DoxyCodeLine{}
\DoxyCodeLine{   \textcolor{comment}{// get cursor geometry}}
\DoxyCodeLine{   \textcolor{keywordflow}{if} (en-\/>txt\_obj)}
\DoxyCodeLine{     \mbox{\hyperlink{group__Evas__Object__Group__Basic_ga6e8e78e110392480dd612df86a16b630}{evas\_object\_geometry\_get}}(en-\/>txt\_obj, \&x, \&y, \&w, \&h);}
\DoxyCodeLine{}
\DoxyCodeLine{   \textcolor{keywordflow}{if} (en-\/>cursor \&\& en-\/>imf\_context)}
\DoxyCodeLine{     \{}
\DoxyCodeLine{        \mbox{\hyperlink{group__Evas__Object__Textblock__Group_ga7b6d30ce249c1e6eeb257c27be4665a4}{evas\_textblock\_cursor\_geometry\_get}}(en-\/>cursor, \&cx, \&cy, \&cw, \&ch, \&dir, \mbox{\hyperlink{group__Evas__Object__Textblock__Group_ggaba40faa1b6a6dcd55193db1e3ca31476a12f34cc9432856994ebbb113c78b59f7}{EVAS\_TEXTBLOCK\_CURSOR\_BEFORE}});}
\DoxyCodeLine{}
\DoxyCodeLine{        \textcolor{comment}{// get cursor position}}
\DoxyCodeLine{        cursor\_pos = \mbox{\hyperlink{group__Evas__Object__Textblock__Group_gaf498e11fca892cefa9766a00f79f3435}{evas\_textblock\_cursor\_pos\_get}}(en-\/>cursor);}
\DoxyCodeLine{}
\DoxyCodeLine{        \mbox{\hyperlink{group__Ecore__IMF__Context__Group_gaf66f299c16e705570b296d6f85670177}{ecore\_imf\_context\_cursor\_position\_set}}(en-\/>imf\_context, cursor\_pos);}
\DoxyCodeLine{        \mbox{\hyperlink{group__Ecore__IMF__Context__Group_ga8272537bac2b469bfb50bb39397c3a3f}{ecore\_imf\_context\_cursor\_location\_set}}(en-\/>imf\_context, x + cx, y + cy, cw, ch);}
\DoxyCodeLine{        \mbox{\hyperlink{group__Ecore__IMF__Context__Group_gae43b38407a28322748a44de22a122abd}{ecore\_imf\_context\_bidi\_direction\_set}}(en-\/>imf\_context, (\mbox{\hyperlink{group__Ecore__IMF__Context__Group_gab5bba399a46704b755971577b0e462d3}{Ecore\_IMF\_BiDi\_Direction}})dir);}
\DoxyCodeLine{     \}}
\DoxyCodeLine{\}}
\DoxyCodeLine{}
\DoxyCodeLine{\textcolor{keyword}{static} \textcolor{keywordtype}{void}}
\DoxyCodeLine{\_preedit\_del(Entry *en)}
\DoxyCodeLine{\{}
\DoxyCodeLine{   \textcolor{keywordflow}{if} (!en || !en-\/>have\_preedit) \textcolor{keywordflow}{return};}
\DoxyCodeLine{   \textcolor{keywordflow}{if} (!en-\/>preedit\_start || !en-\/>preedit\_end) \textcolor{keywordflow}{return};}
\DoxyCodeLine{   \textcolor{keywordflow}{if} (!\mbox{\hyperlink{group__Evas__Object__Textblock__Group_ga117f38a5ad56d9a9390278eaad85c038}{evas\_textblock\_cursor\_compare}}(en-\/>preedit\_start, en-\/>preedit\_end)) \textcolor{keywordflow}{return};}
\DoxyCodeLine{}
\DoxyCodeLine{   \textcolor{comment}{// delete the preedit characters}}
\DoxyCodeLine{   \mbox{\hyperlink{group__Evas__Object__Textblock__Group_gab3b7bdbafaae674784f63a04437e6b02}{evas\_textblock\_cursor\_range\_delete}}(en-\/>preedit\_start, en-\/>preedit\_end);}
\DoxyCodeLine{\}}
\DoxyCodeLine{}
\DoxyCodeLine{\textcolor{keyword}{static} \textcolor{keywordtype}{void}}
\DoxyCodeLine{\_preedit\_clear(Entry *en)}
\DoxyCodeLine{\{}
\DoxyCodeLine{   \textcolor{keywordflow}{if} (en-\/>preedit\_start)}
\DoxyCodeLine{     \{}
\DoxyCodeLine{        \mbox{\hyperlink{group__Evas__Object__Textblock__Group_ga8ba9bc5084973da312e1d091014d53a0}{evas\_textblock\_cursor\_free}}(en-\/>preedit\_start);}
\DoxyCodeLine{        en-\/>preedit\_start = NULL;}
\DoxyCodeLine{     \}}
\DoxyCodeLine{}
\DoxyCodeLine{   \textcolor{keywordflow}{if} (en-\/>preedit\_end)}
\DoxyCodeLine{     \{}
\DoxyCodeLine{        \mbox{\hyperlink{group__Evas__Object__Textblock__Group_ga8ba9bc5084973da312e1d091014d53a0}{evas\_textblock\_cursor\_free}}(en-\/>preedit\_end);}
\DoxyCodeLine{        en-\/>preedit\_end = NULL;}
\DoxyCodeLine{     \}}
\DoxyCodeLine{}
\DoxyCodeLine{   en-\/>have\_preedit = \mbox{\hyperlink{group__Eina__Types__Group_ga1feb115f8e9913e806e090d9bd5a7301}{EINA\_FALSE}};}
\DoxyCodeLine{\}}
\DoxyCodeLine{}
\DoxyCodeLine{\textcolor{keyword}{static} \mbox{\hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\_Bool}}}
\DoxyCodeLine{\_ecore\_imf\_retrieve\_surrounding\_cb(\textcolor{keywordtype}{void} *data, \mbox{\hyperlink{group__Ecore__IMF__Context__Group_gab990e052e8501815371d7289dfd4a017}{Ecore\_IMF\_Context}} *ctx \mbox{\hyperlink{group__Eina__Types__Group_ga82d751be730f849719ca292f9558be87}{EINA\_UNUSED}}, \textcolor{keywordtype}{char} **text, \textcolor{keywordtype}{int} *cursor\_pos)}
\DoxyCodeLine{\{}
\DoxyCodeLine{   \textcolor{comment}{// This callback will be called when the Input Method Context module requests the surrounding context.}}
\DoxyCodeLine{   Entry *en = data;}
\DoxyCodeLine{   \textcolor{keyword}{const} \textcolor{keywordtype}{char} *str;}
\DoxyCodeLine{}
\DoxyCodeLine{   \textcolor{keywordflow}{if} (!en) \textcolor{keywordflow}{return} \mbox{\hyperlink{group__Eina__Types__Group_ga1feb115f8e9913e806e090d9bd5a7301}{EINA\_FALSE}};}
\DoxyCodeLine{}
\DoxyCodeLine{   str = \mbox{\hyperlink{group__Evas__Object__Textblock__Group_ga04f6254dc77e17edaa47f75b9a2139ea}{evas\_object\_textblock\_text\_markup\_get}}(en-\/>txt\_obj);}
\DoxyCodeLine{}
\DoxyCodeLine{   \textcolor{keywordflow}{if} (text)}
\DoxyCodeLine{     *text = str ? strdup(str) : strdup(\textcolor{stringliteral}{"{}"{}});}
\DoxyCodeLine{}
\DoxyCodeLine{   \textcolor{comment}{// get the current position of cursor}}
\DoxyCodeLine{   \textcolor{keywordflow}{if} (cursor\_pos \&\& en-\/>cursor)}
\DoxyCodeLine{     *cursor\_pos = \mbox{\hyperlink{group__Evas__Object__Textblock__Group_gaf498e11fca892cefa9766a00f79f3435}{evas\_textblock\_cursor\_pos\_get}}(en-\/>cursor);}
\DoxyCodeLine{}
\DoxyCodeLine{   \textcolor{keywordflow}{return} \mbox{\hyperlink{group__Eina__Types__Group_ga05c12dacc8b4058994df842b41be85fc}{EINA\_TRUE}};}
\DoxyCodeLine{\}}
\DoxyCodeLine{}
\DoxyCodeLine{\textcolor{keyword}{static} \textcolor{keywordtype}{void}}
\DoxyCodeLine{\_ecore\_imf\_event\_delete\_surrounding\_cb(\textcolor{keywordtype}{void} *data, \mbox{\hyperlink{group__Ecore__IMF__Context__Group_gab990e052e8501815371d7289dfd4a017}{Ecore\_IMF\_Context}} *ctx \mbox{\hyperlink{group__Eina__Types__Group_ga82d751be730f849719ca292f9558be87}{EINA\_UNUSED}}, \textcolor{keywordtype}{void} *event\_info)}
\DoxyCodeLine{\{}
\DoxyCodeLine{   \textcolor{comment}{// called when the input method needs to delete all or part of the context surrounding the cursor}}
\DoxyCodeLine{   Entry *en = data;}
\DoxyCodeLine{   \mbox{\hyperlink{struct__Ecore__IMF__Event__Delete__Surrounding}{Ecore\_IMF\_Event\_Delete\_Surrounding}} *ev = event\_info;}
\DoxyCodeLine{   \mbox{\hyperlink{struct__Efl__Text__Cursor__Handle}{Evas\_Textblock\_Cursor}} *del\_start, *del\_end;}
\DoxyCodeLine{   \textcolor{keywordtype}{int} cursor\_pos;}
\DoxyCodeLine{}
\DoxyCodeLine{   \textcolor{keywordflow}{if} ((!en) || (!ev) || (!en-\/>cursor)) \textcolor{keywordflow}{return};}
\DoxyCodeLine{}
\DoxyCodeLine{   \textcolor{comment}{// get the current cursor position}}
\DoxyCodeLine{   cursor\_pos = \mbox{\hyperlink{group__Evas__Object__Textblock__Group_gaf498e11fca892cefa9766a00f79f3435}{evas\_textblock\_cursor\_pos\_get}}(en-\/>cursor);}
\DoxyCodeLine{}
\DoxyCodeLine{   \textcolor{comment}{// start cursor position to be deleted}}
\DoxyCodeLine{   del\_start = \mbox{\hyperlink{group__Evas__Object__Textblock__Group_ga21bafffbb4dbf4d449d0d2d2cffd2d36}{evas\_object\_textblock\_cursor\_new}}(en-\/>txt\_obj);}
\DoxyCodeLine{   \mbox{\hyperlink{group__Evas__Object__Textblock__Group_ga422ab98d0e52e39a89ab93cefb15b59a}{evas\_textblock\_cursor\_pos\_set}}(del\_start, cursor\_pos + ev-\/>offset);}
\DoxyCodeLine{}
\DoxyCodeLine{   \textcolor{comment}{// end cursor position to be deleted}}
\DoxyCodeLine{   del\_end = \mbox{\hyperlink{group__Evas__Object__Textblock__Group_ga21bafffbb4dbf4d449d0d2d2cffd2d36}{evas\_object\_textblock\_cursor\_new}}(en-\/>txt\_obj);}
\DoxyCodeLine{   \mbox{\hyperlink{group__Evas__Object__Textblock__Group_ga422ab98d0e52e39a89ab93cefb15b59a}{evas\_textblock\_cursor\_pos\_set}}(del\_end, cursor\_pos + ev-\/>offset + ev-\/>n\_chars);}
\DoxyCodeLine{}
\DoxyCodeLine{   \textcolor{comment}{// implement function to delete character(s) from 'cursor\_pos+ev-\/>offset' cursor position to 'cursor\_pos + ev-\/>offset + ev-\/>n\_chars'}}
\DoxyCodeLine{   \mbox{\hyperlink{group__Evas__Object__Textblock__Group_gab3b7bdbafaae674784f63a04437e6b02}{evas\_textblock\_cursor\_range\_delete}}(del\_start, del\_end);}
\DoxyCodeLine{}
\DoxyCodeLine{   \mbox{\hyperlink{group__Evas__Object__Textblock__Group_ga8ba9bc5084973da312e1d091014d53a0}{evas\_textblock\_cursor\_free}}(del\_start);}
\DoxyCodeLine{   \mbox{\hyperlink{group__Evas__Object__Textblock__Group_ga8ba9bc5084973da312e1d091014d53a0}{evas\_textblock\_cursor\_free}}(del\_end);}
\DoxyCodeLine{\}}
\DoxyCodeLine{}
\DoxyCodeLine{\textcolor{keyword}{static} \textcolor{keywordtype}{void}}
\DoxyCodeLine{\_ecore\_imf\_event\_commit\_cb(\textcolor{keywordtype}{void} *data, \mbox{\hyperlink{group__Ecore__IMF__Context__Group_gab990e052e8501815371d7289dfd4a017}{Ecore\_IMF\_Context}} *ctx \mbox{\hyperlink{group__Eina__Types__Group_ga82d751be730f849719ca292f9558be87}{EINA\_UNUSED}}, \textcolor{keywordtype}{void} *event\_info)}
\DoxyCodeLine{\{}
\DoxyCodeLine{   Entry *en = data;}
\DoxyCodeLine{   \textcolor{keywordtype}{char} *commit\_str = (\textcolor{keywordtype}{char} *)event\_info;}
\DoxyCodeLine{   \textcolor{keywordflow}{if} (!en) \textcolor{keywordflow}{return};}
\DoxyCodeLine{}
\DoxyCodeLine{   \textcolor{comment}{// delete preedit string}}
\DoxyCodeLine{   \_preedit\_del(en);}
\DoxyCodeLine{   \_preedit\_clear(en);}
\DoxyCodeLine{}
\DoxyCodeLine{   printf(\textcolor{stringliteral}{"{}commit string : \%s\(\backslash\)n"{}}, commit\_str);}
\DoxyCodeLine{}
\DoxyCodeLine{   \textcolor{comment}{// insert the commit string in the editor}}
\DoxyCodeLine{   \textcolor{keywordflow}{if} (en-\/>cursor \&\& commit\_str)}
\DoxyCodeLine{     \mbox{\hyperlink{group__Evas__Object__Textblock__Group_gaba75dbe27cc6be6b4eedfec118167ffa}{evas\_object\_textblock\_text\_markup\_prepend}}(en-\/>cursor, commit\_str);}
\DoxyCodeLine{}
\DoxyCodeLine{   \textcolor{comment}{// notify the cursor information}}
\DoxyCodeLine{   \_imf\_cursor\_info\_set(en);}
\DoxyCodeLine{}
\DoxyCodeLine{   \textcolor{keywordflow}{return};}
\DoxyCodeLine{\}}
\DoxyCodeLine{}
\DoxyCodeLine{\textcolor{keyword}{static} \textcolor{keywordtype}{void}}
\DoxyCodeLine{\_ecore\_imf\_event\_preedit\_changed\_cb(\textcolor{keywordtype}{void} *data, \mbox{\hyperlink{group__Ecore__IMF__Context__Group_gab990e052e8501815371d7289dfd4a017}{Ecore\_IMF\_Context}} *ctx, \textcolor{keywordtype}{void} *event\_info \mbox{\hyperlink{group__Eina__Types__Group_ga82d751be730f849719ca292f9558be87}{EINA\_UNUSED}})}
\DoxyCodeLine{\{}
\DoxyCodeLine{   \textcolor{comment}{// example how to get preedit string}}
\DoxyCodeLine{   Entry *en = data;}
\DoxyCodeLine{   \textcolor{keywordtype}{char} *preedit\_string;}
\DoxyCodeLine{   \textcolor{keywordtype}{int} cursor\_pos;}
\DoxyCodeLine{   \mbox{\hyperlink{struct__Eina__List}{Eina\_List}} *attrs = NULL;}
\DoxyCodeLine{   \mbox{\hyperlink{struct__Eina__List}{Eina\_List}} *l;}
\DoxyCodeLine{   \mbox{\hyperlink{struct__Ecore__IMF__Preedit__Attr}{Ecore\_IMF\_Preedit\_Attr}} *attr;}
\DoxyCodeLine{   \mbox{\hyperlink{group__Ecore__IMF__Context__Group_gab990e052e8501815371d7289dfd4a017}{Ecore\_IMF\_Context}} *imf\_context = ctx;}
\DoxyCodeLine{   \textcolor{keywordtype}{int} preedit\_start\_pos, preedit\_end\_pos;}
\DoxyCodeLine{   \textcolor{keywordtype}{int} i;}
\DoxyCodeLine{   \mbox{\hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\_Bool}} preedit\_end\_state = \mbox{\hyperlink{group__Eina__Types__Group_ga1feb115f8e9913e806e090d9bd5a7301}{EINA\_FALSE}};}
\DoxyCodeLine{}
\DoxyCodeLine{   \textcolor{keywordflow}{if} (!en || !en-\/>cursor) \textcolor{keywordflow}{return};}
\DoxyCodeLine{}
\DoxyCodeLine{   \textcolor{comment}{// get preedit string and attributes}}
\DoxyCodeLine{   \mbox{\hyperlink{group__Ecore__IMF__Context__Group_ga5e3fb2324a5f20cb761e19d4fbc9a9a5}{ecore\_imf\_context\_preedit\_string\_with\_attributes\_get}}(imf\_context, \&preedit\_string, \&attrs, \&cursor\_pos);}
\DoxyCodeLine{   printf(\textcolor{stringliteral}{"{}preedit string : \%s\(\backslash\)n"{}}, preedit\_string);}
\DoxyCodeLine{}
\DoxyCodeLine{   \textcolor{keywordflow}{if} (!strcmp(preedit\_string, \textcolor{stringliteral}{"{}"{}}))}
\DoxyCodeLine{     preedit\_end\_state = \mbox{\hyperlink{group__Eina__Types__Group_ga05c12dacc8b4058994df842b41be85fc}{EINA\_TRUE}};}
\DoxyCodeLine{}
\DoxyCodeLine{   \textcolor{comment}{// delete preedit}}
\DoxyCodeLine{   \_preedit\_del(en);}
\DoxyCodeLine{}
\DoxyCodeLine{   preedit\_start\_pos = \mbox{\hyperlink{group__Evas__Object__Textblock__Group_gaf498e11fca892cefa9766a00f79f3435}{evas\_textblock\_cursor\_pos\_get}}(en-\/>cursor);}
\DoxyCodeLine{}
\DoxyCodeLine{   \textcolor{comment}{// insert preedit character(s)}}
\DoxyCodeLine{   \textcolor{keywordflow}{if} (strlen(preedit\_string) > 0)}
\DoxyCodeLine{     \{}
\DoxyCodeLine{        \textcolor{keywordflow}{if} (attrs)}
\DoxyCodeLine{          \{}
\DoxyCodeLine{             \mbox{\hyperlink{group__Eina__List__Group_gac6efafc19f526d916cdb9757240a8773}{EINA\_LIST\_FOREACH}}(attrs, l, attr)}
\DoxyCodeLine{               \{}
\DoxyCodeLine{                  \textcolor{keywordflow}{if} (attr-\/>\mbox{\hyperlink{struct__Ecore__IMF__Preedit__Attr_ab43d4e86ad2d2fcc5bdc7b534ec2e933}{preedit\_type}} == \mbox{\hyperlink{group__Ecore__IMF__Context__Group_ggacd213f9a030646e4f50072426443849aa2c9d33fd5683078e23148cd923915ef6}{ECORE\_IMF\_PREEDIT\_TYPE\_SUB1}}) \textcolor{comment}{// style type}}
\DoxyCodeLine{                    \{}
\DoxyCodeLine{                       \textcolor{comment}{// apply appropriate style such as underline}}
\DoxyCodeLine{                    \}}
\DoxyCodeLine{                  \textcolor{keywordflow}{else} \textcolor{keywordflow}{if} (attr-\/>\mbox{\hyperlink{struct__Ecore__IMF__Preedit__Attr_ab43d4e86ad2d2fcc5bdc7b534ec2e933}{preedit\_type}} == \mbox{\hyperlink{group__Ecore__IMF__Context__Group_ggacd213f9a030646e4f50072426443849aa68ce0b7eb48488808a57096bd28e8723}{ECORE\_IMF\_PREEDIT\_TYPE\_SUB2}} || attr-\/>\mbox{\hyperlink{struct__Ecore__IMF__Preedit__Attr_ab43d4e86ad2d2fcc5bdc7b534ec2e933}{preedit\_type}} == \mbox{\hyperlink{group__Ecore__IMF__Context__Group_ggacd213f9a030646e4f50072426443849aaa95fced9f4039f6c3c8d340754d451f2}{ECORE\_IMF\_PREEDIT\_TYPE\_SUB3}})}
\DoxyCodeLine{                    \{}
\DoxyCodeLine{                       \textcolor{comment}{// apply appropriate style such as underline}}
\DoxyCodeLine{                    \}}
\DoxyCodeLine{               \}}
\DoxyCodeLine{}
\DoxyCodeLine{             \textcolor{comment}{// insert code to display preedit string in your editor}}
\DoxyCodeLine{             \mbox{\hyperlink{group__Evas__Object__Textblock__Group_gaba75dbe27cc6be6b4eedfec118167ffa}{evas\_object\_textblock\_text\_markup\_prepend}}(en-\/>cursor, preedit\_string);}
\DoxyCodeLine{          \}}
\DoxyCodeLine{     \}}
\DoxyCodeLine{}
\DoxyCodeLine{   \textcolor{keywordflow}{if} (!preedit\_end\_state)}
\DoxyCodeLine{     \{}
\DoxyCodeLine{        \textcolor{comment}{// set preedit start cursor}}
\DoxyCodeLine{        \textcolor{keywordflow}{if} (!en-\/>preedit\_start)}
\DoxyCodeLine{          en-\/>preedit\_start = \mbox{\hyperlink{group__Evas__Object__Textblock__Group_ga21bafffbb4dbf4d449d0d2d2cffd2d36}{evas\_object\_textblock\_cursor\_new}}(en-\/>txt\_obj);}
\DoxyCodeLine{        \mbox{\hyperlink{group__Evas__Object__Textblock__Group_gae7748f9a989d1a6e31bfc5760586b9d2}{evas\_textblock\_cursor\_copy}}(en-\/>cursor, en-\/>preedit\_start);}
\DoxyCodeLine{}
\DoxyCodeLine{        \textcolor{comment}{// set preedit end cursor}}
\DoxyCodeLine{        \textcolor{keywordflow}{if} (!en-\/>preedit\_end)}
\DoxyCodeLine{          en-\/>preedit\_end = \mbox{\hyperlink{group__Evas__Object__Textblock__Group_ga21bafffbb4dbf4d449d0d2d2cffd2d36}{evas\_object\_textblock\_cursor\_new}}(en-\/>txt\_obj);}
\DoxyCodeLine{        \mbox{\hyperlink{group__Evas__Object__Textblock__Group_gae7748f9a989d1a6e31bfc5760586b9d2}{evas\_textblock\_cursor\_copy}}(en-\/>cursor, en-\/>preedit\_end);}
\DoxyCodeLine{}
\DoxyCodeLine{        preedit\_end\_pos = \mbox{\hyperlink{group__Evas__Object__Textblock__Group_gaf498e11fca892cefa9766a00f79f3435}{evas\_textblock\_cursor\_pos\_get}}(en-\/>cursor);}
\DoxyCodeLine{}
\DoxyCodeLine{        \textcolor{keywordflow}{for} (i = 0; i < (preedit\_end\_pos -\/ preedit\_start\_pos); i++)}
\DoxyCodeLine{          \{}
\DoxyCodeLine{             \mbox{\hyperlink{group__Evas__Object__Textblock__Group_gaaaaf13199dc1fd21b5a1b4ba217ed823}{evas\_textblock\_cursor\_char\_prev}}(en-\/>preedit\_start);}
\DoxyCodeLine{          \}}
\DoxyCodeLine{}
\DoxyCodeLine{        en-\/>have\_preedit = \mbox{\hyperlink{group__Eina__Types__Group_ga05c12dacc8b4058994df842b41be85fc}{EINA\_TRUE}};}
\DoxyCodeLine{}
\DoxyCodeLine{        \textcolor{comment}{// set cursor position}}
\DoxyCodeLine{        \mbox{\hyperlink{group__Evas__Object__Textblock__Group_ga422ab98d0e52e39a89ab93cefb15b59a}{evas\_textblock\_cursor\_pos\_set}}(en-\/>cursor, preedit\_start\_pos + cursor\_pos);}
\DoxyCodeLine{     \}}
\DoxyCodeLine{}
\DoxyCodeLine{   \textcolor{comment}{// notify the cursor information}}
\DoxyCodeLine{   \_imf\_cursor\_info\_set(en);}
\DoxyCodeLine{}
\DoxyCodeLine{   \mbox{\hyperlink{group__Eina__List__Group_gae27a2c686a0a11693f9b06957c9bba83}{EINA\_LIST\_FREE}}(attrs, attr)}
\DoxyCodeLine{     free(attr);}
\DoxyCodeLine{}
\DoxyCodeLine{   free(preedit\_string);}
\DoxyCodeLine{\}}
\DoxyCodeLine{}
\DoxyCodeLine{\textcolor{keyword}{static} \textcolor{keywordtype}{void}}
\DoxyCodeLine{\_key\_down\_cb(\textcolor{keywordtype}{void} *data, \mbox{\hyperlink{group__Evas__Canvas_ga5ff87cc4ce6bc43e3b640a6d37f73043}{Evas}} *e \mbox{\hyperlink{group__Eina__Types__Group_ga82d751be730f849719ca292f9558be87}{EINA\_UNUSED}}, \mbox{\hyperlink{group__Evas__Object__Group_ga9e19e6dd1f517a0ba437c0114d3e7c97}{Evas\_Object}} *o \mbox{\hyperlink{group__Eina__Types__Group_ga82d751be730f849719ca292f9558be87}{EINA\_UNUSED}}, \textcolor{keywordtype}{void} *event\_info)}
\DoxyCodeLine{\{}
\DoxyCodeLine{   Entry *en = data;}
\DoxyCodeLine{   \mbox{\hyperlink{struct__Evas__Event__Key__Down}{Evas\_Event\_Key\_Down}} *ev = event\_info;}
\DoxyCodeLine{   \mbox{\hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\_Bool}} control, alt, shift;}
\DoxyCodeLine{   \textcolor{keywordflow}{if} ((!en) || (!ev-\/>\mbox{\hyperlink{struct__Evas__Event__Key__Down_a70473bba88a1afaee180a54150513824}{key}}) || (!en-\/>cursor)) \textcolor{keywordflow}{return};}
\DoxyCodeLine{}
\DoxyCodeLine{   \textcolor{keywordflow}{if} (en-\/>imf\_context)}
\DoxyCodeLine{     \{}
\DoxyCodeLine{        \mbox{\hyperlink{struct__Ecore__IMF__Event__Key__Down}{Ecore\_IMF\_Event\_Key\_Down}} ecore\_ev;}
\DoxyCodeLine{        \mbox{\hyperlink{group__Ecore__IMF__Evas__Group_gad6b3b7cbb61105c492be1d816b6bc899}{ecore\_imf\_evas\_event\_key\_down\_wrap}}(ev, \&ecore\_ev);}
\DoxyCodeLine{        \textcolor{keywordflow}{if} (\mbox{\hyperlink{group__Ecore__IMF__Context__Group_gacf389a792142af2dc14f660c70cde7ec}{ecore\_imf\_context\_filter\_event}}(en-\/>imf\_context,}
\DoxyCodeLine{                                           \mbox{\hyperlink{group__Ecore__IMF__Context__Group_gga9dcc60537ec7b124a90da72daba4f780afc7b57a1b56d6310705e8dfdc8a782d6}{ECORE\_IMF\_EVENT\_KEY\_DOWN}},}
\DoxyCodeLine{                                           (\mbox{\hyperlink{union__Ecore__IMF__Event}{Ecore\_IMF\_Event}} *)\&ecore\_ev))}
\DoxyCodeLine{          \textcolor{keywordflow}{return};}
\DoxyCodeLine{     \}}
\DoxyCodeLine{}
\DoxyCodeLine{   control = \mbox{\hyperlink{group__Evas__Keys_ga3911de57560f663a7330b00dcfeb6e07}{evas\_key\_modifier\_is\_set}}(ev-\/>\mbox{\hyperlink{struct__Evas__Event__Key__Down_a065e345f013dc4099eb180ce4833377f}{modifiers}}, \textcolor{stringliteral}{"{}Control"{}});}
\DoxyCodeLine{   alt = \mbox{\hyperlink{group__Evas__Keys_ga3911de57560f663a7330b00dcfeb6e07}{evas\_key\_modifier\_is\_set}}(ev-\/>\mbox{\hyperlink{struct__Evas__Event__Key__Down_a065e345f013dc4099eb180ce4833377f}{modifiers}}, \textcolor{stringliteral}{"{}Alt"{}});}
\DoxyCodeLine{   shift = \mbox{\hyperlink{group__Evas__Keys_ga3911de57560f663a7330b00dcfeb6e07}{evas\_key\_modifier\_is\_set}}(ev-\/>\mbox{\hyperlink{struct__Evas__Event__Key__Down_a065e345f013dc4099eb180ce4833377f}{modifiers}}, \textcolor{stringliteral}{"{}Shift"{}});}
\DoxyCodeLine{   (void)alt;}
\DoxyCodeLine{   (void)shift;}
\DoxyCodeLine{}
\DoxyCodeLine{   \textcolor{keywordflow}{if} (!strcmp(ev-\/>\mbox{\hyperlink{struct__Evas__Event__Key__Down_a70473bba88a1afaee180a54150513824}{key}}, \textcolor{stringliteral}{"{}BackSpace"{}}))}
\DoxyCodeLine{     \{}
\DoxyCodeLine{        \textcolor{keywordflow}{if} (\mbox{\hyperlink{group__Evas__Object__Textblock__Group_gaaaaf13199dc1fd21b5a1b4ba217ed823}{evas\_textblock\_cursor\_char\_prev}}(en-\/>cursor))}
\DoxyCodeLine{          \{}
\DoxyCodeLine{             \mbox{\hyperlink{group__Evas__Object__Textblock__Group_gaf8b581754d737517b24bb4da782f8a14}{evas\_textblock\_cursor\_char\_delete}}(en-\/>cursor);}
\DoxyCodeLine{             \textcolor{comment}{// notify the cursor information}}
\DoxyCodeLine{             \_imf\_cursor\_info\_set(en);}
\DoxyCodeLine{          \}}
\DoxyCodeLine{         \textcolor{keywordflow}{return};}
\DoxyCodeLine{     \}}
\DoxyCodeLine{   \textcolor{keywordflow}{else} \textcolor{keywordflow}{if} (!strcmp(ev-\/>\mbox{\hyperlink{struct__Evas__Event__Key__Down_a70473bba88a1afaee180a54150513824}{key}}, \textcolor{stringliteral}{"{}Delete"{}}) ||}
\DoxyCodeLine{            (!strcmp(ev-\/>\mbox{\hyperlink{struct__Evas__Event__Key__Down_a70473bba88a1afaee180a54150513824}{key}}, \textcolor{stringliteral}{"{}KP\_Delete"{}}) \&\& !ev-\/>\mbox{\hyperlink{struct__Evas__Event__Key__Down_a1b64741ca0b90a5119463f320ebeea00}{string}}))}
\DoxyCodeLine{     \{}
\DoxyCodeLine{        \textcolor{comment}{// FILLME}}
\DoxyCodeLine{     \}}
\DoxyCodeLine{   \textcolor{keywordflow}{else} \textcolor{keywordflow}{if} ((control) \&\& (!strcmp(ev-\/>\mbox{\hyperlink{struct__Evas__Event__Key__Down_a70473bba88a1afaee180a54150513824}{key}}, \textcolor{stringliteral}{"{}v"{}})))}
\DoxyCodeLine{     \{}
\DoxyCodeLine{        \textcolor{comment}{// ctrl + v}}
\DoxyCodeLine{        \textcolor{comment}{// FILLME}}
\DoxyCodeLine{     \}}
\DoxyCodeLine{   \textcolor{keywordflow}{else} \textcolor{keywordflow}{if} ((control) \&\& (!strcmp(ev-\/>\mbox{\hyperlink{struct__Evas__Event__Key__Down_a70473bba88a1afaee180a54150513824}{key}}, \textcolor{stringliteral}{"{}a"{}})))}
\DoxyCodeLine{     \{}
\DoxyCodeLine{        \textcolor{comment}{// ctrl + a}}
\DoxyCodeLine{        \textcolor{comment}{// FILLME}}
\DoxyCodeLine{     \}}
\DoxyCodeLine{   \textcolor{keywordflow}{else} \textcolor{keywordflow}{if} ((control) \&\& (!strcmp(ev-\/>\mbox{\hyperlink{struct__Evas__Event__Key__Down_a70473bba88a1afaee180a54150513824}{key}}, \textcolor{stringliteral}{"{}A"{}})))}
\DoxyCodeLine{     \{}
\DoxyCodeLine{        \textcolor{comment}{// ctrl + A}}
\DoxyCodeLine{        \textcolor{comment}{// FILLME}}
\DoxyCodeLine{     \}}
\DoxyCodeLine{   \textcolor{keywordflow}{else} \textcolor{keywordflow}{if} ((control) \&\& ((!strcmp(ev-\/>\mbox{\hyperlink{struct__Evas__Event__Key__Down_a70473bba88a1afaee180a54150513824}{key}}, \textcolor{stringliteral}{"{}c"{}}) || (!strcmp(ev-\/>\mbox{\hyperlink{struct__Evas__Event__Key__Down_a70473bba88a1afaee180a54150513824}{key}}, \textcolor{stringliteral}{"{}Insert"{}})))))}
\DoxyCodeLine{     \{}
\DoxyCodeLine{        \textcolor{comment}{// ctrl + c}}
\DoxyCodeLine{        \textcolor{comment}{// FILLME}}
\DoxyCodeLine{     \}}
\DoxyCodeLine{   \textcolor{keywordflow}{else} \textcolor{keywordflow}{if} ((control) \&\& ((!strcmp(ev-\/>\mbox{\hyperlink{struct__Evas__Event__Key__Down_a70473bba88a1afaee180a54150513824}{key}}, \textcolor{stringliteral}{"{}x"{}}) || (!strcmp(ev-\/>\mbox{\hyperlink{struct__Evas__Event__Key__Down_a70473bba88a1afaee180a54150513824}{key}}, \textcolor{stringliteral}{"{}m"{}})))))}
\DoxyCodeLine{     \{}
\DoxyCodeLine{        \textcolor{comment}{// ctrl + x}}
\DoxyCodeLine{        \textcolor{comment}{// FILLME}}
\DoxyCodeLine{     \}}
\DoxyCodeLine{   \textcolor{keywordflow}{else} \textcolor{keywordflow}{if} ((control) \&\& (!strcmp(ev-\/>\mbox{\hyperlink{struct__Evas__Event__Key__Down_a70473bba88a1afaee180a54150513824}{key}}, \textcolor{stringliteral}{"{}z"{}})))}
\DoxyCodeLine{     \{}
\DoxyCodeLine{        \textcolor{comment}{// ctrl + z (undo)}}
\DoxyCodeLine{        \textcolor{comment}{// FILLME}}
\DoxyCodeLine{     \}}
\DoxyCodeLine{   \textcolor{keywordflow}{else} \textcolor{keywordflow}{if} ((control) \&\& (!strcmp(ev-\/>\mbox{\hyperlink{struct__Evas__Event__Key__Down_a70473bba88a1afaee180a54150513824}{key}}, \textcolor{stringliteral}{"{}y"{}})))}
\DoxyCodeLine{     \{}
\DoxyCodeLine{        \textcolor{comment}{// ctrl + y (redo)}}
\DoxyCodeLine{        \textcolor{comment}{// FILLME}}
\DoxyCodeLine{     \}}
\DoxyCodeLine{   \textcolor{keywordflow}{else} \textcolor{keywordflow}{if} ((!strcmp(ev-\/>\mbox{\hyperlink{struct__Evas__Event__Key__Down_a70473bba88a1afaee180a54150513824}{key}}, \textcolor{stringliteral}{"{}Return"{}})) || (!strcmp(ev-\/>\mbox{\hyperlink{struct__Evas__Event__Key__Down_a70473bba88a1afaee180a54150513824}{key}}, \textcolor{stringliteral}{"{}KP\_Enter"{}})))}
\DoxyCodeLine{     \{}
\DoxyCodeLine{        \textcolor{comment}{// FILLME}}
\DoxyCodeLine{     \}}
\DoxyCodeLine{   \textcolor{keywordflow}{else}}
\DoxyCodeLine{     \{}
\DoxyCodeLine{        \textcolor{keywordflow}{if} (ev-\/>\mbox{\hyperlink{struct__Evas__Event__Key__Down_a1b64741ca0b90a5119463f320ebeea00}{string}})}
\DoxyCodeLine{          \{}
\DoxyCodeLine{             printf(\textcolor{stringliteral}{"{}key down string : \%s\(\backslash\)n"{}}, ev-\/>\mbox{\hyperlink{struct__Evas__Event__Key__Down_a1b64741ca0b90a5119463f320ebeea00}{string}});}
\DoxyCodeLine{             \mbox{\hyperlink{group__Evas__Object__Textblock__Group_gaba75dbe27cc6be6b4eedfec118167ffa}{evas\_object\_textblock\_text\_markup\_prepend}}(en-\/>cursor, ev-\/>\mbox{\hyperlink{struct__Evas__Event__Key__Down_a1b64741ca0b90a5119463f320ebeea00}{string}});}
\DoxyCodeLine{          \}}
\DoxyCodeLine{     \}}
\DoxyCodeLine{}
\DoxyCodeLine{   \textcolor{comment}{// notify the cursor information}}
\DoxyCodeLine{   \_imf\_cursor\_info\_set(en);}
\DoxyCodeLine{\}}
\DoxyCodeLine{}
\DoxyCodeLine{\textcolor{keyword}{static} \textcolor{keywordtype}{void}}
\DoxyCodeLine{\_key\_up\_cb(\textcolor{keywordtype}{void} *data, \mbox{\hyperlink{group__Evas__Canvas_ga5ff87cc4ce6bc43e3b640a6d37f73043}{Evas}} *e \mbox{\hyperlink{group__Eina__Types__Group_ga82d751be730f849719ca292f9558be87}{EINA\_UNUSED}}, \mbox{\hyperlink{group__Evas__Object__Group_ga9e19e6dd1f517a0ba437c0114d3e7c97}{Evas\_Object}} *o \mbox{\hyperlink{group__Eina__Types__Group_ga82d751be730f849719ca292f9558be87}{EINA\_UNUSED}}, \textcolor{keywordtype}{void} *event\_info)}
\DoxyCodeLine{\{}
\DoxyCodeLine{   Entry *en = data;}
\DoxyCodeLine{   \mbox{\hyperlink{struct__Evas__Event__Key__Up}{Evas\_Event\_Key\_Up}} *ev = event\_info;}
\DoxyCodeLine{}
\DoxyCodeLine{   \textcolor{keywordflow}{if} (!en) \textcolor{keywordflow}{return};}
\DoxyCodeLine{}
\DoxyCodeLine{   \textcolor{keywordflow}{if} (en-\/>imf\_context)}
\DoxyCodeLine{     \{}
\DoxyCodeLine{        \mbox{\hyperlink{struct__Ecore__IMF__Event__Key__Up}{Ecore\_IMF\_Event\_Key\_Up}} ecore\_ev;}
\DoxyCodeLine{}
\DoxyCodeLine{        \mbox{\hyperlink{group__Ecore__IMF__Evas__Group_ga780bcd9093b281d92da4428cd721d239}{ecore\_imf\_evas\_event\_key\_up\_wrap}}(ev, \&ecore\_ev);}
\DoxyCodeLine{        \textcolor{keywordflow}{if} (\mbox{\hyperlink{group__Ecore__IMF__Context__Group_gacf389a792142af2dc14f660c70cde7ec}{ecore\_imf\_context\_filter\_event}}(en-\/>imf\_context,}
\DoxyCodeLine{                                           \mbox{\hyperlink{group__Ecore__IMF__Context__Group_gga9dcc60537ec7b124a90da72daba4f780a30b3d7d6b56fccb57ceaedb753eb170b}{ECORE\_IMF\_EVENT\_KEY\_UP}},}
\DoxyCodeLine{                                           (\mbox{\hyperlink{union__Ecore__IMF__Event}{Ecore\_IMF\_Event}} *)\&ecore\_ev))}
\DoxyCodeLine{          \textcolor{keywordflow}{return};}
\DoxyCodeLine{     \}}
\DoxyCodeLine{\}}
\DoxyCodeLine{}
\DoxyCodeLine{\textcolor{keyword}{static} \textcolor{keywordtype}{void}}
\DoxyCodeLine{create\_input\_field(\mbox{\hyperlink{group__Evas__Canvas_ga5ff87cc4ce6bc43e3b640a6d37f73043}{Evas}} *evas, Entry *en, \mbox{\hyperlink{Evas__Common_8h_a2453e92182bad3b0e0d84e5aff433b07}{Evas\_Coord}} x, \mbox{\hyperlink{Evas__Common_8h_a2453e92182bad3b0e0d84e5aff433b07}{Evas\_Coord}} y, \mbox{\hyperlink{Evas__Common_8h_a2453e92182bad3b0e0d84e5aff433b07}{Evas\_Coord}} w, \mbox{\hyperlink{Evas__Common_8h_a2453e92182bad3b0e0d84e5aff433b07}{Evas\_Coord}} h)}
\DoxyCodeLine{\{}
\DoxyCodeLine{   \textcolor{keywordflow}{if} (!en) \textcolor{keywordflow}{return};}
\DoxyCodeLine{}
\DoxyCodeLine{   en-\/>have\_preedit = \mbox{\hyperlink{group__Eina__Types__Group_ga1feb115f8e9913e806e090d9bd5a7301}{EINA\_FALSE}};}
\DoxyCodeLine{   en-\/>preedit\_start = NULL;}
\DoxyCodeLine{   en-\/>preedit\_end = NULL;}
\DoxyCodeLine{}
\DoxyCodeLine{   \textcolor{comment}{// create the background for text input field}}
\DoxyCodeLine{   en-\/>rect = \mbox{\hyperlink{group__Evas__Object__Rectangle_ga1b7a9d8e6ce240590c1734da5f3449d2}{evas\_object\_rectangle\_add}}(evas);}
\DoxyCodeLine{   \mbox{\hyperlink{group__Evas__Object__Group__Basic_gab751e9d24c16e74af6f7c08ea5b930c2}{evas\_object\_color\_set}}(en-\/>rect, 150, 150, 150, 255); \textcolor{comment}{// gray color}}
\DoxyCodeLine{   \mbox{\hyperlink{group__Evas__Object__Group_ga335c8ee6eaeaac9710656af4f8b0db91}{evas\_object\_move}}(en-\/>rect, x, y);}
\DoxyCodeLine{   \mbox{\hyperlink{group__Evas__Object__Group_gacad94595f83580c18908cb3b69b08d1a}{evas\_object\_resize}}(en-\/>rect, w, h);}
\DoxyCodeLine{   \mbox{\hyperlink{group__Evas__Object__Group__Basic_ga07208fcafd4739de606bc35fff684bf5}{evas\_object\_show}}(en-\/>rect);}
\DoxyCodeLine{   \mbox{\hyperlink{group__Evas__Object__Group__Extras_ga3061f8abe8f1a1f657d622ae0409d8e3}{evas\_object\_data\_set}}(en-\/>rect, \textcolor{stringliteral}{"{}Entry"{}}, en);}
\DoxyCodeLine{}
\DoxyCodeLine{   \textcolor{comment}{// create text object for displaying text}}
\DoxyCodeLine{   en-\/>txt\_obj = \mbox{\hyperlink{group__Evas__Object__Textblock__Group_ga54c5dce36d95b70a57765e42cb56dcf0}{evas\_object\_textblock\_add}}(evas);}
\DoxyCodeLine{   \mbox{\hyperlink{group__Evas__Object__Group__Basic_gab751e9d24c16e74af6f7c08ea5b930c2}{evas\_object\_color\_set}}(en-\/>txt\_obj, 0, 0, 0, 255);}
\DoxyCodeLine{   \mbox{\hyperlink{group__Evas__Object__Group_ga816476972852135c9d419602b0430419}{evas\_object\_pass\_events\_set}}(en-\/>txt\_obj, \mbox{\hyperlink{group__Eina__Types__Group_ga05c12dacc8b4058994df842b41be85fc}{EINA\_TRUE}});}
\DoxyCodeLine{   \mbox{\hyperlink{group__Evas__Object__Group_ga335c8ee6eaeaac9710656af4f8b0db91}{evas\_object\_move}}(en-\/>txt\_obj, x, y);}
\DoxyCodeLine{   \mbox{\hyperlink{group__Evas__Object__Group_gacad94595f83580c18908cb3b69b08d1a}{evas\_object\_resize}}(en-\/>txt\_obj, w, h);}
\DoxyCodeLine{   \mbox{\hyperlink{group__Evas__Object__Group__Basic_ga07208fcafd4739de606bc35fff684bf5}{evas\_object\_show}}(en-\/>txt\_obj);}
\DoxyCodeLine{}
\DoxyCodeLine{   \textcolor{comment}{// set style on textblock}}
\DoxyCodeLine{   \textcolor{keyword}{static} \textcolor{keyword}{const} \textcolor{keywordtype}{char} *style\_buf =}
\DoxyCodeLine{      \textcolor{stringliteral}{"{}DEFAULT='font=Sans font\_size=30 color=\#000 text\_class=entry'"{}}}
\DoxyCodeLine{      \textcolor{stringliteral}{"{}newline='br'"{}}}
\DoxyCodeLine{      \textcolor{stringliteral}{"{}b='+ font=Sans:style=bold'"{}};}
\DoxyCodeLine{   en-\/>txt\_style = \mbox{\hyperlink{group__Evas__Object__Textblock__Group_ga46ecb305fecd6f19bc091efbb114829b}{evas\_textblock\_style\_new}}();}
\DoxyCodeLine{   \mbox{\hyperlink{group__Evas__Object__Textblock__Group_gac1eba53b59d453d6be853fe311e06c7f}{evas\_textblock\_style\_set}}(en-\/>txt\_style, style\_buf);}
\DoxyCodeLine{   \mbox{\hyperlink{group__Evas__Object__Textblock__Group_ga07846fd4299edd3ee6e8b546f8ff3a31}{evas\_object\_textblock\_style\_set}}(en-\/>txt\_obj, en-\/>txt\_style);}
\DoxyCodeLine{}
\DoxyCodeLine{   \textcolor{comment}{// create cursor}}
\DoxyCodeLine{   en-\/>cursor = \mbox{\hyperlink{group__Evas__Object__Textblock__Group_ga21bafffbb4dbf4d449d0d2d2cffd2d36}{evas\_object\_textblock\_cursor\_new}}(en-\/>txt\_obj);}
\DoxyCodeLine{}
\DoxyCodeLine{   \textcolor{comment}{// create input context}}
\DoxyCodeLine{   \textcolor{keyword}{const} \textcolor{keywordtype}{char} *default\_id = \mbox{\hyperlink{group__Ecore__IMF__Context__Group_gac9fe84e98594ecbf916eca1713d31251}{ecore\_imf\_context\_default\_id\_get}}();}
\DoxyCodeLine{   \textcolor{keywordflow}{if} (!default\_id)}
\DoxyCodeLine{     \{}
\DoxyCodeLine{        fprintf(stderr, \textcolor{stringliteral}{"{}Can't create ecore\_imf\_context\(\backslash\)n"{}});}
\DoxyCodeLine{        \textcolor{keywordflow}{return};}
\DoxyCodeLine{     \}}
\DoxyCodeLine{}
\DoxyCodeLine{   en-\/>imf\_context = \mbox{\hyperlink{group__Ecore__IMF__Context__Group_ga8cb1e8dd9b4b209a4a4b0fffcaf84860}{ecore\_imf\_context\_add}}(default\_id);}
\DoxyCodeLine{   \mbox{\hyperlink{group__Ecore__IMF__Context__Group_ga96d1d3c9ca63ef47d2e66bd9fae19a8c}{ecore\_imf\_context\_client\_canvas\_set}}(en-\/>imf\_context, evas);}
\DoxyCodeLine{}
\DoxyCodeLine{   \textcolor{comment}{// register key event handler}}
\DoxyCodeLine{   \mbox{\hyperlink{group__Evas__Object__Group__Events_gac71a1038dad71da36f57b70c8ad10252}{evas\_object\_event\_callback\_add}}(en-\/>rect, \mbox{\hyperlink{Evas__Common_8h_ad64cde0da38a60e7cb7905b3ab216968a336b86bad4f145f84c155e4922335584}{EVAS\_CALLBACK\_KEY\_DOWN}}, \_key\_down\_cb, en);}
\DoxyCodeLine{   \mbox{\hyperlink{group__Evas__Object__Group__Events_gac71a1038dad71da36f57b70c8ad10252}{evas\_object\_event\_callback\_add}}(en-\/>rect, \mbox{\hyperlink{Evas__Common_8h_ad64cde0da38a60e7cb7905b3ab216968ac436b50ad665089f8a24b0fb827cec5f}{EVAS\_CALLBACK\_KEY\_UP}}, \_key\_up\_cb, en);}
\DoxyCodeLine{}
\DoxyCodeLine{   \textcolor{comment}{// register mouse event handler}}
\DoxyCodeLine{   \mbox{\hyperlink{group__Evas__Object__Group__Events_gac71a1038dad71da36f57b70c8ad10252}{evas\_object\_event\_callback\_add}}(en-\/>rect, \mbox{\hyperlink{Evas__Common_8h_ad64cde0da38a60e7cb7905b3ab216968a9fa52651ccf7e47cd3b7785fc4cf393f}{EVAS\_CALLBACK\_MOUSE\_DOWN}}, \mbox{\hyperlink{group__Elm__Gesture__Layer_gac99bfa54a39fbdd3e6ef1ed06abca820}{\_mouse\_down\_cb}}, en);}
\DoxyCodeLine{   \mbox{\hyperlink{group__Evas__Object__Group__Events_gac71a1038dad71da36f57b70c8ad10252}{evas\_object\_event\_callback\_add}}(en-\/>rect, \mbox{\hyperlink{Evas__Common_8h_ad64cde0da38a60e7cb7905b3ab216968a8c1b22c99dd0231cd9ba1fecbffffac7}{EVAS\_CALLBACK\_MOUSE\_UP}}, \_mouse\_up\_cb, en);}
\DoxyCodeLine{}
\DoxyCodeLine{   \textcolor{comment}{// register focus event handler}}
\DoxyCodeLine{   \mbox{\hyperlink{group__Evas__Object__Group__Events_gac71a1038dad71da36f57b70c8ad10252}{evas\_object\_event\_callback\_add}}(en-\/>rect, \mbox{\hyperlink{Evas__Common_8h_ad64cde0da38a60e7cb7905b3ab216968a819cf61e9d11012b7402338c2ccb7b97}{EVAS\_CALLBACK\_FOCUS\_IN}}, \_entry\_focus\_in\_cb, en);}
\DoxyCodeLine{   \mbox{\hyperlink{group__Evas__Object__Group__Events_gac71a1038dad71da36f57b70c8ad10252}{evas\_object\_event\_callback\_add}}(en-\/>rect, \mbox{\hyperlink{Evas__Common_8h_ad64cde0da38a60e7cb7905b3ab216968ab26a0af7efaa8b77e996bd438accf8d3}{EVAS\_CALLBACK\_FOCUS\_OUT}}, \_entry\_focus\_out\_cb, en);}
\DoxyCodeLine{}
\DoxyCodeLine{   \textcolor{comment}{// register retrieve surrounding callback}}
\DoxyCodeLine{   \mbox{\hyperlink{group__Ecore__IMF__Context__Group_gaf4da8dacae69d82559f808645b118df5}{ecore\_imf\_context\_retrieve\_surrounding\_callback\_set}}(en-\/>imf\_context, \_ecore\_imf\_retrieve\_surrounding\_cb, en);}
\DoxyCodeLine{}
\DoxyCodeLine{   \textcolor{comment}{// register commit event callback}}
\DoxyCodeLine{   \mbox{\hyperlink{group__Ecore__IMF__Context__Group_ga7e0ef28b49fbdc54c4657d88a139d5f5}{ecore\_imf\_context\_event\_callback\_add}}(en-\/>imf\_context, \mbox{\hyperlink{group__Ecore__IMF__Context__Group_gga06aadd645f11ba5c8d00943aa327be5aa9d05d645b3c1edde3b959fee4cd87dec}{ECORE\_IMF\_CALLBACK\_COMMIT}}, \_ecore\_imf\_event\_commit\_cb, en);}
\DoxyCodeLine{}
\DoxyCodeLine{   \textcolor{comment}{// register preedit changed event handler}}
\DoxyCodeLine{   \mbox{\hyperlink{group__Ecore__IMF__Context__Group_ga7e0ef28b49fbdc54c4657d88a139d5f5}{ecore\_imf\_context\_event\_callback\_add}}(en-\/>imf\_context, \mbox{\hyperlink{group__Ecore__IMF__Context__Group_gga06aadd645f11ba5c8d00943aa327be5aa9e354e49b61f3e67c4210cc85478975e}{ECORE\_IMF\_CALLBACK\_PREEDIT\_CHANGED}}, \_ecore\_imf\_event\_preedit\_changed\_cb, en);}
\DoxyCodeLine{}
\DoxyCodeLine{   \textcolor{comment}{// register surrounding delete event callback}}
\DoxyCodeLine{   \mbox{\hyperlink{group__Ecore__IMF__Context__Group_ga7e0ef28b49fbdc54c4657d88a139d5f5}{ecore\_imf\_context\_event\_callback\_add}}(en-\/>imf\_context, \mbox{\hyperlink{group__Ecore__IMF__Context__Group_gga06aadd645f11ba5c8d00943aa327be5aa696bc156e7efd93c83128fc2e18bfeba}{ECORE\_IMF\_CALLBACK\_DELETE\_SURROUNDING}}, \_ecore\_imf\_event\_delete\_surrounding\_cb, en);}
\DoxyCodeLine{\}}
\DoxyCodeLine{}
\DoxyCodeLine{\textcolor{keyword}{static} \textcolor{keywordtype}{void}}
\DoxyCodeLine{delete\_input\_field(Entry *en)}
\DoxyCodeLine{\{}
\DoxyCodeLine{   \textcolor{keywordflow}{if} (!en) \textcolor{keywordflow}{return};}
\DoxyCodeLine{}
\DoxyCodeLine{   \textcolor{keywordflow}{if} (en-\/>rect)}
\DoxyCodeLine{     \{}
\DoxyCodeLine{        \mbox{\hyperlink{group__Evas__Object__Group__Basic_ga9217cf1d90690dbd1960db155d1c7476}{evas\_object\_del}}(en-\/>rect);}
\DoxyCodeLine{        en-\/>rect = NULL;}
\DoxyCodeLine{     \}}
\DoxyCodeLine{}
\DoxyCodeLine{   \textcolor{keywordflow}{if} (en-\/>cursor)}
\DoxyCodeLine{     \{}
\DoxyCodeLine{        \mbox{\hyperlink{group__Evas__Object__Textblock__Group_ga8ba9bc5084973da312e1d091014d53a0}{evas\_textblock\_cursor\_free}}(en-\/>cursor);}
\DoxyCodeLine{        en-\/>cursor = NULL;}
\DoxyCodeLine{     \}}
\DoxyCodeLine{}
\DoxyCodeLine{   \textcolor{keywordflow}{if} (en-\/>preedit\_start)}
\DoxyCodeLine{     \{}
\DoxyCodeLine{        \mbox{\hyperlink{group__Evas__Object__Textblock__Group_ga8ba9bc5084973da312e1d091014d53a0}{evas\_textblock\_cursor\_free}}(en-\/>preedit\_start);}
\DoxyCodeLine{        en-\/>preedit\_start = NULL;}
\DoxyCodeLine{     \}}
\DoxyCodeLine{}
\DoxyCodeLine{   \textcolor{keywordflow}{if} (en-\/>preedit\_end)}
\DoxyCodeLine{     \{}
\DoxyCodeLine{        \mbox{\hyperlink{group__Evas__Object__Textblock__Group_ga8ba9bc5084973da312e1d091014d53a0}{evas\_textblock\_cursor\_free}}(en-\/>preedit\_end);}
\DoxyCodeLine{        en-\/>preedit\_end = NULL;}
\DoxyCodeLine{     \}}
\DoxyCodeLine{}
\DoxyCodeLine{   \textcolor{keywordflow}{if} (en-\/>txt\_obj)}
\DoxyCodeLine{     \{}
\DoxyCodeLine{        \mbox{\hyperlink{group__Evas__Object__Group__Basic_ga9217cf1d90690dbd1960db155d1c7476}{evas\_object\_del}}(en-\/>txt\_obj);}
\DoxyCodeLine{        en-\/>txt\_obj = NULL;}
\DoxyCodeLine{     \}}
\DoxyCodeLine{}
\DoxyCodeLine{   \textcolor{keywordflow}{if} (en-\/>txt\_style)}
\DoxyCodeLine{     \{}
\DoxyCodeLine{        \mbox{\hyperlink{group__Evas__Object__Textblock__Group_ga14c0b85c6b979c977f2cb213b9792da4}{evas\_textblock\_style\_free}}(en-\/>txt\_style);}
\DoxyCodeLine{        en-\/>txt\_style = NULL;}
\DoxyCodeLine{     \}}
\DoxyCodeLine{}
\DoxyCodeLine{   \textcolor{keywordflow}{if} (en-\/>imf\_context)}
\DoxyCodeLine{     \{}
\DoxyCodeLine{        \mbox{\hyperlink{group__Ecore__IMF__Context__Group_gaad34fcaedfc6ed098525d2c8928ec409}{ecore\_imf\_context\_del}}(en-\/>imf\_context);}
\DoxyCodeLine{        en-\/>imf\_context = NULL;}
\DoxyCodeLine{     \}}
\DoxyCodeLine{\}}
\DoxyCodeLine{}
\DoxyCodeLine{\textcolor{keywordtype}{int}}
\DoxyCodeLine{main(\textcolor{keywordtype}{void})}
\DoxyCodeLine{\{}
\DoxyCodeLine{   Ecore\_Evas *ee;}
\DoxyCodeLine{   \mbox{\hyperlink{group__Evas__Canvas_ga5ff87cc4ce6bc43e3b640a6d37f73043}{Evas}} *evas;}
\DoxyCodeLine{   Entry en1, en2;}
\DoxyCodeLine{}
\DoxyCodeLine{   \textcolor{keywordflow}{if} (!\mbox{\hyperlink{group__Ecore__Evas__Group_ga32ddbb6457033ad435a177eb0c4fe235}{ecore\_evas\_init}}())}
\DoxyCodeLine{     \{}
\DoxyCodeLine{        fprintf(stderr, \textcolor{stringliteral}{"{}failed to call ecore\_evas\_init()\(\backslash\)n"{}});}
\DoxyCodeLine{        \textcolor{keywordflow}{return} EXIT\_FAILURE;}
\DoxyCodeLine{     \}}
\DoxyCodeLine{}
\DoxyCodeLine{   \mbox{\hyperlink{group__Ecore__IMF__Lib__Group_gade7d780e03136d2799e6d212d188184a}{ecore\_imf\_init}}();}
\DoxyCodeLine{}
\DoxyCodeLine{   \textcolor{comment}{// create a new window, with size=WIDTHxHEIGHT and default engine}}
\DoxyCodeLine{   ee = \mbox{\hyperlink{group__Ecore__Evas__Group_gaaa770b6f2f1395f9eeb0e50e26c3f933}{ecore\_evas\_new}}(NULL, 0, 0, WIDTH, HEIGHT, NULL);}
\DoxyCodeLine{}
\DoxyCodeLine{   \textcolor{keywordflow}{if} (!ee)}
\DoxyCodeLine{     \{}
\DoxyCodeLine{        fprintf(stderr, \textcolor{stringliteral}{"{}failed to call ecore\_evas\_new\(\backslash\)n"{}});}
\DoxyCodeLine{        \textcolor{keywordflow}{return} EXIT\_FAILURE;}
\DoxyCodeLine{     \}}
\DoxyCodeLine{}
\DoxyCodeLine{   \mbox{\hyperlink{group__Ecore__Evas__Group_ga4953047ff97d4f1b0d75a7d513d4f317}{ecore\_evas\_show}}(ee);}
\DoxyCodeLine{}
\DoxyCodeLine{   \textcolor{comment}{// get the canvas off just-\/created window}}
\DoxyCodeLine{   evas = \mbox{\hyperlink{group__Ecore__Evas__Group_ga6f8d214cd55bc940d7cc62fecd8dbc06}{ecore\_evas\_get}}(ee);}
\DoxyCodeLine{   \textcolor{keywordflow}{if} (!evas)}
\DoxyCodeLine{     \{}
\DoxyCodeLine{        fprintf(stderr, \textcolor{stringliteral}{"{}failed to call ecore\_evas\_get\(\backslash\)n"{}});}
\DoxyCodeLine{        \textcolor{keywordflow}{return} EXIT\_FAILURE;}
\DoxyCodeLine{     \}}
\DoxyCodeLine{}
\DoxyCodeLine{   \textcolor{comment}{// create input field rectangle}}
\DoxyCodeLine{   \mbox{\hyperlink{group__Evas__Object__Group_ga9e19e6dd1f517a0ba437c0114d3e7c97}{Evas\_Object}} *bg = \mbox{\hyperlink{group__Evas__Object__Rectangle_ga1b7a9d8e6ce240590c1734da5f3449d2}{evas\_object\_rectangle\_add}}(evas);}
\DoxyCodeLine{   \mbox{\hyperlink{group__Evas__Object__Group_ga335c8ee6eaeaac9710656af4f8b0db91}{evas\_object\_move}}(bg, 0, 0);}
\DoxyCodeLine{   \mbox{\hyperlink{group__Evas__Object__Group_gacad94595f83580c18908cb3b69b08d1a}{evas\_object\_resize}}(bg, WIDTH, HEIGHT);}
\DoxyCodeLine{   \mbox{\hyperlink{group__Evas__Object__Group__Basic_gab751e9d24c16e74af6f7c08ea5b930c2}{evas\_object\_color\_set}}(bg, 255, 255, 255, 255);}
\DoxyCodeLine{   \mbox{\hyperlink{group__Evas__Object__Group__Basic_ga07208fcafd4739de606bc35fff684bf5}{evas\_object\_show}}(bg);}
\DoxyCodeLine{}
\DoxyCodeLine{   \textcolor{comment}{// register canvas focus in/out event handler}}
\DoxyCodeLine{   \mbox{\hyperlink{group__Evas__Canvas__Events_ga1102db15e93fcb4a4fe9e6ed58779b4f}{evas\_event\_callback\_add}}(evas, \mbox{\hyperlink{Evas__Common_8h_ad64cde0da38a60e7cb7905b3ab216968ac3a1defaffac4dcb6fe9e568919c45d1}{EVAS\_CALLBACK\_CANVAS\_FOCUS\_IN}}, \_canvas\_focus\_in\_cb, NULL);}
\DoxyCodeLine{   \mbox{\hyperlink{group__Evas__Canvas__Events_ga1102db15e93fcb4a4fe9e6ed58779b4f}{evas\_event\_callback\_add}}(evas, \mbox{\hyperlink{Evas__Common_8h_ad64cde0da38a60e7cb7905b3ab216968a444e79ca91d910d500dc26f71cf0518f}{EVAS\_CALLBACK\_CANVAS\_FOCUS\_OUT}}, \_canvas\_focus\_out\_cb, NULL);}
\DoxyCodeLine{}
\DoxyCodeLine{   memset(\&en1, 0, \textcolor{keyword}{sizeof}(en1));}
\DoxyCodeLine{   memset(\&en2, 0, \textcolor{keyword}{sizeof}(en2));}
\DoxyCodeLine{}
\DoxyCodeLine{   \textcolor{comment}{// create input field 1}}
\DoxyCodeLine{   create\_input\_field(evas, \&en1, 40, 60, 400, 80);}
\DoxyCodeLine{}
\DoxyCodeLine{   \textcolor{comment}{// create input field 2}}
\DoxyCodeLine{   create\_input\_field(evas, \&en2, 40, 180, 400, 80);}
\DoxyCodeLine{}
\DoxyCodeLine{   \textcolor{comment}{// give focus to input field 1}}
\DoxyCodeLine{   \mbox{\hyperlink{group__Evas__Object__Group_gac6d65f8896ab59780553676d0017c2ef}{evas\_object\_focus\_set}}(en1.rect, \mbox{\hyperlink{group__Eina__Types__Group_ga05c12dacc8b4058994df842b41be85fc}{EINA\_TRUE}});}
\DoxyCodeLine{}
\DoxyCodeLine{   \mbox{\hyperlink{group__Ecore__Main__Loop__Group_gaf103b9f668bb3e4fed12e52c6180132d}{ecore\_main\_loop\_begin}}(); \textcolor{comment}{// begin mainloop}}
\DoxyCodeLine{}
\DoxyCodeLine{   delete\_input\_field(\&en1); \textcolor{comment}{// delete input field 1}}
\DoxyCodeLine{   delete\_input\_field(\&en2); \textcolor{comment}{// delete input field 2}}
\DoxyCodeLine{}
\DoxyCodeLine{   \mbox{\hyperlink{group__Evas__Canvas__Events_gaff7de09d31975387c5218de13fbed50f}{evas\_event\_callback\_del\_full}}(evas, \mbox{\hyperlink{Evas__Common_8h_ad64cde0da38a60e7cb7905b3ab216968ac3a1defaffac4dcb6fe9e568919c45d1}{EVAS\_CALLBACK\_CANVAS\_FOCUS\_IN}}, \_canvas\_focus\_in\_cb, NULL);}
\DoxyCodeLine{   \mbox{\hyperlink{group__Evas__Canvas__Events_gaff7de09d31975387c5218de13fbed50f}{evas\_event\_callback\_del\_full}}(evas, \mbox{\hyperlink{Evas__Common_8h_ad64cde0da38a60e7cb7905b3ab216968a444e79ca91d910d500dc26f71cf0518f}{EVAS\_CALLBACK\_CANVAS\_FOCUS\_OUT}}, \_canvas\_focus\_out\_cb, NULL);}
\DoxyCodeLine{}
\DoxyCodeLine{   \mbox{\hyperlink{group__Ecore__Evas__Group_gad3ec61f2aa03df4d3dbfd0d311e0c8dc}{ecore\_evas\_free}}(ee);}
\DoxyCodeLine{}
\DoxyCodeLine{   \mbox{\hyperlink{group__Ecore__IMF__Lib__Group_ga498318d0ef919461c2a84d68989bfa76}{ecore\_imf\_shutdown}}();}
\DoxyCodeLine{   \mbox{\hyperlink{group__Ecore__Evas__Group_gab8fa311077f749190c9b622f672b2214}{ecore\_evas\_shutdown}}();}
\DoxyCodeLine{}
\DoxyCodeLine{   \textcolor{keywordflow}{return} 0;}
\DoxyCodeLine{\}}
\DoxyCodeLine{}

\end{DoxyCodeInclude}
 