forked from enlightenment/efl
elm_config gains a new feature: multitheme selection! themes are added in the order of selection, so to use an overlay for a theme you would select the "base" theme first, then the "overlay" part. then just click use theme and zooooooooooooooooooon
SVN revision: 61426
This commit is contained in:
parent
0cdc520e33
commit
f63260d300
|
@ -17,7 +17,7 @@ struct _Theme
|
|||
Eina_Bool in_search_path;
|
||||
};
|
||||
|
||||
static Theme *tsel = NULL;
|
||||
static const Eina_List *tsel = NULL;
|
||||
static Eina_List *themes = NULL;
|
||||
|
||||
struct _Elm_Text_Class_Data
|
||||
|
@ -1063,28 +1063,13 @@ _theme_use(void *data __UNUSED__,
|
|||
void *event_info __UNUSED__)
|
||||
{
|
||||
const char *defth;
|
||||
char *newth;
|
||||
Theme *t = tsel;
|
||||
Elm_Theme *th;
|
||||
Evas_Object *win = elm_object_top_widget_get(obj);
|
||||
Evas_Object *sample = evas_object_data_get(win, "theme_preview");
|
||||
|
||||
if (!t) return;
|
||||
defth = elm_theme_get(NULL);
|
||||
newth = malloc(strlen(defth) + 1 + strlen(t->name) + 1);
|
||||
if (newth)
|
||||
{
|
||||
char *rest;
|
||||
|
||||
newth[0] = 0;
|
||||
rest = strchr(defth, ':');
|
||||
if (!rest)
|
||||
strcpy(newth, t->name);
|
||||
else
|
||||
{
|
||||
strcpy(newth, t->name);
|
||||
strcat(newth, rest);
|
||||
}
|
||||
elm_theme_all_set(newth);
|
||||
free(newth);
|
||||
}
|
||||
th = elm_object_theme_get(sample);
|
||||
defth = elm_theme_get(th);
|
||||
elm_theme_all_set(defth);
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -1095,30 +1080,33 @@ _theme_sel(void *data,
|
|||
Theme *t = data;
|
||||
Evas_Object *win = elm_object_top_widget_get(obj);
|
||||
Evas_Object *sample = evas_object_data_get(win, "theme_preview");
|
||||
Elm_Theme *th;
|
||||
const char *defth;
|
||||
char *newth;
|
||||
Elm_Theme *th, *sth;
|
||||
const char *defth, *rest;
|
||||
Eina_Strbuf *newth;
|
||||
|
||||
tsel = t;
|
||||
defth = elm_theme_get(NULL);
|
||||
newth = malloc(strlen(defth) + 1 + strlen(t->name) + 1);
|
||||
tsel = elm_list_selected_items_get(obj);
|
||||
sth = elm_object_theme_get(sample);
|
||||
defth = elm_theme_get(sth);
|
||||
newth = eina_strbuf_new();
|
||||
EINA_SAFETY_ON_NULL_RETURN(newth);
|
||||
th = elm_theme_new();
|
||||
if (newth)
|
||||
if (!th)
|
||||
{
|
||||
char *rest;
|
||||
|
||||
newth[0] = 0;
|
||||
rest = strchr(defth, ':');
|
||||
if (!rest)
|
||||
strcpy(newth, t->name);
|
||||
eina_strbuf_free(newth);
|
||||
return;
|
||||
}
|
||||
if (eina_list_count(tsel) > 1)
|
||||
eina_strbuf_append_printf(newth, "%s:%s", t->name, defth);
|
||||
else
|
||||
{
|
||||
strcpy(newth, t->name);
|
||||
strcat(newth, rest);
|
||||
}
|
||||
elm_theme_set(th, newth);
|
||||
free(newth);
|
||||
rest = strchr(defth, ':');
|
||||
if (!rest)
|
||||
eina_strbuf_append(newth, t->name);
|
||||
else
|
||||
eina_strbuf_append_printf(newth, "%s%s", t->name, rest);
|
||||
}
|
||||
elm_theme_set(th, eina_strbuf_string_get(newth));
|
||||
eina_strbuf_free(newth);
|
||||
elm_object_theme_set(sample, th);
|
||||
elm_theme_free(th);
|
||||
}
|
||||
|
@ -1303,6 +1291,7 @@ _status_config_themes(Evas_Object *win,
|
|||
evas_object_show(pd);
|
||||
|
||||
li = elm_list_add(win);
|
||||
elm_list_multi_select_set(li, EINA_TRUE);
|
||||
evas_object_size_hint_weight_set(li, 1.0, 1.0);
|
||||
evas_object_size_hint_align_set(li, EVAS_HINT_FILL, EVAS_HINT_FILL);
|
||||
elm_frame_content_set(pd, li);
|
||||
|
|
Loading…
Reference in New Issue