forked from enlightenment/efl
Add overlay_list_get and extension_list_get, and use them in elm_web to correctly set the ewk_view theme
SVN revision: 68746
This commit is contained in:
parent
8bdf6c8ded
commit
4373acedcc
|
@ -435,6 +435,13 @@ elm_theme_overlay_del(Elm_Theme *th, const char *item)
|
|||
elm_theme_flush(th);
|
||||
}
|
||||
|
||||
EAPI const Eina_List *
|
||||
elm_theme_overlay_list_get(Elm_Theme *th)
|
||||
{
|
||||
if (!th) th = &(theme_default);
|
||||
return th->overlay;
|
||||
}
|
||||
|
||||
EAPI void
|
||||
elm_theme_extension_add(Elm_Theme *th, const char *item)
|
||||
{
|
||||
|
@ -464,6 +471,13 @@ elm_theme_extension_del(Elm_Theme *th, const char *item)
|
|||
elm_theme_flush(th);
|
||||
}
|
||||
|
||||
EAPI const Eina_List *
|
||||
elm_theme_extension_list_get(Elm_Theme *th)
|
||||
{
|
||||
if (!th) th = &(theme_default);
|
||||
return th->extension;
|
||||
}
|
||||
|
||||
EAPI void
|
||||
elm_theme_set(Elm_Theme *th, const char *theme)
|
||||
{
|
||||
|
|
|
@ -179,6 +179,16 @@ EAPI void elm_theme_overlay_add(Elm_Theme *th, const char *item);
|
|||
*/
|
||||
EAPI void elm_theme_overlay_del(Elm_Theme *th, const char *item);
|
||||
|
||||
/**
|
||||
* Get the list of registered overlays for the given theme
|
||||
*
|
||||
* @param th The theme from which to get the overlays
|
||||
* @return List of theme overlays. Do not free it.
|
||||
*
|
||||
* @see elm_theme_overlay_add()
|
||||
*/
|
||||
EAPI const Eina_List *elm_theme_overlay_list_get(Elm_Theme *th);
|
||||
|
||||
/**
|
||||
* Appends a theme extension to the list of extensions.
|
||||
*
|
||||
|
@ -210,6 +220,16 @@ EAPI void elm_theme_extension_add(Elm_Theme *th, const char *item);
|
|||
*/
|
||||
EAPI void elm_theme_extension_del(Elm_Theme *th, const char *item);
|
||||
|
||||
/**
|
||||
* Get the list of registered extensions for the given theme
|
||||
*
|
||||
* @param th The theme from which to get the extensions
|
||||
* @return List of theme extensions. Do not free it.
|
||||
*
|
||||
* @see elm_theme_extension_add()
|
||||
*/
|
||||
EAPI const Eina_List *elm_theme_extension_list_get(Elm_Theme *th);
|
||||
|
||||
/**
|
||||
* Set the theme search order for the given theme
|
||||
*
|
||||
|
|
|
@ -138,29 +138,45 @@ static const Evas_Smart_Cb_Description _elm_web_callback_names[] = {
|
|||
{ NULL, NULL }
|
||||
};
|
||||
|
||||
static char *
|
||||
_webkit_theme_find(const Eina_List *list)
|
||||
{
|
||||
const Eina_List *l;
|
||||
const char *th;
|
||||
|
||||
EINA_LIST_FOREACH(list, l, th)
|
||||
{
|
||||
char *path = elm_theme_list_item_path_get(th, NULL);
|
||||
if (!path) continue;
|
||||
if (edje_file_group_exists(path, "webkit/base"))
|
||||
return path;
|
||||
free(path);
|
||||
}
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
static void
|
||||
_theme_hook(Evas_Object *obj)
|
||||
{
|
||||
#ifdef HAVE_ELEMENTARY_WEB
|
||||
Elm_Theme *theme = elm_object_theme_get(obj);
|
||||
Widget_Data *wd = elm_widget_data_get(obj);
|
||||
const Eina_List *themes, *l;
|
||||
const char *th;
|
||||
const Eina_List *themes;
|
||||
char *view_theme = NULL;
|
||||
|
||||
themes = elm_theme_list_get(theme);
|
||||
EINA_LIST_FOREACH(themes, l, th)
|
||||
{
|
||||
char *path = elm_theme_list_item_path_get(th, NULL);
|
||||
if (!path) continue;
|
||||
if (edje_file_group_exists(path, "webkit/base"))
|
||||
{
|
||||
view_theme = path;
|
||||
break;
|
||||
}
|
||||
free(path);
|
||||
}
|
||||
themes = elm_theme_overlay_list_get(theme);
|
||||
view_theme = _webkit_theme_find(themes);
|
||||
if (view_theme) goto set;
|
||||
|
||||
themes = elm_theme_list_get(theme);
|
||||
view_theme = _webkit_theme_find(themes);
|
||||
if (view_theme) goto set;
|
||||
|
||||
themes = elm_theme_extension_list_get(theme);
|
||||
view_theme = _webkit_theme_find(themes);
|
||||
|
||||
set:
|
||||
if (view_theme)
|
||||
{
|
||||
ewk_view_theme_set(wd->ewk_view, view_theme);
|
||||
|
|
Loading…
Reference in New Issue