forked from enlightenment/efl
efl ui win - fix legacy theme support correctly
this fixes T6918. during development legacy theme support was b roken.
473e657120
broke it.
This commit is contained in:
parent
e46a2f95a8
commit
060e62061d
|
@ -4349,6 +4349,30 @@ _elm_object_part_cursor_set(Evas_Object *obj, Evas_Object *edj,
|
||||||
elm_object_sub_cursor_set(sub, obj, cursor);
|
elm_object_sub_cursor_set(sub, obj, cursor);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static char *
|
||||||
|
_efl_system_theme_path_get(void)
|
||||||
|
{
|
||||||
|
// Find the default theme from EFL install. Quite ugly.
|
||||||
|
const char *sysdir;
|
||||||
|
char *version;
|
||||||
|
char path[PATH_MAX];
|
||||||
|
int v;
|
||||||
|
|
||||||
|
sysdir = elm_theme_system_dir_get();
|
||||||
|
if (!sysdir) return NULL;
|
||||||
|
|
||||||
|
eina_file_path_join(path, PATH_MAX, sysdir, "default.edj");
|
||||||
|
version = edje_file_data_get(path, "version");
|
||||||
|
v = version ? atoi(version) : 0;
|
||||||
|
free(version);
|
||||||
|
if (v < FRAME_OBJ_THEME_MIN_VERSION)
|
||||||
|
{
|
||||||
|
ERR("Default system theme is too old, something is wrong with your installation of EFL.");
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
return strdup(path);
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
_elm_win_frame_add(Efl_Ui_Win_Data *sd, const char *element, const char *style)
|
_elm_win_frame_add(Efl_Ui_Win_Data *sd, const char *element, const char *style)
|
||||||
{
|
{
|
||||||
|
@ -4380,16 +4404,23 @@ _elm_win_frame_add(Efl_Ui_Win_Data *sd, const char *element, const char *style)
|
||||||
|
|
||||||
if (v < FRAME_OBJ_THEME_MIN_VERSION)
|
if (v < FRAME_OBJ_THEME_MIN_VERSION)
|
||||||
{
|
{
|
||||||
|
// Theme compatibility
|
||||||
|
const char *key = "elm/border/base/default"; // FIXME?
|
||||||
|
char *sys_theme;
|
||||||
|
|
||||||
WRN("Selected theme does not support the required border theme API "
|
WRN("Selected theme does not support the required border theme API "
|
||||||
"(version = %d, requires >= %d).",
|
"(version = %d, requires >= %d).",
|
||||||
v, FRAME_OBJ_THEME_MIN_VERSION);
|
v, FRAME_OBJ_THEME_MIN_VERSION);
|
||||||
|
sys_theme = _efl_system_theme_path_get();
|
||||||
if (!elm_widget_theme_object_set(sd->obj, sd->frame_obj, "border", element, style))
|
if (!sys_theme ||
|
||||||
|
!edje_object_file_set(sd->frame_obj, sys_theme, key))
|
||||||
{
|
{
|
||||||
ERR("Failed to set main border theme for the window.");
|
ERR("Failed to set main border theme for the window.");
|
||||||
ELM_SAFE_FREE(sd->frame_obj, evas_object_del);
|
ELM_SAFE_FREE(sd->frame_obj, evas_object_del);
|
||||||
|
free(sys_theme);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
free(sys_theme);
|
||||||
}
|
}
|
||||||
|
|
||||||
edje_object_freeze(sd->frame_obj);
|
edje_object_freeze(sd->frame_obj);
|
||||||
|
|
Loading…
Reference in New Issue