From 293081bb3ce4098e8902b398edbe98405f2b9aaa Mon Sep 17 00:00:00 2001 From: Boris Faure Date: Sat, 24 Sep 2022 00:02:33 +0200 Subject: [PATCH] background: fade it with the color defined as background in the color scheme --- ChangeLog.theme | 6 ++++++ THEMES.md | 5 +++++ data/themes/default/core.edc | 14 ++++++++------ src/bin/options_background.c | 4 ---- src/bin/win.c | 21 +++++++++++++++++---- 5 files changed, 36 insertions(+), 14 deletions(-) diff --git a/ChangeLog.theme b/ChangeLog.theme index 8855e279..582c05f5 100644 --- a/ChangeLog.theme +++ b/ChangeLog.theme @@ -2,6 +2,12 @@ Terminology 1.12.1 ================== +Changes since 1.12.1: +-------------------- + * Add part "terminology.fade" in group "terminology/core" to set the color + used to fade the background of the terminal. Terminology sets it to the + background color of the colorscheme. + Changes since 1.8.0: -------------------- * Add group "terminology/color_preview" to display a preview of a diff --git a/THEMES.md b/THEMES.md index 630bfee2..6084b65d 100644 --- a/THEMES.md +++ b/THEMES.md @@ -176,6 +176,11 @@ To notify that the current tab is being dragged outside of other tabs. ## Swallowed parts +### Part `terminology.fade` + +Part used to fade the background, either with a solid color or the screen +background when the `translucent` option is set. + ### Part `terminology.background` Actual background. diff --git a/data/themes/default/core.edc b/data/themes/default/core.edc index ab0d2e9a..122d7c4b 100644 --- a/data/themes/default/core.edc +++ b/data/themes/default/core.edc @@ -10,23 +10,25 @@ group { name: "terminology/core"; new r, g, b, a, v; v = (getarg(2) * 255) / 100; - custom_state(PART:"fade", "default", 0.0); - get_state_val(PART:"fade", STATE_COLOR, r, g, b, a); - set_state_val(PART:"fade", STATE_COLOR, r, g, b, v); - set_state(PART:"fade", "custom", 0.0); + custom_state(PART:"terminology.fade", "default", 0.0); + get_state_val(PART:"terminology.fade", STATE_COLOR, r, g, b, a); + set_state_val(PART:"terminology.fade", STATE_COLOR, r, g, b, v); + set_state(PART:"terminology.fade", "custom", 0.0); } } } parts { //////////////////////////////////////////////////////////////////// // background handling - part { name: "fade"; type: RECT; + part { name: "terminology.fade"; type: RECT; description { state: "default" 0.0; + color_class: "BG"; } } part { name: "terminology.background"; type: SWALLOW; - clip_to: "fade"; + clip_to: "terminology.fade"; description { state: "default" 0.0; + color_class: "BG"; } description { state: "image" 0.0; inherit: "default" 0.0; diff --git a/src/bin/options_background.c b/src/bin/options_background.c index 78b2bc5d..8218ecb3 100644 --- a/src/bin/options_background.c +++ b/src/bin/options_background.c @@ -51,7 +51,6 @@ _cb_op_video_trans_chg(void *data, Config *config = ctx->config; config->translucent = elm_check_state_get(obj); - elm_object_disabled_set(ctx->op_opacity, !config->translucent); config_save(config); main_trans_update(); } @@ -65,8 +64,6 @@ _cb_op_video_opacity_chg(void *data, Config *config = ctx->config; config->opacity = elm_slider_value_get(obj); - if (!config->translucent) - return; config_save(config); main_trans_update(); } @@ -569,7 +566,6 @@ options_background(Evas_Object *opbox, Evas_Object *term) elm_slider_indicator_format_set(o, _("%1.0f%%")); elm_slider_min_max_set(o, 0, 100); elm_slider_value_set(o, config->opacity); - elm_object_disabled_set(o, !config->translucent); elm_box_pack_end(bx, o); evas_object_show(o); evas_object_smart_callback_add(o, "changed", diff --git a/src/bin/win.c b/src/bin/win.c index 7183462c..e678f23c 100644 --- a/src/bin/win.c +++ b/src/bin/win.c @@ -1058,10 +1058,7 @@ _term_trans(Term *term) Evas_Object *edje = elm_layout_edje_get(term->core); Win *wn = term->wn; - if (term->config->translucent) - msg.val = term->config->opacity; - else - msg.val = 100; + msg.val = term->config->opacity; edje_object_message_send(term->bg_edj, EDJE_MESSAGE_INT, 1, &msg); edje_object_message_send(edje, EDJE_MESSAGE_INT, 1, &msg); @@ -1075,6 +1072,13 @@ _term_trans(Term *term) } else { + if (wn->config->color_scheme) + { + evas_object_color_set(wn->backbg, + wn->config->color_scheme->bg.r, + wn->config->color_scheme->bg.g, + wn->config->color_scheme->bg.b, 255); + } elm_win_alpha_set(wn->win, EINA_FALSE); evas_object_show(wn->backbg); wn->translucent = EINA_FALSE; @@ -2237,6 +2241,15 @@ win_new(const char *name, const char *role, const char *title, wn->backbg = o = evas_object_rectangle_add(evas_object_evas_get(wn->win)); evas_object_color_set(o, 0, 0, 0, 255); + if (wn->config->color_scheme) + { + evas_object_color_set(o, + wn->config->color_scheme->bg.r, + wn->config->color_scheme->bg.g, + wn->config->color_scheme->bg.b, 255); + } + else + evas_object_color_set(o, 0, 0, 0, 255); evas_object_size_hint_weight_set(o, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); evas_object_size_hint_fill_set(o, EVAS_HINT_FILL, EVAS_HINT_FILL); elm_win_resize_object_add(wn->win, o);