Web\+Kit-\/\+E\+FL is independent of any particular toolkit, such as Elementary, so using it on applications requires that the programmer writes a lot of boiler plate code to manage to manage the web object.

For a full featured browser this may make sense, as the programmer will want to have full control of every aspect of the web object, since it\textquotesingle{}s the main component of the application. But other programs with simpler requirements, having to write so much code is undesired.

This is where elm\+\_\+web comes in. Its purpose is to provide a simple way for developers to embed a simple web object in their programs, simplifying the common use cases.

This is not to say that a browser can\textquotesingle{}t be made out of it, as this example shows.

We\textquotesingle{}ll be making a simple browser, consisting of one window with an U\+RL bar, a toolbar to be used for the tabs and a pager to show one page at a time.

When all tabs are closed, we\textquotesingle{}ll be showing a default view with some custom content, for which we need to get the internal {\ttfamily ewk\+\_\+view} object and use some Web\+Kit functions on it, thus we need to include the necessary headers first.

 
\begin{DoxyCodeInclude}{0}
\DoxyCodeLine{\textcolor{preprocessor}{\#include <Elementary.h>}}
\DoxyCodeLine{\textcolor{preprocessor}{\#ifdef HAVE\_ELEMENTARY\_WEB}}
\DoxyCodeLine{\textcolor{preprocessor}{\#include <EWebKit.h>}}

\end{DoxyCodeInclude}


A struct to keep track of the different widgets in use and the currently shown tab. There\textquotesingle{}s also an {\ttfamily exiting} flag, used to work around the overly simplistic way in which this example is written, just to avoid some warnings when closing the program.


\begin{DoxyCodeInclude}{0}
\DoxyCodeLine{\textcolor{keyword}{typedef} \textcolor{keyword}{struct }\_Tab\_Data Tab\_Data;}
\DoxyCodeLine{}
\DoxyCodeLine{\textcolor{keyword}{typedef} \textcolor{keyword}{struct}}
\DoxyCodeLine{\{}
\DoxyCodeLine{   \mbox{\hyperlink{group__Evas__Object__Group_ga9e19e6dd1f517a0ba437c0114d3e7c97}{Evas\_Object}} *win;}
\DoxyCodeLine{   \mbox{\hyperlink{group__Evas__Object__Group_ga9e19e6dd1f517a0ba437c0114d3e7c97}{Evas\_Object}} *main\_box;}
\DoxyCodeLine{   \mbox{\hyperlink{group__Evas__Object__Group_ga9e19e6dd1f517a0ba437c0114d3e7c97}{Evas\_Object}} *naviframe;}
\DoxyCodeLine{   \mbox{\hyperlink{group__Evas__Object__Group_ga9e19e6dd1f517a0ba437c0114d3e7c97}{Evas\_Object}} *url\_entry;}
\DoxyCodeLine{   \mbox{\hyperlink{group__Evas__Object__Group_ga9e19e6dd1f517a0ba437c0114d3e7c97}{Evas\_Object}} *default\_web;}
\DoxyCodeLine{   \mbox{\hyperlink{group__Evas__Object__Group_ga9e19e6dd1f517a0ba437c0114d3e7c97}{Evas\_Object}} *tabs;}
\DoxyCodeLine{   \mbox{\hyperlink{group__Evas__Object__Group_ga9e19e6dd1f517a0ba437c0114d3e7c97}{Evas\_Object}} *close\_tab;}
\DoxyCodeLine{   \mbox{\hyperlink{group__Evas__Object__Group_ga9e19e6dd1f517a0ba437c0114d3e7c97}{Evas\_Object}} *search\_box;}
\DoxyCodeLine{   \mbox{\hyperlink{group__Evas__Object__Group_ga9e19e6dd1f517a0ba437c0114d3e7c97}{Evas\_Object}} *search\_entry;}
\DoxyCodeLine{}
\DoxyCodeLine{   \textcolor{keyword}{struct }\{}
\DoxyCodeLine{        \mbox{\hyperlink{group__Evas__Object__Group_ga9e19e6dd1f517a0ba437c0114d3e7c97}{Evas\_Object}} *back;}
\DoxyCodeLine{        \mbox{\hyperlink{group__Evas__Object__Group_ga9e19e6dd1f517a0ba437c0114d3e7c97}{Evas\_Object}} *fwd;}
\DoxyCodeLine{        \mbox{\hyperlink{group__Evas__Object__Group_ga9e19e6dd1f517a0ba437c0114d3e7c97}{Evas\_Object}} *refresh;}
\DoxyCodeLine{   \} nav;}
\DoxyCodeLine{}
\DoxyCodeLine{   Tab\_Data *current\_tab;}
\DoxyCodeLine{}
\DoxyCodeLine{   \mbox{\hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\_Bool}} exiting : 1;}
\DoxyCodeLine{\} App\_Data;}

\end{DoxyCodeInclude}


Each tab has its own struct too, but there\textquotesingle{}s not much to it. 
\begin{DoxyCodeInclude}{0}
\DoxyCodeLine{}
\DoxyCodeLine{\textcolor{keyword}{struct }\_Tab\_Data}
\DoxyCodeLine{\{}
\DoxyCodeLine{   \mbox{\hyperlink{group__Evas__Object__Group_ga9e19e6dd1f517a0ba437c0114d3e7c97}{Evas\_Object}} *web;}
\DoxyCodeLine{   App\_Data *app;}
\DoxyCodeLine{   \mbox{\hyperlink{group__Elm__General_ga13a0c231414b86e62f68afe3c6fb462b}{Elm\_Object\_Item}} *tab;}
\DoxyCodeLine{\};}

\end{DoxyCodeInclude}


Whenever the currently selected tab changes, we need to update some state on the application. The back and forward buttons need to be disabled accordingly and the U\+RL bar needs to show the right address.


\begin{DoxyCodeInclude}{0}
\DoxyCodeLine{\textcolor{keyword}{static} \textcolor{keywordtype}{void}}
\DoxyCodeLine{nav\_button\_update(App\_Data *ad)}
\DoxyCodeLine{\{}
\DoxyCodeLine{   \mbox{\hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\_Bool}} back, fwd;}
\DoxyCodeLine{}
\DoxyCodeLine{   back = !elm\_web\_back\_possible\_get(ad-\/>current\_tab-\/>web);}
\DoxyCodeLine{   fwd = !elm\_web\_forward\_possible\_get(ad-\/>current\_tab-\/>web);}
\DoxyCodeLine{}
\DoxyCodeLine{   \mbox{\hyperlink{group__Elm__General_ga6849a57df3316eabad5bec443bf87597}{elm\_object\_disabled\_set}}(ad-\/>nav.back, back);}
\DoxyCodeLine{   \mbox{\hyperlink{group__Elm__General_ga6849a57df3316eabad5bec443bf87597}{elm\_object\_disabled\_set}}(ad-\/>nav.fwd, fwd);}
\DoxyCodeLine{\}}
\DoxyCodeLine{}
\DoxyCodeLine{\textcolor{keyword}{static} \textcolor{keywordtype}{void}}
\DoxyCodeLine{tab\_current\_set(Tab\_Data *td)}
\DoxyCodeLine{\{}
\DoxyCodeLine{   \textcolor{keyword}{const} \textcolor{keywordtype}{char} *url;}
\DoxyCodeLine{}
\DoxyCodeLine{   \textcolor{keywordflow}{if} (td == td-\/>app-\/>current\_tab)}
\DoxyCodeLine{     \textcolor{keywordflow}{return};}
\DoxyCodeLine{}
\DoxyCodeLine{   td-\/>app-\/>current\_tab = td;}
\DoxyCodeLine{}
\DoxyCodeLine{   url = elm\_web\_url\_get(td-\/>web);}
\DoxyCodeLine{   elm\_object\_text\_set(td-\/>app-\/>url\_entry, url);}
\DoxyCodeLine{}
\DoxyCodeLine{   nav\_button\_update(td-\/>app);}
\DoxyCodeLine{   elm\_entry\_icon\_visible\_set(td-\/>app-\/>url\_entry, \mbox{\hyperlink{group__Eina__Types__Group_ga05c12dacc8b4058994df842b41be85fc}{EINA\_TRUE}});}
\DoxyCodeLine{}
\DoxyCodeLine{   elm\_naviframe\_item\_simple\_promote(td-\/>app-\/>naviframe, td-\/>web);}
\DoxyCodeLine{\}}

\end{DoxyCodeInclude}


Other updates happen based on events from the web object, like title change to update the name shown in the tab, and U\+RL change which will update the U\+RL bar if the event came from the currently selected tab.


\begin{DoxyCodeInclude}{0}
\DoxyCodeLine{\textcolor{keyword}{static} \textcolor{keywordtype}{void}}
\DoxyCodeLine{\_title\_changed\_cb(\textcolor{keywordtype}{void} *data, \mbox{\hyperlink{group__Evas__Object__Group_ga9e19e6dd1f517a0ba437c0114d3e7c97}{Evas\_Object}} *obj \mbox{\hyperlink{group__Eina__Types__Group_ga82d751be730f849719ca292f9558be87}{EINA\_UNUSED}}, \textcolor{keywordtype}{void} *event\_info)}
\DoxyCodeLine{\{}
\DoxyCodeLine{   Tab\_Data *td = data;}
\DoxyCodeLine{   \textcolor{keyword}{const} \textcolor{keywordtype}{char} *title = event\_info;}
\DoxyCodeLine{   \textcolor{keywordtype}{char} buf[20] = \textcolor{stringliteral}{""};}
\DoxyCodeLine{}
\DoxyCodeLine{   \textcolor{keywordflow}{if} (title)}
\DoxyCodeLine{     strncpy(buf, title, \textcolor{keyword}{sizeof}(buf) -\/ 1);}
\DoxyCodeLine{   \mbox{\hyperlink{group__Elm__General_gab7192654621dd090be86c94678635ea4}{elm\_object\_item\_text\_set}}(td-\/>tab, buf);}
\DoxyCodeLine{\}}
\DoxyCodeLine{}
\DoxyCodeLine{\textcolor{keyword}{static} \textcolor{keywordtype}{void}}
\DoxyCodeLine{\_url\_changed\_cb(\textcolor{keywordtype}{void} *data, \mbox{\hyperlink{group__Evas__Object__Group_ga9e19e6dd1f517a0ba437c0114d3e7c97}{Evas\_Object}} *obj \mbox{\hyperlink{group__Eina__Types__Group_ga82d751be730f849719ca292f9558be87}{EINA\_UNUSED}}, \textcolor{keywordtype}{void} *event\_info)}
\DoxyCodeLine{\{}
\DoxyCodeLine{   Tab\_Data *td = data;}
\DoxyCodeLine{   \textcolor{keyword}{const} \textcolor{keywordtype}{char} *url = event\_info;}
\DoxyCodeLine{}
\DoxyCodeLine{   \textcolor{keywordflow}{if} (td != td-\/>app-\/>current\_tab)}
\DoxyCodeLine{     \textcolor{keywordflow}{return};}
\DoxyCodeLine{}
\DoxyCodeLine{   nav\_button\_update(td-\/>app);}
\DoxyCodeLine{   elm\_object\_text\_set(td-\/>app-\/>url\_entry, url);}
\DoxyCodeLine{\}}

\end{DoxyCodeInclude}


Adding a new tab is just a matter of creating a new web widget, its data and pushing it into the pager. A lot of the things that we should handle here, such as how to react to popups and Java\+Script dialogs, are done already in the {\ttfamily elm\+\_\+web} widget, so we can rely on their default implementations. For the Java\+Script dialogs we are going to avoid having them open in a new window by setting the {\ttfamily Inwin} mode.

There is no default implementation, however, for the requests to create a new window, so we have to handle them by setting a callback function that will ultimately call this very same function to add a new tab.


\begin{DoxyCodeInclude}{0}
\DoxyCodeLine{Tab\_Data *}
\DoxyCodeLine{tab\_add(App\_Data *ad)}
\DoxyCodeLine{\{}
\DoxyCodeLine{   Tab\_Data *td;}
\DoxyCodeLine{}
\DoxyCodeLine{   td = calloc(1, \textcolor{keyword}{sizeof}(Tab\_Data));}
\DoxyCodeLine{   \textcolor{keywordflow}{if} (!td) \textcolor{keywordflow}{return} NULL;}
\DoxyCodeLine{}
\DoxyCodeLine{   td-\/>web = \mbox{\hyperlink{group__Elm__Web_ga2429d45ce9bea9428997a1fc3236b66a}{elm\_web\_add}}(ad-\/>win);}
\DoxyCodeLine{   elm\_web\_window\_create\_hook\_set(td-\/>web, \_web\_create\_window\_cb, ad);}
\DoxyCodeLine{   elm\_web\_inwin\_mode\_set(td-\/>web, \mbox{\hyperlink{group__Eina__Types__Group_ga05c12dacc8b4058994df842b41be85fc}{EINA\_TRUE}});}
\DoxyCodeLine{   evas\_object\_size\_hint\_weight\_set(td-\/>web, \mbox{\hyperlink{Evas__Common_8h_aa47c85083d3dae0111c21ec49359306a}{EVAS\_HINT\_EXPAND}},}
\DoxyCodeLine{                                    \mbox{\hyperlink{Evas__Common_8h_aa47c85083d3dae0111c21ec49359306a}{EVAS\_HINT\_EXPAND}});}
\DoxyCodeLine{   evas\_object\_size\_hint\_align\_set(td-\/>web, \mbox{\hyperlink{Evas__Common_8h_aecbac710f36d52911fc34dcdaf8e729c}{EVAS\_HINT\_FILL}}, \mbox{\hyperlink{Evas__Common_8h_aecbac710f36d52911fc34dcdaf8e729c}{EVAS\_HINT\_FILL}});}
\DoxyCodeLine{   elm\_naviframe\_item\_simple\_push(ad-\/>naviframe, td-\/>web);}
\DoxyCodeLine{}
\DoxyCodeLine{   td-\/>app = ad;}
\DoxyCodeLine{   td-\/>tab = elm\_toolbar\_item\_append(td-\/>app-\/>tabs, NULL, \textcolor{stringliteral}{"New tab"},}
\DoxyCodeLine{                                     \_tab\_clicked\_cb, td);}
\DoxyCodeLine{   \mbox{\hyperlink{group__Elm__General_ga2e17c3f1030712f3175f5b7812ada9a0}{elm\_object\_item\_del\_cb\_set}}(td-\/>tab, \_tb\_item\_del\_cb);}
\DoxyCodeLine{}
\DoxyCodeLine{   \mbox{\hyperlink{group__Evas__Object__Group__Extras_ga70134a7068c9bff4107a761abe0a2ad4}{evas\_object\_data\_set}}(td-\/>web, \textcolor{stringliteral}{"tab\_data"}, td);}
\DoxyCodeLine{}
\DoxyCodeLine{   \mbox{\hyperlink{group__Evas__Smart__Object__Group_ga18a8b179f94d21b2b09e19db11741061}{evas\_object\_smart\_callback\_add}}(td-\/>web, \textcolor{stringliteral}{"title,changed"}, \_title\_changed\_cb,}
\DoxyCodeLine{                                  td);}
\DoxyCodeLine{   \mbox{\hyperlink{group__Evas__Smart__Object__Group_ga18a8b179f94d21b2b09e19db11741061}{evas\_object\_smart\_callback\_add}}(td-\/>web, \textcolor{stringliteral}{"url,changed"}, \_url\_changed\_cb, td);}
\DoxyCodeLine{   \mbox{\hyperlink{group__Evas__Object__Group__Events_ga23be30ac5cdfb780f1ff82e9108ec26b}{evas\_object\_event\_callback\_add}}(td-\/>web, \mbox{\hyperlink{Evas__Common_8h_ad64cde0da38a60e7cb7905b3ab216968aab869b5d534f02f1b3e151e2406a8c24}{EVAS\_CALLBACK\_FREE}}, \_web\_free\_cb,}
\DoxyCodeLine{                                  td);}
\DoxyCodeLine{}
\DoxyCodeLine{   elm\_toolbar\_item\_selected\_set(td-\/>tab, \mbox{\hyperlink{group__Eina__Types__Group_ga05c12dacc8b4058994df842b41be85fc}{EINA\_TRUE}});}
\DoxyCodeLine{   \textcolor{keywordflow}{return} td;}
\DoxyCodeLine{\}}

\end{DoxyCodeInclude}


Entering an address in the U\+RL bar will check if a tab exists, and if not, create one and set the U\+RL for it. The address needs to conform to the U\+RI format, so we check that it does and add the protocol if it\textquotesingle{}s missing.


\begin{DoxyCodeInclude}{0}
\DoxyCodeLine{\textcolor{keyword}{static} \textcolor{keywordtype}{char} *}
\DoxyCodeLine{url\_sanitize(\textcolor{keyword}{const} \textcolor{keywordtype}{char} *url)}
\DoxyCodeLine{\{}
\DoxyCodeLine{   \textcolor{keywordtype}{char} *fixed\_url;}
\DoxyCodeLine{   \textcolor{keywordtype}{char} *schema;}
\DoxyCodeLine{   \textcolor{keywordtype}{char} *tmp;}
\DoxyCodeLine{}
\DoxyCodeLine{   \textcolor{keywordflow}{if} (!url || !*url) \textcolor{keywordflow}{return} NULL;}
\DoxyCodeLine{}
\DoxyCodeLine{   tmp = strstr(url, \textcolor{stringliteral}{"://"});}
\DoxyCodeLine{   \textcolor{keywordflow}{if} (!tmp || (tmp == url) || (tmp > (url + 15)))}
\DoxyCodeLine{     \{}
\DoxyCodeLine{        \textcolor{keywordtype}{char} *new\_url = NULL;}
\DoxyCodeLine{        \textcolor{keywordflow}{if} (\mbox{\hyperlink{group__Ecore__File__Group_gaf5a3cc8bd9bf69a3ebce0678fe799016}{ecore\_file\_exists}}(url))}
\DoxyCodeLine{          \{}
\DoxyCodeLine{             schema = \textcolor{stringliteral}{"file"};}
\DoxyCodeLine{             new\_url = \mbox{\hyperlink{group__Ecore__File__Group_gab358bf1dc588e0e1929d31a72a213168}{ecore\_file\_realpath}}(url);}
\DoxyCodeLine{          \}}
\DoxyCodeLine{        \textcolor{keywordflow}{else}}
\DoxyCodeLine{          schema = \textcolor{stringliteral}{"http"};}
\DoxyCodeLine{}
\DoxyCodeLine{        \textcolor{keywordflow}{if} (asprintf(\&fixed\_url, \textcolor{stringliteral}{"\%s://\%s"}, schema, new\_url ? new\_url : url) >}
\DoxyCodeLine{            0)}
\DoxyCodeLine{          \{}
\DoxyCodeLine{             free(new\_url);}
\DoxyCodeLine{             \textcolor{keywordflow}{return} fixed\_url;}
\DoxyCodeLine{          \}}
\DoxyCodeLine{        free(new\_url);}
\DoxyCodeLine{     \}}
\DoxyCodeLine{   \textcolor{keywordflow}{else}}
\DoxyCodeLine{     \textcolor{keywordflow}{return} strdup(url);}
\DoxyCodeLine{}
\DoxyCodeLine{   \textcolor{keywordflow}{return} NULL;}
\DoxyCodeLine{\}}
\DoxyCodeLine{}
\DoxyCodeLine{\textcolor{keyword}{static} \textcolor{keywordtype}{void}}
\DoxyCodeLine{tab\_url\_set(Tab\_Data *td, \textcolor{keyword}{const} \textcolor{keywordtype}{char} *url)}
\DoxyCodeLine{\{}
\DoxyCodeLine{   \textcolor{keywordtype}{char} *sane\_url = url\_sanitize(url);}
\DoxyCodeLine{   elm\_web\_url\_set(td-\/>web, sane\_url);}
\DoxyCodeLine{   free(sane\_url);}
\DoxyCodeLine{\}}
\DoxyCodeLine{}
\DoxyCodeLine{\textcolor{keyword}{static} \textcolor{keywordtype}{void}}
\DoxyCodeLine{\_url\_entry\_activated\_cb(\textcolor{keywordtype}{void} *data, \mbox{\hyperlink{group__Evas__Object__Group_ga9e19e6dd1f517a0ba437c0114d3e7c97}{Evas\_Object}} *obj, \textcolor{keywordtype}{void} *event\_info \mbox{\hyperlink{group__Eina__Types__Group_ga82d751be730f849719ca292f9558be87}{EINA\_UNUSED}})}
\DoxyCodeLine{\{}
\DoxyCodeLine{   App\_Data *ad = data;}
\DoxyCodeLine{   Tab\_Data *td;}
\DoxyCodeLine{   \textcolor{keyword}{const} \textcolor{keywordtype}{char} *url = \mbox{\hyperlink{group__Eina__Stringshare__Group_gac6f45e4273f13f42e9a3c48435cd03dc}{eina\_stringshare\_ref}}(elm\_object\_text\_get(obj));}
\DoxyCodeLine{}
\DoxyCodeLine{   \textcolor{keywordflow}{if} (!ad-\/>current\_tab)}
\DoxyCodeLine{     td = tab\_add(ad);}
\DoxyCodeLine{   \textcolor{keywordflow}{else}}
\DoxyCodeLine{     td = ad-\/>current\_tab;}
\DoxyCodeLine{   tab\_url\_set(td, url);}
\DoxyCodeLine{   \mbox{\hyperlink{group__Eina__Stringshare__Group_ga495411b0bc85b9c0d59ec7255a025260}{eina\_stringshare\_del}}(url);}
\DoxyCodeLine{\}}

\end{DoxyCodeInclude}


The navigation buttons are simple enough. As for the refresh, it normally reloads the page using anything that may exist in the caches if applicable, but we can press it while holding the {\ttfamily Shift} key to avoid the cache.


\begin{DoxyCodeInclude}{0}
\DoxyCodeLine{\textcolor{keyword}{static} \textcolor{keywordtype}{void}}
\DoxyCodeLine{\_nav\_back\_cb(\textcolor{keywordtype}{void} *data, \mbox{\hyperlink{group__Evas__Object__Group_ga9e19e6dd1f517a0ba437c0114d3e7c97}{Evas\_Object}} *obj \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{   App\_Data *ad = data;}
\DoxyCodeLine{}
\DoxyCodeLine{   elm\_web\_back(ad-\/>current\_tab-\/>web);}
\DoxyCodeLine{\}}
\DoxyCodeLine{}
\DoxyCodeLine{\textcolor{keyword}{static} \textcolor{keywordtype}{void}}
\DoxyCodeLine{\_nav\_refresh\_cb(\textcolor{keywordtype}{void} *data, \mbox{\hyperlink{group__Evas__Object__Group_ga9e19e6dd1f517a0ba437c0114d3e7c97}{Evas\_Object}} *obj, \textcolor{keywordtype}{void} *event\_info \mbox{\hyperlink{group__Eina__Types__Group_ga82d751be730f849719ca292f9558be87}{EINA\_UNUSED}})}
\DoxyCodeLine{\{}
\DoxyCodeLine{   App\_Data *ad = data;}
\DoxyCodeLine{   \textcolor{keyword}{const} Evas\_Modifier *mods = \mbox{\hyperlink{group__Evas__Canvas_gaad42bb4caa43c1cfef4096f6ac2b99ec}{evas\_key\_modifier\_get}}(evas\_object\_evas\_get(obj));}
\DoxyCodeLine{}
\DoxyCodeLine{   \textcolor{keywordflow}{if} (\mbox{\hyperlink{group__Evas__Keys_ga6cc24a5ea4b39b84c7a3e617de3db261}{evas\_key\_modifier\_is\_set}}(mods, \textcolor{stringliteral}{"Shift"}))}
\DoxyCodeLine{     elm\_web\_reload\_full(ad-\/>current\_tab-\/>web);}
\DoxyCodeLine{   \textcolor{keywordflow}{else}}
\DoxyCodeLine{     elm\_web\_reload(ad-\/>current\_tab-\/>web);}
\DoxyCodeLine{\}}
\DoxyCodeLine{}
\DoxyCodeLine{\textcolor{keyword}{static} \textcolor{keywordtype}{void}}
\DoxyCodeLine{\_nav\_fwd\_cb(\textcolor{keywordtype}{void} *data, \mbox{\hyperlink{group__Evas__Object__Group_ga9e19e6dd1f517a0ba437c0114d3e7c97}{Evas\_Object}} *obj \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{   App\_Data *ad = data;}
\DoxyCodeLine{}
\DoxyCodeLine{   elm\_web\_forward(ad-\/>current\_tab-\/>web);}
\DoxyCodeLine{\}}

\end{DoxyCodeInclude}


The callback set for the new window request creates a new tab and returns the web widget associated with it. This is important, this function must return a valid web widget returned by \mbox{\hyperlink{group__Elm__Web_ga2429d45ce9bea9428997a1fc3236b66a}{elm\+\_\+web\+\_\+add()}}.


\begin{DoxyCodeInclude}{0}
\DoxyCodeLine{\textcolor{keyword}{static} \mbox{\hyperlink{group__Evas__Object__Group_ga9e19e6dd1f517a0ba437c0114d3e7c97}{Evas\_Object}} *}
\DoxyCodeLine{\_web\_create\_window\_cb(\textcolor{keywordtype}{void} *data, \mbox{\hyperlink{group__Evas__Object__Group_ga9e19e6dd1f517a0ba437c0114d3e7c97}{Evas\_Object}} *obj \mbox{\hyperlink{group__Eina__Types__Group_ga82d751be730f849719ca292f9558be87}{EINA\_UNUSED}},}
\DoxyCodeLine{                      \mbox{\hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\_Bool}} js \mbox{\hyperlink{group__Eina__Types__Group_ga82d751be730f849719ca292f9558be87}{EINA\_UNUSED}}, \textcolor{keyword}{const} \mbox{\hyperlink{group__Elm__Web_gae2b0432ff7c5e8d843416f648da929ac}{Elm\_Web\_Window\_Features}} *wf \mbox{\hyperlink{group__Eina__Types__Group_ga82d751be730f849719ca292f9558be87}{EINA\_UNUSED}})}
\DoxyCodeLine{\{}
\DoxyCodeLine{   App\_Data *ad = data;}
\DoxyCodeLine{   Tab\_Data *td;}
\DoxyCodeLine{}
\DoxyCodeLine{   td = tab\_add(ad);}
\DoxyCodeLine{   \textcolor{keywordflow}{return} td-\/>web;}
\DoxyCodeLine{\}}

\end{DoxyCodeInclude}


Pressing {\ttfamily Ctrl-\/F} will bring up the search box. Nothing about the box itself is worth mentioning here, but it works as you would expect from any other browser. While typing on it, it will highlight all occurrences of the searched word. Pressing {\ttfamily Enter} will go to the next instance and the two buttons next to the entry will move forward and backwards through the found keywords.


\begin{DoxyCodeInclude}{0}
\DoxyCodeLine{\textcolor{keyword}{static} \textcolor{keywordtype}{void}}
\DoxyCodeLine{\_win\_free\_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}} *obj \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{   free(data);}
\DoxyCodeLine{\}}
\DoxyCodeLine{}
\DoxyCodeLine{\textcolor{keyword}{static} \textcolor{keywordtype}{void}}
\DoxyCodeLine{\_search\_entry\_changed\_cb(\textcolor{keywordtype}{void} *data, \mbox{\hyperlink{group__Evas__Object__Group_ga9e19e6dd1f517a0ba437c0114d3e7c97}{Evas\_Object}} *obj, \textcolor{keywordtype}{void} *event\_info \mbox{\hyperlink{group__Eina__Types__Group_ga82d751be730f849719ca292f9558be87}{EINA\_UNUSED}})}
\DoxyCodeLine{\{}
\DoxyCodeLine{   App\_Data *ad = data;}
\DoxyCodeLine{   \textcolor{keyword}{const} \textcolor{keywordtype}{char} *text;}
\DoxyCodeLine{}
\DoxyCodeLine{   text = elm\_object\_text\_get(obj);}
\DoxyCodeLine{   elm\_web\_text\_search(ad-\/>current\_tab-\/>web, text, \mbox{\hyperlink{group__Eina__Types__Group_ga1feb115f8e9913e806e090d9bd5a7301}{EINA\_FALSE}}, \mbox{\hyperlink{group__Eina__Types__Group_ga05c12dacc8b4058994df842b41be85fc}{EINA\_TRUE}},}
\DoxyCodeLine{                       \mbox{\hyperlink{group__Eina__Types__Group_ga05c12dacc8b4058994df842b41be85fc}{EINA\_TRUE}});}
\DoxyCodeLine{   elm\_web\_text\_matches\_unmark\_all(ad-\/>current\_tab-\/>web);}
\DoxyCodeLine{   elm\_web\_text\_matches\_mark(ad-\/>current\_tab-\/>web, text, \mbox{\hyperlink{group__Eina__Types__Group_ga1feb115f8e9913e806e090d9bd5a7301}{EINA\_FALSE}}, \mbox{\hyperlink{group__Eina__Types__Group_ga05c12dacc8b4058994df842b41be85fc}{EINA\_TRUE}},}
\DoxyCodeLine{                             0);}
\DoxyCodeLine{\}}
\DoxyCodeLine{}
\DoxyCodeLine{\textcolor{keyword}{static} \textcolor{keywordtype}{void}}
\DoxyCodeLine{\_search\_entry\_activate\_cb(\textcolor{keywordtype}{void} *data, \mbox{\hyperlink{group__Evas__Object__Group_ga9e19e6dd1f517a0ba437c0114d3e7c97}{Evas\_Object}} *obj, \textcolor{keywordtype}{void} *event\_info \mbox{\hyperlink{group__Eina__Types__Group_ga82d751be730f849719ca292f9558be87}{EINA\_UNUSED}})}
\DoxyCodeLine{\{}
\DoxyCodeLine{   App\_Data *ad = data;}
\DoxyCodeLine{   \textcolor{keyword}{const} \textcolor{keywordtype}{char} *text;}
\DoxyCodeLine{}
\DoxyCodeLine{   text = elm\_object\_text\_get(obj);}
\DoxyCodeLine{   elm\_web\_text\_search(ad-\/>current\_tab-\/>web, text, \mbox{\hyperlink{group__Eina__Types__Group_ga1feb115f8e9913e806e090d9bd5a7301}{EINA\_FALSE}}, \mbox{\hyperlink{group__Eina__Types__Group_ga05c12dacc8b4058994df842b41be85fc}{EINA\_TRUE}},}
\DoxyCodeLine{                       \mbox{\hyperlink{group__Eina__Types__Group_ga05c12dacc8b4058994df842b41be85fc}{EINA\_TRUE}});}
\DoxyCodeLine{\}}
\DoxyCodeLine{}
\DoxyCodeLine{\textcolor{keyword}{static} \textcolor{keywordtype}{void}}
\DoxyCodeLine{\_search\_next\_cb(\textcolor{keywordtype}{void} *data, \mbox{\hyperlink{group__Evas__Object__Group_ga9e19e6dd1f517a0ba437c0114d3e7c97}{Evas\_Object}} *obj \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{   App\_Data *ad = data;}
\DoxyCodeLine{   \textcolor{keyword}{const} \textcolor{keywordtype}{char} *text;}
\DoxyCodeLine{}
\DoxyCodeLine{   text = elm\_object\_text\_get(ad-\/>search\_entry);}
\DoxyCodeLine{   elm\_web\_text\_search(ad-\/>current\_tab-\/>web, text, \mbox{\hyperlink{group__Eina__Types__Group_ga1feb115f8e9913e806e090d9bd5a7301}{EINA\_FALSE}}, \mbox{\hyperlink{group__Eina__Types__Group_ga05c12dacc8b4058994df842b41be85fc}{EINA\_TRUE}},}
\DoxyCodeLine{                       \mbox{\hyperlink{group__Eina__Types__Group_ga05c12dacc8b4058994df842b41be85fc}{EINA\_TRUE}});}
\DoxyCodeLine{\}}
\DoxyCodeLine{}
\DoxyCodeLine{\textcolor{keyword}{static} \textcolor{keywordtype}{void}}
\DoxyCodeLine{\_search\_prev\_cb(\textcolor{keywordtype}{void} *data, \mbox{\hyperlink{group__Evas__Object__Group_ga9e19e6dd1f517a0ba437c0114d3e7c97}{Evas\_Object}} *obj \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{   App\_Data *ad = data;}
\DoxyCodeLine{   \textcolor{keyword}{const} \textcolor{keywordtype}{char} *text;}
\DoxyCodeLine{}
\DoxyCodeLine{   text = elm\_object\_text\_get(ad-\/>search\_entry);}
\DoxyCodeLine{   elm\_web\_text\_search(ad-\/>current\_tab-\/>web, text, \mbox{\hyperlink{group__Eina__Types__Group_ga1feb115f8e9913e806e090d9bd5a7301}{EINA\_FALSE}}, \mbox{\hyperlink{group__Eina__Types__Group_ga1feb115f8e9913e806e090d9bd5a7301}{EINA\_FALSE}},}
\DoxyCodeLine{                       \mbox{\hyperlink{group__Eina__Types__Group_ga05c12dacc8b4058994df842b41be85fc}{EINA\_TRUE}});}
\DoxyCodeLine{\}}
\DoxyCodeLine{}
\DoxyCodeLine{\textcolor{keyword}{static} \textcolor{keywordtype}{void}}
\DoxyCodeLine{\_search\_close\_cb(\textcolor{keywordtype}{void} *data, \mbox{\hyperlink{group__Evas__Object__Group_ga9e19e6dd1f517a0ba437c0114d3e7c97}{Evas\_Object}} *obj \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{   App\_Data *ad = data;}
\DoxyCodeLine{   \mbox{\hyperlink{group__Evas__Object__Group__Basic_ga7e7a625dab7a3890532aa13b43117076}{evas\_object\_del}}(ad-\/>search\_box);}
\DoxyCodeLine{\}}
\DoxyCodeLine{}
\DoxyCodeLine{\textcolor{keyword}{static} \textcolor{keywordtype}{void}}
\DoxyCodeLine{\_search\_box\_del\_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}} *obj \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{   App\_Data *ad = data;}
\DoxyCodeLine{   ad-\/>search\_box = NULL;}
\DoxyCodeLine{   ad-\/>search\_entry = NULL;}
\DoxyCodeLine{\}}
\DoxyCodeLine{}
\DoxyCodeLine{\textcolor{keyword}{static} \textcolor{keywordtype}{void}}
\DoxyCodeLine{\_win\_search\_trigger\_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}} *obj \mbox{\hyperlink{group__Eina__Types__Group_ga82d751be730f849719ca292f9558be87}{EINA\_UNUSED}}, \textcolor{keywordtype}{void} *event\_info)}
\DoxyCodeLine{\{}
\DoxyCodeLine{   \mbox{\hyperlink{struct__Evas__Event__Key__Down}{Evas\_Event\_Key\_Down}} *ev = event\_info;}
\DoxyCodeLine{   App\_Data *ad = data;}
\DoxyCodeLine{   \mbox{\hyperlink{group__Evas__Object__Group_ga9e19e6dd1f517a0ba437c0114d3e7c97}{Evas\_Object}} *box, *box2, *entry, *btn, *ic;}
\DoxyCodeLine{}
\DoxyCodeLine{   \textcolor{keywordflow}{if} (strcmp(ev-\/>\mbox{\hyperlink{struct__Evas__Event__Key__Down_a01909378c9e67734aa0e6ce2b603ad2c}{keyname}}, \textcolor{stringliteral}{"f"}) ||}
\DoxyCodeLine{       !\mbox{\hyperlink{group__Evas__Keys_ga6cc24a5ea4b39b84c7a3e617de3db261}{evas\_key\_modifier\_is\_set}}(ev-\/>\mbox{\hyperlink{struct__Evas__Event__Key__Down_a065e345f013dc4099eb180ce4833377f}{modifiers}}, \textcolor{stringliteral}{"Control"}))}
\DoxyCodeLine{     \textcolor{keywordflow}{return};}
\DoxyCodeLine{   \textcolor{keywordflow}{if} (ad-\/>search\_box || !ad-\/>current\_tab)}
\DoxyCodeLine{     \textcolor{keywordflow}{return};}
\DoxyCodeLine{}
\DoxyCodeLine{   box = \mbox{\hyperlink{group__Elm__Box_ga3d0998b60ada633bacfa8869a921cfd7}{elm\_box\_add}}(ad-\/>win);}
\DoxyCodeLine{   elm\_box\_horizontal\_set(box, \mbox{\hyperlink{group__Eina__Types__Group_ga05c12dacc8b4058994df842b41be85fc}{EINA\_TRUE}});}
\DoxyCodeLine{   evas\_object\_size\_hint\_weight\_set(box, \mbox{\hyperlink{Evas__Common_8h_aa47c85083d3dae0111c21ec49359306a}{EVAS\_HINT\_EXPAND}}, 0.0);}
\DoxyCodeLine{   evas\_object\_size\_hint\_align\_set(box, \mbox{\hyperlink{Evas__Common_8h_aecbac710f36d52911fc34dcdaf8e729c}{EVAS\_HINT\_FILL}}, \mbox{\hyperlink{Evas__Common_8h_aecbac710f36d52911fc34dcdaf8e729c}{EVAS\_HINT\_FILL}});}
\DoxyCodeLine{   elm\_box\_pack\_after(ad-\/>main\_box, box, ad-\/>url\_entry);}
\DoxyCodeLine{   \mbox{\hyperlink{group__Evas__Object__Group__Basic_ga9cbc13661584e49fb9d9cdab514a1eeb}{evas\_object\_show}}(box);}
\DoxyCodeLine{}
\DoxyCodeLine{   \mbox{\hyperlink{group__Evas__Object__Group__Events_ga23be30ac5cdfb780f1ff82e9108ec26b}{evas\_object\_event\_callback\_add}}(box, \mbox{\hyperlink{Evas__Common_8h_ad64cde0da38a60e7cb7905b3ab216968a4471afbcbb4a754b7b0bbde00fb9a277}{EVAS\_CALLBACK\_DEL}}, \_search\_box\_del\_cb,}
\DoxyCodeLine{                                  ad);}
\DoxyCodeLine{}
\DoxyCodeLine{   entry = \mbox{\hyperlink{group__Elm__Entry_ga9b6db43001f1f765aa38f8805411b822}{elm\_entry\_add}}(ad-\/>win);}
\DoxyCodeLine{   elm\_entry\_single\_line\_set(entry, \mbox{\hyperlink{group__Eina__Types__Group_ga05c12dacc8b4058994df842b41be85fc}{EINA\_TRUE}});}
\DoxyCodeLine{   elm\_entry\_scrollable\_set(entry, \mbox{\hyperlink{group__Eina__Types__Group_ga05c12dacc8b4058994df842b41be85fc}{EINA\_TRUE}});}
\DoxyCodeLine{   evas\_object\_size\_hint\_weight\_set(entry, \mbox{\hyperlink{Evas__Common_8h_aa47c85083d3dae0111c21ec49359306a}{EVAS\_HINT\_EXPAND}}, \mbox{\hyperlink{Evas__Common_8h_aa47c85083d3dae0111c21ec49359306a}{EVAS\_HINT\_EXPAND}});}
\DoxyCodeLine{   evas\_object\_size\_hint\_align\_set(entry, \mbox{\hyperlink{Evas__Common_8h_aecbac710f36d52911fc34dcdaf8e729c}{EVAS\_HINT\_FILL}}, \mbox{\hyperlink{Evas__Common_8h_aecbac710f36d52911fc34dcdaf8e729c}{EVAS\_HINT\_FILL}});}
\DoxyCodeLine{   elm\_box\_pack\_end(box, entry);}
\DoxyCodeLine{   \mbox{\hyperlink{group__Evas__Object__Group__Basic_ga9cbc13661584e49fb9d9cdab514a1eeb}{evas\_object\_show}}(entry);}
\DoxyCodeLine{}
\DoxyCodeLine{   \mbox{\hyperlink{group__Evas__Smart__Object__Group_ga18a8b179f94d21b2b09e19db11741061}{evas\_object\_smart\_callback\_add}}(entry, \textcolor{stringliteral}{"changed"}, \_search\_entry\_changed\_cb,}
\DoxyCodeLine{                                  ad);}
\DoxyCodeLine{   \mbox{\hyperlink{group__Evas__Smart__Object__Group_ga18a8b179f94d21b2b09e19db11741061}{evas\_object\_smart\_callback\_add}}(entry, \textcolor{stringliteral}{"activated"}, \_search\_entry\_activate\_cb,}
\DoxyCodeLine{                                  ad);}
\DoxyCodeLine{}
\DoxyCodeLine{   box2 = \mbox{\hyperlink{group__Elm__Box_ga3d0998b60ada633bacfa8869a921cfd7}{elm\_box\_add}}(ad-\/>win);}
\DoxyCodeLine{   elm\_box\_horizontal\_set(box2, \mbox{\hyperlink{group__Eina__Types__Group_ga05c12dacc8b4058994df842b41be85fc}{EINA\_TRUE}});}
\DoxyCodeLine{   \mbox{\hyperlink{group__Elm__General_ga0531ec8867c72def7c780601764ca642}{elm\_object\_part\_content\_set}}(entry, \textcolor{stringliteral}{"end"}, box2);}
\DoxyCodeLine{}
\DoxyCodeLine{   btn = \mbox{\hyperlink{group__Elm__Button_ga0021b9d86d822367035843ed18bc6ea9}{elm\_button\_add}}(ad-\/>win);}
\DoxyCodeLine{   elm\_box\_pack\_end(box2, btn);}
\DoxyCodeLine{   \mbox{\hyperlink{group__Evas__Object__Group__Basic_ga9cbc13661584e49fb9d9cdab514a1eeb}{evas\_object\_show}}(btn);}
\DoxyCodeLine{}
\DoxyCodeLine{   ic = \mbox{\hyperlink{group__Elm__Icon_ga5739728c1209f90422cf65a778a16502}{elm\_icon\_add}}(ad-\/>win);}
\DoxyCodeLine{   \mbox{\hyperlink{group__Elm__Icon_gab764b4c6c90543f254c013eff6a6db66}{elm\_icon\_standard\_set}}(ic, \textcolor{stringliteral}{"arrow\_up"});}
\DoxyCodeLine{   \mbox{\hyperlink{group__Elm__General_ga0531ec8867c72def7c780601764ca642}{elm\_object\_part\_content\_set}}(btn, \textcolor{stringliteral}{"icon"}, ic);}
\DoxyCodeLine{}
\DoxyCodeLine{   \mbox{\hyperlink{group__Evas__Smart__Object__Group_ga18a8b179f94d21b2b09e19db11741061}{evas\_object\_smart\_callback\_add}}(btn, \textcolor{stringliteral}{"clicked"}, \_search\_prev\_cb, ad);}
\DoxyCodeLine{}
\DoxyCodeLine{   btn = \mbox{\hyperlink{group__Elm__Button_ga0021b9d86d822367035843ed18bc6ea9}{elm\_button\_add}}(ad-\/>win);}
\DoxyCodeLine{   elm\_box\_pack\_end(box2, btn);}
\DoxyCodeLine{   \mbox{\hyperlink{group__Evas__Object__Group__Basic_ga9cbc13661584e49fb9d9cdab514a1eeb}{evas\_object\_show}}(btn);}
\DoxyCodeLine{}
\DoxyCodeLine{   ic = \mbox{\hyperlink{group__Elm__Icon_ga5739728c1209f90422cf65a778a16502}{elm\_icon\_add}}(ad-\/>win);}
\DoxyCodeLine{   \mbox{\hyperlink{group__Elm__Icon_gab764b4c6c90543f254c013eff6a6db66}{elm\_icon\_standard\_set}}(ic, \textcolor{stringliteral}{"arrow\_down"});}
\DoxyCodeLine{   \mbox{\hyperlink{group__Elm__General_ga0531ec8867c72def7c780601764ca642}{elm\_object\_part\_content\_set}}(btn, \textcolor{stringliteral}{"icon"}, ic);}
\DoxyCodeLine{}
\DoxyCodeLine{   \mbox{\hyperlink{group__Evas__Smart__Object__Group_ga18a8b179f94d21b2b09e19db11741061}{evas\_object\_smart\_callback\_add}}(btn, \textcolor{stringliteral}{"clicked"}, \_search\_next\_cb, ad);}
\DoxyCodeLine{}
\DoxyCodeLine{   btn = \mbox{\hyperlink{group__Elm__Button_ga0021b9d86d822367035843ed18bc6ea9}{elm\_button\_add}}(ad-\/>win);}
\DoxyCodeLine{   elm\_box\_pack\_end(box, btn);}
\DoxyCodeLine{   \mbox{\hyperlink{group__Evas__Object__Group__Basic_ga9cbc13661584e49fb9d9cdab514a1eeb}{evas\_object\_show}}(btn);}
\DoxyCodeLine{}
\DoxyCodeLine{   ic = \mbox{\hyperlink{group__Elm__Icon_ga5739728c1209f90422cf65a778a16502}{elm\_icon\_add}}(ad-\/>win);}
\DoxyCodeLine{   \mbox{\hyperlink{group__Elm__Icon_gab764b4c6c90543f254c013eff6a6db66}{elm\_icon\_standard\_set}}(ic, \textcolor{stringliteral}{"close"});}
\DoxyCodeLine{   \mbox{\hyperlink{group__Elm__General_ga0531ec8867c72def7c780601764ca642}{elm\_object\_part\_content\_set}}(btn, \textcolor{stringliteral}{"icon"}, ic);}
\DoxyCodeLine{}
\DoxyCodeLine{   \mbox{\hyperlink{group__Evas__Smart__Object__Group_ga18a8b179f94d21b2b09e19db11741061}{evas\_object\_smart\_callback\_add}}(btn, \textcolor{stringliteral}{"clicked"}, \_search\_close\_cb, ad);}
\DoxyCodeLine{}
\DoxyCodeLine{   ad-\/>search\_box = box;}
\DoxyCodeLine{   ad-\/>search\_entry = entry;}
\DoxyCodeLine{}
\DoxyCodeLine{   \mbox{\hyperlink{group__Elm__Focus_ga05e39b5e60ad861c63100c811855ef55}{elm\_object\_focus\_set}}(entry, \mbox{\hyperlink{group__Eina__Types__Group_ga05c12dacc8b4058994df842b41be85fc}{EINA\_TRUE}});}
\DoxyCodeLine{\}}

\end{DoxyCodeInclude}


Last, create the main window and put all of the things used above in it. It contains a default web widget that will be shown when no tabs exist. This web object is not browsable per se, so history is disabled in it, and we set the same callback to create new windows, on top of setting some custom content of our own on it, with some links that will open new tabs to start browsing quickly.


\begin{DoxyCodeInclude}{0}
\DoxyCodeLine{\textcolor{keyword}{static} \textcolor{keywordtype}{void}}
\DoxyCodeLine{default\_content\_set(\mbox{\hyperlink{group__Evas__Object__Group_ga9e19e6dd1f517a0ba437c0114d3e7c97}{Evas\_Object}} *web)}
\DoxyCodeLine{\{}
\DoxyCodeLine{\textcolor{preprocessor}{\#ifdef HAVE\_ELEMENTARY\_WEB}}
\DoxyCodeLine{   \mbox{\hyperlink{group__Evas__Object__Group_ga9e19e6dd1f517a0ba437c0114d3e7c97}{Evas\_Object}} *view, *frame;}
\DoxyCodeLine{   \textcolor{keyword}{const} \textcolor{keywordtype}{char} contents[] = \textcolor{stringliteral}{""}}
\DoxyCodeLine{      \textcolor{stringliteral}{"<html>\(\backslash\)n"}}
\DoxyCodeLine{      \textcolor{stringliteral}{"  <head>\(\backslash\)n"}}
\DoxyCodeLine{      \textcolor{stringliteral}{"    <title>Nothing to see here, move along</title>\(\backslash\)n"}}
\DoxyCodeLine{      \textcolor{stringliteral}{"  </head>\(\backslash\)n"}}
\DoxyCodeLine{      \textcolor{stringliteral}{"  <body>\(\backslash\)n"}}
\DoxyCodeLine{      \textcolor{stringliteral}{"    <a href=\(\backslash\)"http://www.enlightenment.org\(\backslash\)" target=\(\backslash\)"\_blank\(\backslash\)">E</a>\(\backslash\)n"}}
\DoxyCodeLine{      \textcolor{stringliteral}{"    <br />\(\backslash\)n"}}
\DoxyCodeLine{      \textcolor{stringliteral}{"    <a href=\(\backslash\)"http://www.google.com\(\backslash\)" target=\(\backslash\)"\_blank\(\backslash\)">Google</a>\(\backslash\)n"}}
\DoxyCodeLine{      \textcolor{stringliteral}{"    <br />\(\backslash\)n"}}
\DoxyCodeLine{      \textcolor{stringliteral}{"  </body>\(\backslash\)n"}}
\DoxyCodeLine{      \textcolor{stringliteral}{"</html>\(\backslash\)n"};}
\DoxyCodeLine{}
\DoxyCodeLine{   view = elm\_web\_webkit\_view\_get(web);}
\DoxyCodeLine{   frame = ewk\_view\_frame\_main\_get(view);}
\DoxyCodeLine{   ewk\_frame\_contents\_set(frame, contents, \textcolor{keyword}{sizeof}(contents) -\/ 1, \textcolor{stringliteral}{"text/html"},}
\DoxyCodeLine{                          \textcolor{stringliteral}{"UTF-\/8"}, NULL);}
\DoxyCodeLine{\textcolor{preprocessor}{\#else}}
\DoxyCodeLine{   (void) web;}
\DoxyCodeLine{\textcolor{preprocessor}{\#endif}}
\DoxyCodeLine{\}}
\DoxyCodeLine{}
\DoxyCodeLine{EAPI\_MAIN \textcolor{keywordtype}{int}}
\DoxyCodeLine{elm\_main(\textcolor{keywordtype}{int} argc \mbox{\hyperlink{group__Eina__Types__Group_ga82d751be730f849719ca292f9558be87}{EINA\_UNUSED}}, \textcolor{keywordtype}{char} **argv \mbox{\hyperlink{group__Eina__Types__Group_ga82d751be730f849719ca292f9558be87}{EINA\_UNUSED}})}
\DoxyCodeLine{\{}
\DoxyCodeLine{   \mbox{\hyperlink{group__Evas__Object__Group_ga9e19e6dd1f517a0ba437c0114d3e7c97}{Evas\_Object}} *win, *box, *box2, *btn, *ic, *url\_bar, *naviframe, *tabs, *web;}
\DoxyCodeLine{   \mbox{\hyperlink{group__Evas__Canvas_ga5ff87cc4ce6bc43e3b640a6d37f73043}{Evas}} *e;}
\DoxyCodeLine{   \mbox{\hyperlink{group__Evas__Keys_ga111c7333a7d49e44698bd19dd5bc9059}{Evas\_Modifier\_Mask}} ctrl\_mask;}
\DoxyCodeLine{   App\_Data *ad;}
\DoxyCodeLine{}
\DoxyCodeLine{   \textcolor{keywordflow}{if} (!\mbox{\hyperlink{group__Elm__Web_ga487afbb5071a280dd937822391f9d90a}{elm\_need\_web}}())}
\DoxyCodeLine{     \textcolor{keywordflow}{return} -\/1;}
\DoxyCodeLine{}
\DoxyCodeLine{   ad = calloc(1, \textcolor{keyword}{sizeof}(App\_Data));}
\DoxyCodeLine{   \textcolor{keywordflow}{if} (!ad) \textcolor{keywordflow}{return} -\/1;}
\DoxyCodeLine{}
\DoxyCodeLine{   \mbox{\hyperlink{group__Elm__General_ga7a05f37fd3a019da5e26c5fc91fcd937}{elm\_policy\_set}}(\mbox{\hyperlink{group__Elm__General_ggaa16f3378ecdbf660fa378402e3c5a0a9a02fadb6faada04b19d0fa42c11a8d32a}{ELM\_POLICY\_QUIT}}, \mbox{\hyperlink{group__Elm__General_gga46af37e6ac2c406321060be827117196abbe0962d88ae12afe1a173da881f56cd}{ELM\_POLICY\_QUIT\_LAST\_WINDOW\_CLOSED}});}
\DoxyCodeLine{}
\DoxyCodeLine{   win = \mbox{\hyperlink{group__Elm__Win_gac75d7752662fab73d6420706ce5be996}{elm\_win\_util\_standard\_add}}(\textcolor{stringliteral}{"example-\/web"}, \textcolor{stringliteral}{"Web Example"});}
\DoxyCodeLine{   \mbox{\hyperlink{group__Elm__Win_ga9a16a2f8c9fd5b6e9203ed9dcb53ea8b}{elm\_win\_autodel\_set}}(win, \mbox{\hyperlink{group__Eina__Types__Group_ga05c12dacc8b4058994df842b41be85fc}{EINA\_TRUE}});}
\DoxyCodeLine{}
\DoxyCodeLine{   e = evas\_object\_evas\_get(win);}
\DoxyCodeLine{   ctrl\_mask = \mbox{\hyperlink{group__Evas__Canvas_ga668f8e34ce152d130f37b6b903db3ee2}{evas\_key\_modifier\_mask\_get}}(e, \textcolor{stringliteral}{"Control"});}
\DoxyCodeLine{   \textcolor{keywordflow}{if} (!\mbox{\hyperlink{group__Evas__Object__Group__Events_ga85828f3c1f252391def19e179b850def}{evas\_object\_key\_grab}}(win, \textcolor{stringliteral}{"f"}, ctrl\_mask, 0, \mbox{\hyperlink{group__Eina__Types__Group_ga05c12dacc8b4058994df842b41be85fc}{EINA\_TRUE}}))}
\DoxyCodeLine{     fprintf(stderr, \textcolor{stringliteral}{"Could not grab trigger for search dialog\(\backslash\)n"});}
\DoxyCodeLine{}
\DoxyCodeLine{   \mbox{\hyperlink{group__Evas__Smart__Object__Group_ga18a8b179f94d21b2b09e19db11741061}{evas\_object\_smart\_callback\_add}}(win, \textcolor{stringliteral}{"delete,request"}, \_win\_del\_request\_cb,}
\DoxyCodeLine{                                  ad);}
\DoxyCodeLine{   \mbox{\hyperlink{group__Evas__Object__Group__Events_ga23be30ac5cdfb780f1ff82e9108ec26b}{evas\_object\_event\_callback\_add}}(win, \mbox{\hyperlink{Evas__Common_8h_ad64cde0da38a60e7cb7905b3ab216968a336b86bad4f145f84c155e4922335584}{EVAS\_CALLBACK\_KEY\_DOWN}},}
\DoxyCodeLine{                                  \_win\_search\_trigger\_cb, ad);}
\DoxyCodeLine{   \mbox{\hyperlink{group__Evas__Object__Group__Events_ga23be30ac5cdfb780f1ff82e9108ec26b}{evas\_object\_event\_callback\_add}}(win, \mbox{\hyperlink{Evas__Common_8h_ad64cde0da38a60e7cb7905b3ab216968aab869b5d534f02f1b3e151e2406a8c24}{EVAS\_CALLBACK\_FREE}}, \_win\_free\_cb, ad);}
\DoxyCodeLine{}
\DoxyCodeLine{   box = \mbox{\hyperlink{group__Elm__Box_ga3d0998b60ada633bacfa8869a921cfd7}{elm\_box\_add}}(win);}
\DoxyCodeLine{   evas\_object\_size\_hint\_weight\_set(box, \mbox{\hyperlink{Evas__Common_8h_aa47c85083d3dae0111c21ec49359306a}{EVAS\_HINT\_EXPAND}}, \mbox{\hyperlink{Evas__Common_8h_aa47c85083d3dae0111c21ec49359306a}{EVAS\_HINT\_EXPAND}});}
\DoxyCodeLine{   \mbox{\hyperlink{group__Elm__Win_ga505d6bd217e5ee01e82b548ec35986eb}{elm\_win\_resize\_object\_add}}(win, box);}
\DoxyCodeLine{   \mbox{\hyperlink{group__Evas__Object__Group__Basic_ga9cbc13661584e49fb9d9cdab514a1eeb}{evas\_object\_show}}(box);}
\DoxyCodeLine{}
\DoxyCodeLine{   url\_bar = \mbox{\hyperlink{group__Elm__Entry_ga9b6db43001f1f765aa38f8805411b822}{elm\_entry\_add}}(win);}
\DoxyCodeLine{   elm\_entry\_single\_line\_set(url\_bar, \mbox{\hyperlink{group__Eina__Types__Group_ga05c12dacc8b4058994df842b41be85fc}{EINA\_TRUE}});}
\DoxyCodeLine{   elm\_entry\_scrollable\_set(url\_bar, \mbox{\hyperlink{group__Eina__Types__Group_ga05c12dacc8b4058994df842b41be85fc}{EINA\_TRUE}});}
\DoxyCodeLine{   evas\_object\_size\_hint\_weight\_set(url\_bar, \mbox{\hyperlink{Evas__Common_8h_aa47c85083d3dae0111c21ec49359306a}{EVAS\_HINT\_EXPAND}}, 0.0);}
\DoxyCodeLine{   evas\_object\_size\_hint\_align\_set(url\_bar, \mbox{\hyperlink{Evas__Common_8h_aecbac710f36d52911fc34dcdaf8e729c}{EVAS\_HINT\_FILL}}, \mbox{\hyperlink{Evas__Common_8h_aecbac710f36d52911fc34dcdaf8e729c}{EVAS\_HINT\_FILL}});}
\DoxyCodeLine{   elm\_box\_pack\_end(box, url\_bar);}
\DoxyCodeLine{   \mbox{\hyperlink{group__Evas__Object__Group__Basic_ga9cbc13661584e49fb9d9cdab514a1eeb}{evas\_object\_show}}(url\_bar);}
\DoxyCodeLine{}
\DoxyCodeLine{   \mbox{\hyperlink{group__Evas__Smart__Object__Group_ga18a8b179f94d21b2b09e19db11741061}{evas\_object\_smart\_callback\_add}}(url\_bar, \textcolor{stringliteral}{"activated"}, \_url\_entry\_activated\_cb, ad);}
\DoxyCodeLine{}
\DoxyCodeLine{   box2 = \mbox{\hyperlink{group__Elm__Box_ga3d0998b60ada633bacfa8869a921cfd7}{elm\_box\_add}}(win);}
\DoxyCodeLine{   elm\_box\_horizontal\_set(box2, \mbox{\hyperlink{group__Eina__Types__Group_ga05c12dacc8b4058994df842b41be85fc}{EINA\_TRUE}});}
\DoxyCodeLine{   \mbox{\hyperlink{group__Elm__General_ga0531ec8867c72def7c780601764ca642}{elm\_object\_part\_content\_set}}(url\_bar, \textcolor{stringliteral}{"icon"}, box2);}
\DoxyCodeLine{   elm\_entry\_icon\_visible\_set(url\_bar, \mbox{\hyperlink{group__Eina__Types__Group_ga1feb115f8e9913e806e090d9bd5a7301}{EINA\_FALSE}});}
\DoxyCodeLine{}
\DoxyCodeLine{   btn = \mbox{\hyperlink{group__Elm__Button_ga0021b9d86d822367035843ed18bc6ea9}{elm\_button\_add}}(win);}
\DoxyCodeLine{   elm\_box\_pack\_end(box2, btn);}
\DoxyCodeLine{   \mbox{\hyperlink{group__Evas__Object__Group__Basic_ga9cbc13661584e49fb9d9cdab514a1eeb}{evas\_object\_show}}(btn);}
\DoxyCodeLine{}
\DoxyCodeLine{   ad-\/>nav.back = btn;}
\DoxyCodeLine{}
\DoxyCodeLine{   ic = \mbox{\hyperlink{group__Elm__Icon_ga5739728c1209f90422cf65a778a16502}{elm\_icon\_add}}(win);}
\DoxyCodeLine{   \mbox{\hyperlink{group__Elm__Icon_gab764b4c6c90543f254c013eff6a6db66}{elm\_icon\_standard\_set}}(ic, \textcolor{stringliteral}{"arrow\_left"});}
\DoxyCodeLine{   \mbox{\hyperlink{group__Elm__General_ga0531ec8867c72def7c780601764ca642}{elm\_object\_part\_content\_set}}(btn, \textcolor{stringliteral}{"icon"}, ic);}
\DoxyCodeLine{}
\DoxyCodeLine{   \mbox{\hyperlink{group__Evas__Smart__Object__Group_ga18a8b179f94d21b2b09e19db11741061}{evas\_object\_smart\_callback\_add}}(btn, \textcolor{stringliteral}{"clicked"}, \_nav\_back\_cb, ad);}
\DoxyCodeLine{}
\DoxyCodeLine{   btn = \mbox{\hyperlink{group__Elm__Button_ga0021b9d86d822367035843ed18bc6ea9}{elm\_button\_add}}(win);}
\DoxyCodeLine{   elm\_box\_pack\_end(box2, btn);}
\DoxyCodeLine{   \mbox{\hyperlink{group__Evas__Object__Group__Basic_ga9cbc13661584e49fb9d9cdab514a1eeb}{evas\_object\_show}}(btn);}
\DoxyCodeLine{}
\DoxyCodeLine{   ad-\/>nav.refresh = btn;}
\DoxyCodeLine{}
\DoxyCodeLine{   ic = \mbox{\hyperlink{group__Elm__Icon_ga5739728c1209f90422cf65a778a16502}{elm\_icon\_add}}(win);}
\DoxyCodeLine{   \mbox{\hyperlink{group__Elm__Icon_gab764b4c6c90543f254c013eff6a6db66}{elm\_icon\_standard\_set}}(ic, \textcolor{stringliteral}{"refresh"});}
\DoxyCodeLine{   \mbox{\hyperlink{group__Elm__General_ga0531ec8867c72def7c780601764ca642}{elm\_object\_part\_content\_set}}(btn, \textcolor{stringliteral}{"icon"}, ic);}
\DoxyCodeLine{}
\DoxyCodeLine{   \mbox{\hyperlink{group__Evas__Smart__Object__Group_ga18a8b179f94d21b2b09e19db11741061}{evas\_object\_smart\_callback\_add}}(btn, \textcolor{stringliteral}{"clicked"}, \_nav\_refresh\_cb, ad);}
\DoxyCodeLine{}
\DoxyCodeLine{   btn = \mbox{\hyperlink{group__Elm__Button_ga0021b9d86d822367035843ed18bc6ea9}{elm\_button\_add}}(win);}
\DoxyCodeLine{   elm\_box\_pack\_end(box2, btn);}
\DoxyCodeLine{   \mbox{\hyperlink{group__Evas__Object__Group__Basic_ga9cbc13661584e49fb9d9cdab514a1eeb}{evas\_object\_show}}(btn);}
\DoxyCodeLine{}
\DoxyCodeLine{   ad-\/>nav.fwd = btn;}
\DoxyCodeLine{}
\DoxyCodeLine{   ic = \mbox{\hyperlink{group__Elm__Icon_ga5739728c1209f90422cf65a778a16502}{elm\_icon\_add}}(win);}
\DoxyCodeLine{   \mbox{\hyperlink{group__Elm__Icon_gab764b4c6c90543f254c013eff6a6db66}{elm\_icon\_standard\_set}}(ic, \textcolor{stringliteral}{"arrow\_right"});}
\DoxyCodeLine{   \mbox{\hyperlink{group__Elm__General_ga0531ec8867c72def7c780601764ca642}{elm\_object\_part\_content\_set}}(btn, \textcolor{stringliteral}{"icon"}, ic);}
\DoxyCodeLine{}
\DoxyCodeLine{   \mbox{\hyperlink{group__Evas__Smart__Object__Group_ga18a8b179f94d21b2b09e19db11741061}{evas\_object\_smart\_callback\_add}}(btn, \textcolor{stringliteral}{"clicked"}, \_nav\_fwd\_cb, ad);}
\DoxyCodeLine{}
\DoxyCodeLine{   box2 = \mbox{\hyperlink{group__Elm__Box_ga3d0998b60ada633bacfa8869a921cfd7}{elm\_box\_add}}(win);}
\DoxyCodeLine{   elm\_box\_horizontal\_set(box2, \mbox{\hyperlink{group__Eina__Types__Group_ga05c12dacc8b4058994df842b41be85fc}{EINA\_TRUE}});}
\DoxyCodeLine{   evas\_object\_size\_hint\_weight\_set(box2, \mbox{\hyperlink{Evas__Common_8h_aa47c85083d3dae0111c21ec49359306a}{EVAS\_HINT\_EXPAND}}, 0.0);}
\DoxyCodeLine{   evas\_object\_size\_hint\_align\_set(box2, \mbox{\hyperlink{Evas__Common_8h_aecbac710f36d52911fc34dcdaf8e729c}{EVAS\_HINT\_FILL}}, \mbox{\hyperlink{Evas__Common_8h_aecbac710f36d52911fc34dcdaf8e729c}{EVAS\_HINT\_FILL}});}
\DoxyCodeLine{   elm\_box\_pack\_end(box, box2);}
\DoxyCodeLine{   \mbox{\hyperlink{group__Evas__Object__Group__Basic_ga9cbc13661584e49fb9d9cdab514a1eeb}{evas\_object\_show}}(box2);}
\DoxyCodeLine{}
\DoxyCodeLine{   btn = \mbox{\hyperlink{group__Elm__Button_ga0021b9d86d822367035843ed18bc6ea9}{elm\_button\_add}}(win);}
\DoxyCodeLine{   elm\_box\_pack\_end(box2, btn);}
\DoxyCodeLine{   \mbox{\hyperlink{group__Evas__Object__Group__Basic_ga9cbc13661584e49fb9d9cdab514a1eeb}{evas\_object\_show}}(btn);}
\DoxyCodeLine{}
\DoxyCodeLine{   ic = \mbox{\hyperlink{group__Elm__Icon_ga5739728c1209f90422cf65a778a16502}{elm\_icon\_add}}(win);}
\DoxyCodeLine{   \mbox{\hyperlink{group__Elm__Icon_gab764b4c6c90543f254c013eff6a6db66}{elm\_icon\_standard\_set}}(ic, \textcolor{stringliteral}{"file"});}
\DoxyCodeLine{   \mbox{\hyperlink{group__Elm__General_ga0531ec8867c72def7c780601764ca642}{elm\_object\_part\_content\_set}}(btn, \textcolor{stringliteral}{"icon"}, ic);}
\DoxyCodeLine{}
\DoxyCodeLine{   \mbox{\hyperlink{group__Evas__Smart__Object__Group_ga18a8b179f94d21b2b09e19db11741061}{evas\_object\_smart\_callback\_add}}(btn, \textcolor{stringliteral}{"clicked"}, \_add\_tab\_cb, ad);}
\DoxyCodeLine{}
\DoxyCodeLine{   tabs = \mbox{\hyperlink{group__Elm__Toolbar_ga0c0841ae232ebd6a9628b868d4e95b6f}{elm\_toolbar\_add}}(win);}
\DoxyCodeLine{   elm\_toolbar\_align\_set(tabs, 0.0);}
\DoxyCodeLine{   elm\_toolbar\_select\_mode\_set(tabs, \mbox{\hyperlink{group__Elm__General_gga8e4aa5aa238e472f33813babfff0d56fab3cfbf566fdbea2079f3081969f0c59c}{ELM\_OBJECT\_SELECT\_MODE\_ALWAYS}});}
\DoxyCodeLine{   elm\_toolbar\_homogeneous\_set(tabs, \mbox{\hyperlink{group__Eina__Types__Group_ga1feb115f8e9913e806e090d9bd5a7301}{EINA\_FALSE}});}
\DoxyCodeLine{   elm\_toolbar\_shrink\_mode\_set(tabs, ELM\_TOOLBAR\_SHRINK\_MENU);}
\DoxyCodeLine{   evas\_object\_size\_hint\_weight\_set(tabs, \mbox{\hyperlink{Evas__Common_8h_aa47c85083d3dae0111c21ec49359306a}{EVAS\_HINT\_EXPAND}}, \mbox{\hyperlink{Evas__Common_8h_aa47c85083d3dae0111c21ec49359306a}{EVAS\_HINT\_EXPAND}});}
\DoxyCodeLine{   evas\_object\_size\_hint\_align\_set(tabs, \mbox{\hyperlink{Evas__Common_8h_aecbac710f36d52911fc34dcdaf8e729c}{EVAS\_HINT\_FILL}}, \mbox{\hyperlink{Evas__Common_8h_aecbac710f36d52911fc34dcdaf8e729c}{EVAS\_HINT\_FILL}});}
\DoxyCodeLine{   elm\_box\_pack\_end(box2, tabs);}
\DoxyCodeLine{   \mbox{\hyperlink{group__Evas__Object__Group__Basic_ga9cbc13661584e49fb9d9cdab514a1eeb}{evas\_object\_show}}(tabs);}
\DoxyCodeLine{}
\DoxyCodeLine{   btn = \mbox{\hyperlink{group__Elm__Button_ga0021b9d86d822367035843ed18bc6ea9}{elm\_button\_add}}(win);}
\DoxyCodeLine{   elm\_box\_pack\_end(box2, btn);}
\DoxyCodeLine{   \mbox{\hyperlink{group__Evas__Object__Group__Basic_ga9cbc13661584e49fb9d9cdab514a1eeb}{evas\_object\_show}}(btn);}
\DoxyCodeLine{}
\DoxyCodeLine{   \mbox{\hyperlink{group__Evas__Smart__Object__Group_ga18a8b179f94d21b2b09e19db11741061}{evas\_object\_smart\_callback\_add}}(btn, \textcolor{stringliteral}{"clicked"}, \_close\_tab\_cb, ad);}
\DoxyCodeLine{}
\DoxyCodeLine{   ic = \mbox{\hyperlink{group__Elm__Icon_ga5739728c1209f90422cf65a778a16502}{elm\_icon\_add}}(win);}
\DoxyCodeLine{   \mbox{\hyperlink{group__Elm__Icon_gab764b4c6c90543f254c013eff6a6db66}{elm\_icon\_standard\_set}}(ic, \textcolor{stringliteral}{"close"});}
\DoxyCodeLine{   \mbox{\hyperlink{group__Elm__General_ga0531ec8867c72def7c780601764ca642}{elm\_object\_part\_content\_set}}(btn, \textcolor{stringliteral}{"icon"}, ic);}
\DoxyCodeLine{}
\DoxyCodeLine{   naviframe = \mbox{\hyperlink{group__Elm__Naviframe_gae58fd808eabae52ac15a03f8c7ec3d96}{elm\_naviframe\_add}}(win);}
\DoxyCodeLine{   evas\_object\_size\_hint\_weight\_set(naviframe, \mbox{\hyperlink{Evas__Common_8h_aa47c85083d3dae0111c21ec49359306a}{EVAS\_HINT\_EXPAND}}, \mbox{\hyperlink{Evas__Common_8h_aa47c85083d3dae0111c21ec49359306a}{EVAS\_HINT\_EXPAND}});}
\DoxyCodeLine{   evas\_object\_size\_hint\_align\_set(naviframe, \mbox{\hyperlink{Evas__Common_8h_aecbac710f36d52911fc34dcdaf8e729c}{EVAS\_HINT\_FILL}}, \mbox{\hyperlink{Evas__Common_8h_aecbac710f36d52911fc34dcdaf8e729c}{EVAS\_HINT\_FILL}});}
\DoxyCodeLine{   elm\_box\_pack\_end(box, naviframe);}
\DoxyCodeLine{   \mbox{\hyperlink{group__Evas__Object__Group__Basic_ga9cbc13661584e49fb9d9cdab514a1eeb}{evas\_object\_show}}(naviframe);}
\DoxyCodeLine{}
\DoxyCodeLine{   elm\_toolbar\_menu\_parent\_set(tabs, naviframe);}
\DoxyCodeLine{}
\DoxyCodeLine{   web = \mbox{\hyperlink{group__Elm__Web_ga2429d45ce9bea9428997a1fc3236b66a}{elm\_web\_add}}(win);}
\DoxyCodeLine{   elm\_web\_window\_create\_hook\_set(web, \_web\_create\_window\_cb, ad);}
\DoxyCodeLine{   elm\_web\_history\_enabled\_set(web, \mbox{\hyperlink{group__Eina__Types__Group_ga1feb115f8e9913e806e090d9bd5a7301}{EINA\_FALSE}});}
\DoxyCodeLine{   evas\_object\_size\_hint\_weight\_set(web, \mbox{\hyperlink{Evas__Common_8h_aa47c85083d3dae0111c21ec49359306a}{EVAS\_HINT\_EXPAND}}, \mbox{\hyperlink{Evas__Common_8h_aa47c85083d3dae0111c21ec49359306a}{EVAS\_HINT\_EXPAND}});}
\DoxyCodeLine{   evas\_object\_size\_hint\_align\_set(web, \mbox{\hyperlink{Evas__Common_8h_aecbac710f36d52911fc34dcdaf8e729c}{EVAS\_HINT\_FILL}}, \mbox{\hyperlink{Evas__Common_8h_aecbac710f36d52911fc34dcdaf8e729c}{EVAS\_HINT\_FILL}});}
\DoxyCodeLine{   elm\_naviframe\_item\_simple\_push(naviframe, web);}
\DoxyCodeLine{}
\DoxyCodeLine{   default\_content\_set(web);}
\DoxyCodeLine{}
\DoxyCodeLine{   ad-\/>win = win;}
\DoxyCodeLine{   ad-\/>main\_box = box;}
\DoxyCodeLine{   ad-\/>naviframe = naviframe;}
\DoxyCodeLine{   ad-\/>url\_entry = url\_bar;}
\DoxyCodeLine{   ad-\/>default\_web = web;}
\DoxyCodeLine{   ad-\/>tabs = tabs;}
\DoxyCodeLine{   ad-\/>close\_tab = btn;}
\DoxyCodeLine{}
\DoxyCodeLine{   evas\_object\_resize(win, 480, 640);}
\DoxyCodeLine{   \mbox{\hyperlink{group__Evas__Object__Group__Basic_ga9cbc13661584e49fb9d9cdab514a1eeb}{evas\_object\_show}}(win);}
\DoxyCodeLine{}
\DoxyCodeLine{   \mbox{\hyperlink{group__Elm__General_gadf2553f83e6b0b9c7fbe054019a664a1}{elm\_run}}();}
\DoxyCodeLine{}
\DoxyCodeLine{   \textcolor{keywordflow}{return} 0;}
\DoxyCodeLine{\}}
\DoxyCodeLine{\mbox{\hyperlink{group__Elm__General_ga50fe52d513f7e89c9c770afd76de7ad9}{ELM\_MAIN}}()}

\end{DoxyCodeInclude}


Some parts of the code were left out, as they are not relevant to the example, but the full listing can be found at \mbox{\hyperlink{web_example_02_8c-example}{web\+\_\+example\+\_\+02.c}}. 