forked from enlightenment/terminology
win: make background opacity work with color scheme
This commit is contained in:
parent
1de8762caf
commit
d79cdef0f1
|
@ -1057,13 +1057,13 @@ _smart_calculate(Evas_Object *obj)
|
||||||
sd->h = oh;
|
sd->h = oh;
|
||||||
switch (sd->type)
|
switch (sd->type)
|
||||||
{
|
{
|
||||||
|
case MEDIA_TYPE_RECT: return; /* NOT HANDLED HERE */
|
||||||
case MEDIA_TYPE_IMG: _type_img_calc(obj, ox, oy, ow, oh); break;
|
case MEDIA_TYPE_IMG: _type_img_calc(obj, ox, oy, ow, oh); break;
|
||||||
case MEDIA_TYPE_SCALE: _type_scale_calc(obj, ox, oy, ow, oh); break;
|
case MEDIA_TYPE_SCALE: _type_scale_calc(obj, ox, oy, ow, oh); break;
|
||||||
case MEDIA_TYPE_EDJE: _type_edje_calc(obj, ox, oy, ow, oh); break;
|
case MEDIA_TYPE_EDJE: _type_edje_calc(obj, ox, oy, ow, oh); break;
|
||||||
case MEDIA_TYPE_MOV: _type_mov_calc(obj, ox, oy, ow, oh); break;
|
case MEDIA_TYPE_MOV: _type_mov_calc(obj, ox, oy, ow, oh); break;
|
||||||
case MEDIA_TYPE_THUMB: _type_thumb_calc(obj, ox, oy, ow, oh); break;
|
case MEDIA_TYPE_THUMB: _type_thumb_calc(obj, ox, oy, ow, oh); break;
|
||||||
case MEDIA_TYPE_UNKNOWN:
|
case MEDIA_TYPE_UNKNOWN: return;
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
evas_object_move(sd->clip, ox, oy);
|
evas_object_move(sd->clip, ox, oy);
|
||||||
evas_object_resize(sd->clip, ow, oh);
|
evas_object_resize(sd->clip, ow, oh);
|
||||||
|
@ -1283,6 +1283,7 @@ media_add(Evas_Object *parent, const char *src, const Config *config, int mode,
|
||||||
case MEDIA_TYPE_EDJE:
|
case MEDIA_TYPE_EDJE:
|
||||||
sd->ext = ".edj";
|
sd->ext = ".edj";
|
||||||
break;
|
break;
|
||||||
|
case MEDIA_TYPE_RECT:
|
||||||
case MEDIA_TYPE_MOV:
|
case MEDIA_TYPE_MOV:
|
||||||
case MEDIA_TYPE_UNKNOWN:
|
case MEDIA_TYPE_UNKNOWN:
|
||||||
case MEDIA_TYPE_THUMB:
|
case MEDIA_TYPE_THUMB:
|
||||||
|
|
|
@ -18,6 +18,7 @@ typedef enum tag_Media_Type Media_Type;
|
||||||
|
|
||||||
enum tag_Media_Type {
|
enum tag_Media_Type {
|
||||||
MEDIA_TYPE_UNKNOWN,
|
MEDIA_TYPE_UNKNOWN,
|
||||||
|
MEDIA_TYPE_RECT,
|
||||||
MEDIA_TYPE_IMG,
|
MEDIA_TYPE_IMG,
|
||||||
MEDIA_TYPE_SCALE,
|
MEDIA_TYPE_SCALE,
|
||||||
MEDIA_TYPE_EDJE,
|
MEDIA_TYPE_EDJE,
|
||||||
|
|
123
src/bin/win.c
123
src/bin/win.c
|
@ -1057,9 +1057,20 @@ _term_trans(Term *term)
|
||||||
Evas_Object *edje = elm_layout_edje_get(term->core);
|
Evas_Object *edje = elm_layout_edje_get(term->core);
|
||||||
Win *wn = term->wn;
|
Win *wn = term->wn;
|
||||||
|
|
||||||
msg.val = term->config->opacity;
|
if (term->config->translucent)
|
||||||
edje_object_message_send(term->bg_edj, EDJE_MESSAGE_INT, 1, &msg);
|
{
|
||||||
edje_object_message_send(edje, EDJE_MESSAGE_INT, 1, &msg);
|
msg.val = term->config->opacity;
|
||||||
|
edje_object_message_send(term->bg_edj, EDJE_MESSAGE_INT, 1, &msg);
|
||||||
|
msg.val = term->config->opacity;
|
||||||
|
edje_object_message_send(edje, EDJE_MESSAGE_INT, 1, &msg);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
msg.val = 100;
|
||||||
|
edje_object_message_send(term->bg_edj, EDJE_MESSAGE_INT, 1, &msg);
|
||||||
|
msg.val = term->config->opacity;
|
||||||
|
edje_object_message_send(edje, EDJE_MESSAGE_INT, 1, &msg);
|
||||||
|
}
|
||||||
|
|
||||||
if (term->config->translucent != wn->translucent)
|
if (term->config->translucent != wn->translucent)
|
||||||
{
|
{
|
||||||
|
@ -5895,7 +5906,6 @@ void change_theme(Evas_Object *win, Config *config)
|
||||||
{
|
{
|
||||||
const Eina_List *terms, *l;
|
const Eina_List *terms, *l;
|
||||||
Term *term;
|
Term *term;
|
||||||
Win *wn;
|
|
||||||
|
|
||||||
terms = terms_from_win_object(win);
|
terms = terms_from_win_object(win);
|
||||||
if (!terms) return;
|
if (!terms) return;
|
||||||
|
@ -5908,7 +5918,13 @@ void change_theme(Evas_Object *win, Config *config)
|
||||||
colors_term_init(termio_textgrid_get(term->termio),
|
colors_term_init(termio_textgrid_get(term->termio),
|
||||||
config->color_scheme);
|
config->color_scheme);
|
||||||
termio_config_set(term->termio, config);
|
termio_config_set(term->termio, config);
|
||||||
/* TODO: change background color */
|
if (config->color_scheme && term->mediatype == MEDIA_TYPE_RECT)
|
||||||
|
{
|
||||||
|
evas_object_color_set(term->media,
|
||||||
|
config->color_scheme->bg.r,
|
||||||
|
config->color_scheme->bg.g,
|
||||||
|
config->color_scheme->bg.b, 255);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
l = elm_theme_extension_list_get(NULL);
|
l = elm_theme_extension_list_get(NULL);
|
||||||
|
@ -6854,63 +6870,72 @@ _cb_media_del(void *data,
|
||||||
static void
|
static void
|
||||||
_term_media_update(Term *term, const Config *config)
|
_term_media_update(Term *term, const Config *config)
|
||||||
{
|
{
|
||||||
|
Media_Type type;
|
||||||
|
Evas_Object *o;
|
||||||
|
|
||||||
|
if (term->media)
|
||||||
|
{
|
||||||
|
evas_object_event_callback_del(term->media,
|
||||||
|
EVAS_CALLBACK_DEL,
|
||||||
|
_cb_media_del);
|
||||||
|
evas_object_del(term->media);
|
||||||
|
}
|
||||||
|
|
||||||
if ((config->background) && (config->background[0]))
|
if ((config->background) && (config->background[0]))
|
||||||
{
|
{
|
||||||
Evas_Object *o;
|
|
||||||
Media_Type type;
|
|
||||||
|
|
||||||
if (term->media)
|
|
||||||
{
|
|
||||||
evas_object_event_callback_del(term->media,
|
|
||||||
EVAS_CALLBACK_DEL,
|
|
||||||
_cb_media_del);
|
|
||||||
evas_object_del(term->media);
|
|
||||||
}
|
|
||||||
type = media_src_type_get(config->background,
|
type = media_src_type_get(config->background,
|
||||||
strlen(config->background));
|
strlen(config->background));
|
||||||
term->media = o = media_add(term->wn->win,
|
o = media_add(term->wn->win,
|
||||||
config->background, config,
|
config->background, config,
|
||||||
MEDIA_BG, type);
|
MEDIA_BG, type);
|
||||||
evas_object_event_callback_add(o, EVAS_CALLBACK_DEL,
|
evas_object_event_callback_add(o, EVAS_CALLBACK_DEL,
|
||||||
_cb_media_del, term);
|
_cb_media_del, term);
|
||||||
elm_layout_content_set(term->core, "terminology.background", o);
|
elm_layout_content_set(term->core, "terminology.background", o);
|
||||||
evas_object_show(o);
|
evas_object_show(o);
|
||||||
term->mediatype = type;
|
|
||||||
switch (type)
|
|
||||||
{
|
|
||||||
case MEDIA_TYPE_IMG:
|
|
||||||
elm_layout_signal_emit(term->bg, "media,image", "terminology");
|
|
||||||
elm_layout_signal_emit(term->core, "media,image", "terminology");
|
|
||||||
break;
|
|
||||||
case MEDIA_TYPE_SCALE:
|
|
||||||
elm_layout_signal_emit(term->bg, "media,scale", "terminology");
|
|
||||||
elm_layout_signal_emit(term->core, "media,scale", "terminology");
|
|
||||||
break;
|
|
||||||
case MEDIA_TYPE_EDJE:
|
|
||||||
elm_layout_signal_emit(term->bg, "media,edje", "terminology");
|
|
||||||
elm_layout_signal_emit(term->core, "media,edje", "terminology");
|
|
||||||
break;
|
|
||||||
case MEDIA_TYPE_MOV:
|
|
||||||
elm_layout_signal_emit(term->bg, "media,movie", "terminology");
|
|
||||||
elm_layout_signal_emit(term->core, "media,movie", "terminology");
|
|
||||||
break;
|
|
||||||
case MEDIA_TYPE_UNKNOWN:
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (term->media)
|
type = MEDIA_TYPE_RECT;
|
||||||
|
o = evas_object_rectangle_add(evas_object_evas_get(term->wn->win));
|
||||||
|
evas_object_color_set(o, 0, 0, 0, 255);
|
||||||
|
if (config->color_scheme)
|
||||||
{
|
{
|
||||||
evas_object_event_callback_del(term->media,
|
evas_object_color_set(o,
|
||||||
EVAS_CALLBACK_DEL,
|
config->color_scheme->bg.r,
|
||||||
_cb_media_del);
|
config->color_scheme->bg.g,
|
||||||
elm_layout_signal_emit(term->bg, "media,off", "terminology");
|
config->color_scheme->bg.b, 255);
|
||||||
elm_layout_signal_emit(term->core, "media,off", "terminology");
|
|
||||||
evas_object_del(term->media);
|
|
||||||
term->media = NULL;
|
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
evas_object_color_set(o, 0, 0, 0, 255);
|
||||||
|
}
|
||||||
|
evas_object_show(o);
|
||||||
|
term->media = o;
|
||||||
|
term->mediatype = type;
|
||||||
|
switch (type)
|
||||||
|
{
|
||||||
|
case MEDIA_TYPE_RECT:
|
||||||
|
elm_layout_signal_emit(term->bg, "media,off", "terminology");
|
||||||
|
elm_layout_signal_emit(term->core, "media,off", "terminology");
|
||||||
|
break;
|
||||||
|
case MEDIA_TYPE_IMG:
|
||||||
|
elm_layout_signal_emit(term->bg, "media,image", "terminology");
|
||||||
|
elm_layout_signal_emit(term->core, "media,image", "terminology");
|
||||||
|
break;
|
||||||
|
case MEDIA_TYPE_SCALE:
|
||||||
|
elm_layout_signal_emit(term->bg, "media,scale", "terminology");
|
||||||
|
elm_layout_signal_emit(term->core, "media,scale", "terminology");
|
||||||
|
break;
|
||||||
|
case MEDIA_TYPE_EDJE:
|
||||||
|
elm_layout_signal_emit(term->bg, "media,edje", "terminology");
|
||||||
|
elm_layout_signal_emit(term->core, "media,edje", "terminology");
|
||||||
|
break;
|
||||||
|
case MEDIA_TYPE_MOV:
|
||||||
|
elm_layout_signal_emit(term->bg, "media,movie", "terminology");
|
||||||
|
elm_layout_signal_emit(term->core, "media,movie", "terminology");
|
||||||
|
break;
|
||||||
|
case MEDIA_TYPE_UNKNOWN:
|
||||||
|
default:
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue