[PATCH] xwm: Handle third data entry in client messages

Iliya Bozhinov iliyabo at hotmail.com
Sat Jun 24 17:53:02 UTC 2017


A single client message can be used to modify two properties at once.
That's why when processing such messages we have to check both the second
and the third data entry for states that we must handle.

Signed-off-by: Ilia Bozhinov <iliyabo at hotmail.com>
---
 xwayland/window-manager.c | 14 +++++++++-----
 1 file changed, 9 insertions(+), 5 deletions(-)

diff --git a/xwayland/window-manager.c b/xwayland/window-manager.c
index 25008539..13acc84e 100644
--- a/xwayland/window-manager.c
+++ b/xwayland/window-manager.c
@@ -1610,13 +1610,15 @@ weston_wm_window_handle_state(struct weston_wm_window *window,
 	struct weston_wm *wm = window->wm;
 	const struct weston_desktop_xwayland_interface *xwayland_interface =
 		wm->server->compositor->xwayland_interface;
-	uint32_t action, property;
+	uint32_t action, property1, property2;
 	int maximized = weston_wm_window_is_maximized(window);
 
 	action = client_message->data.data32[0];
-	property = client_message->data.data32[1];
+	property1 = client_message->data.data32[1];
+	property2 = client_message->data.data32[2];
 
-	if (property == wm->atom.net_wm_state_fullscreen &&
+	if ((property1 == wm->atom.net_wm_state_fullscreen ||
+	     property2 == wm->atom.net_wm_state_fullscreen) &&
 	    update_state(action, &window->fullscreen)) {
 		weston_wm_window_set_net_wm_state(window);
 		if (window->fullscreen) {
@@ -1631,10 +1633,12 @@ weston_wm_window_handle_state(struct weston_wm_window *window,
 				weston_wm_window_set_toplevel(window);
 		}
 	} else {
-		if (property == wm->atom.net_wm_state_maximized_vert &&
+		if ((property1 == wm->atom.net_wm_state_maximized_vert ||
+		     property2 == wm->atom.net_wm_state_maximized_vert) &&
 		    update_state(action, &window->maximized_vert))
 			weston_wm_window_set_net_wm_state(window);
-		if (property == wm->atom.net_wm_state_maximized_horz &&
+		if ((property1 == wm->atom.net_wm_state_maximized_horz ||
+		     property2 == wm->atom.net_wm_state_maximized_horz) &&
 		    update_state(action, &window->maximized_horz))
 			weston_wm_window_set_net_wm_state(window);
 
-- 
2.13.0



More information about the wayland-devel mailing list