Skip to content

Commit

Permalink
Merge branch 'yshui:next' into next
Browse files Browse the repository at this point in the history
  • Loading branch information
pijulius committed Aug 19, 2024
2 parents 8c6b7d2 + bc455e8 commit acef336
Show file tree
Hide file tree
Showing 4 changed files with 27 additions and 11 deletions.
8 changes: 8 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,11 @@
# v12-rc2 (2024-Aug-17)

## Bug fixes

* Setting corner-radius to 0 cause all windows to not render: #1311
* Setting corner-radius causes windows to have a 1-pixel transparent border
* Window shaders no longer work: #1312

# v12-rc1 (2024-Aug-12)

## New features
Expand Down
4 changes: 4 additions & 0 deletions src/transition/script.c
Original file line number Diff line number Diff line change
Expand Up @@ -444,6 +444,10 @@ transition_compile(struct compilation_stack **stack_entry, config_setting_t *set
free(err);
return false;
}
} else if (config_setting_lookup(setting, "curve") != NULL) {
casprintf(out_err, "Invalid curve definition at line %d. `curve` must be a string.",
config_setting_source_line(setting));
return false;
} else {
curve = CURVE_LINEAR_INIT;
}
Expand Down
22 changes: 11 additions & 11 deletions src/wm/win.c
Original file line number Diff line number Diff line change
Expand Up @@ -259,24 +259,24 @@ static void win_clear_all_properties_stale(struct win *w);
bool win_update_opacity_prop(struct x_connection *c, struct atom *atoms, struct win *w,
bool detect_client_opacity) {
bool old_has_opacity_prop = w->has_opacity_prop;
auto old_opacity = w->opacity_prop;
// get frame opacity first
w->has_opacity_prop =
wid_get_opacity_prop(c, atoms, win_id(w), OPAQUE, &w->opacity_prop);

if (w->has_opacity_prop) {
// opacity found
return old_has_opacity_prop != w->has_opacity_prop;
if (!w->has_opacity_prop && detect_client_opacity) {
// didn't find opacity prop on the frame, try to get client opacity
auto client_win = wm_ref_client_of(w->tree_ref);
if (client_win != NULL) {
w->has_opacity_prop = wid_get_opacity_prop(
c, atoms, wm_ref_win_id(client_win), OPAQUE, &w->opacity_prop);
}
}

auto client_win = wm_ref_client_of(w->tree_ref);
if (!detect_client_opacity || client_win == NULL) {
return old_has_opacity_prop != w->has_opacity_prop;
if (w->has_opacity_prop) {
return !old_has_opacity_prop || w->opacity_prop != old_opacity;
}

// get client opacity
w->has_opacity_prop = wid_get_opacity_prop(c, atoms, wm_ref_win_id(client_win),
OPAQUE, &w->opacity_prop);
return old_has_opacity_prop != w->has_opacity_prop;
return old_has_opacity_prop;
}

// TODO(yshui) make WIN_FLAGS_FACTOR_CHANGED more fine-grained, or find a better
Expand Down
4 changes: 4 additions & 0 deletions src/wm/win.h
Original file line number Diff line number Diff line change
Expand Up @@ -358,6 +358,8 @@ win_maybe_options_fold(struct window_maybe_options upper, struct window_maybe_op
.fade = tri_or(upper.fade, lower.fade),
.invert_color = tri_or(upper.invert_color, lower.invert_color),
.paint = tri_or(upper.paint, lower.paint),
.transparent_clipping =
tri_or(upper.transparent_clipping, lower.transparent_clipping),
.opacity = !safe_isnan(upper.opacity) ? upper.opacity : lower.opacity,
.dim = !safe_isnan(upper.dim) ? upper.dim : lower.dim,
.shader = upper.shader ? upper.shader : lower.shader,
Expand All @@ -383,6 +385,8 @@ win_maybe_options_or(struct window_maybe_options maybe, struct window_options de
.fade = tri_or_bool(maybe.fade, def.fade),
.invert_color = tri_or_bool(maybe.invert_color, def.invert_color),
.paint = tri_or_bool(maybe.paint, def.paint),
.transparent_clipping =
tri_or_bool(maybe.transparent_clipping, def.transparent_clipping),
.opacity = !safe_isnan(maybe.opacity) ? maybe.opacity : def.opacity,
.dim = !safe_isnan(maybe.dim) ? maybe.dim : def.dim,
.shader = maybe.shader ? maybe.shader : def.shader,
Expand Down

0 comments on commit acef336

Please sign in to comment.