diff --git a/CHANGELOG.md b/CHANGELOG.md index 533f601c..54ad3a25 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -95,6 +95,9 @@ ### Changed * `cursor.color` moved to `colors.cursor`. +* OSC-11 without an alpha value will now restore the configured + (i.e. from `foot.ini`) alpha, rather than keeping whatever the + current alpha value is, unchanged. ### Deprecated diff --git a/osc.c b/osc.c index 7e3e6376..78f335e1 100644 --- a/osc.c +++ b/osc.c @@ -1455,15 +1455,20 @@ osc_dispatch(struct terminal *term) case 11: term->colors.bg = color; - if (have_alpha) { - const bool changed = term->colors.alpha != alpha; - term->colors.alpha = alpha; - - if (changed) { - wayl_win_alpha_changed(term->window); - term_font_subpixel_changed(term); - } + if (!have_alpha) { + alpha = term->colors.active_theme == COLOR_THEME1 + ? term->conf->colors.alpha + : term->conf->colors2.alpha; } + + const bool changed = term->colors.alpha != alpha; + term->colors.alpha = alpha; + + if (changed) { + wayl_win_alpha_changed(term->window); + term_font_subpixel_changed(term); + } + term_damage_color(term, COLOR_DEFAULT, 0); term_damage_margins(term); break;