From a267eb5705faecbe198757f5184b6383a8f2887d Mon Sep 17 00:00:00 2001 From: koekeishiya Date: Wed, 28 Jul 2021 19:38:33 +0200 Subject: [PATCH] #788 windows that are made managable through rules should be eligible for opacity, focus-follows-mouse, and borders --- CHANGELOG.md | 1 + src/border.c | 2 +- src/event.c | 8 ++++++-- src/window_manager.c | 2 +- 4 files changed, 9 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index a81e5642..864b70cb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,7 @@ This project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.htm ## [Unreleased] ### Changed +- Malformed windows that are managed through rules should be eligible for window alpha, focus follows mouse, and window borders [#788](https://github.com/koekeishiya/yabai/issues/788) - Improve behaviour of *focus_follows_mouse autoraise*, preventing a window from being raised if it would occlude some other window. autoraise is temporarily disabled while a menu is opened. [#407](https://github.com/koekeishiya/yabai/issues/407) - Work around broken Apple code for retrieving menubar dimensions on Apple Silicon M1 [#793](https://github.com/koekeishiya/yabai/issues/793) - Rework query attributes and define dataformat as part of the API [#775](https://github.com/koekeishiya/yabai/issues/775) diff --git a/src/border.c b/src/border.c index e3560eae..a8e2ca08 100644 --- a/src/border.c +++ b/src/border.c @@ -65,7 +65,7 @@ void border_create(struct window *window) { if (window->border.id) return; - if ((!window_is_standard(window)) && (!window_is_dialog(window))) return; + if ((!window->rule_manage) && (!window_is_standard(window)) && (!window_is_dialog(window))) return; CGSNewRegionWithRect(&window->frame, &window->border.region); window->border.frame.size = window->frame.size; diff --git a/src/event.c b/src/event.c index 5e1bf7a1..12305295 100644 --- a/src/event.c +++ b/src/event.c @@ -817,8 +817,12 @@ static EVENT_CALLBACK(EVENT_HANDLER_MOUSE_MOVED) struct window *window = window_manager_find_window_at_point(&g_window_manager, point); if (window) { if (window->id == g_window_manager.focused_window_id) goto out; - if (!window_level_is_standard(window)) goto out; - if (!window_is_standard(window)) goto out; + + if (!window->rule_manage) { + if (!window_level_is_standard(window)) goto out; + if ((!window_is_standard(window)) && (!window_is_dialog(window))) goto out; + } + if (g_window_manager.ffm_mode == FFM_AUTOFOCUS) { diff --git a/src/window_manager.c b/src/window_manager.c index c5a274ae..23fc5e14 100644 --- a/src/window_manager.c +++ b/src/window_manager.c @@ -474,7 +474,7 @@ void window_manager_set_window_opacity(struct window_manager *wm, struct window { if (!wm->enable_window_opacity) return; if (window->opacity != 0.0f) return; - if ((!window_is_standard(window)) && (!window_is_dialog(window))) return; + if ((!window->rule_manage) && (!window_is_standard(window)) && (!window_is_dialog(window))) return; window_manager_set_opacity(wm, window, opacity); }