[PATCH] dim-layer: fix dimming for unfocused surfaces

pochu27 at gmail.com pochu27 at gmail.com
Tue Jan 7 08:23:19 PST 2014


From: Emilio Pozuelo Monfort <emilio.pozuelo at collabora.co.uk>

Unfocusing a surface should dim it when dim-layer is enabled,
but this got broken in commit 83ffd9.
---
 desktop-shell/shell.c | 13 ++++++++++++-
 1 file changed, 12 insertions(+), 1 deletion(-)

diff --git a/desktop-shell/shell.c b/desktop-shell/shell.c
index f85a269..cca96be 100644
--- a/desktop-shell/shell.c
+++ b/desktop-shell/shell.c
@@ -4141,6 +4141,7 @@ activate(struct desktop_shell *shell, struct weston_surface *es,
 	 struct weston_seat *seat)
 {
 	struct weston_surface *main_surface;
+	struct weston_view *main_view;
 	struct focus_state *state;
 	struct workspace *ws;
 	struct weston_surface *old_es;
@@ -4162,8 +4163,18 @@ activate(struct desktop_shell *shell, struct weston_surface *es,
 	shsurf = get_shell_surface(main_surface);
 	if (shsurf->state.fullscreen)
 		shell_configure_fullscreen(shsurf);
-	else
+	else {
+		ws = get_current_workspace(shell);
+		main_view = get_default_view(main_surface);
+		if (main_view) {
+			wl_list_remove(&main_view->layer_link);
+			wl_list_insert(&ws->layer.view_list, &main_view->layer_link);
+			weston_view_damage_below(main_view);
+			weston_surface_damage(main_view->surface);
+		}
+
 		restore_all_output_modes(shell->compositor);
+	}
 
 	if (shell->focus_animation_type != ANIMATION_NONE) {
 		ws = get_current_workspace(shell);
-- 
1.8.5.2



More information about the wayland-devel mailing list