From 35aaabc491d33899761336a981d13f38c0e46adf Mon Sep 17 00:00:00 2001 From: Mike Blumenkrantz Date: Mon, 27 Jan 2014 21:34:32 -0500 Subject: [PATCH] fix toggling sticky state on clients previously this would break windows if it was set based on persisting X hints --- src/bin/e_client.c | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/src/bin/e_client.c b/src/bin/e_client.c index bd3fbfecb..4c51c73bb 100644 --- a/src/bin/e_client.c +++ b/src/bin/e_client.c @@ -3649,12 +3649,17 @@ e_client_urgent_set(E_Client *ec, Eina_Bool urgent) EAPI void e_client_stick(E_Client *ec) { + E_Desk *desk; + E_OBJECT_CHECK(ec); E_OBJECT_TYPE_CHECK(ec, E_CLIENT_TYPE); if (ec->sticky) return; + desk = ec->desk; + ec->desk = NULL; ec->sticky = 1; + ec->hidden = 0; e_hints_window_sticky_set(ec, 1); - evas_object_show(ec->frame); + e_client_desk_set(ec, desk); if (e_config->transient.desktop) { @@ -3676,12 +3681,17 @@ e_client_stick(E_Client *ec) EAPI void e_client_unstick(E_Client *ec) { + E_Desk *desk; + E_OBJECT_CHECK(ec); E_OBJECT_TYPE_CHECK(ec, E_CLIENT_TYPE); /* Set the desk before we unstick the client */ if (!ec->sticky) return; + desk = ec->desk; + ec->desk = NULL; ec->sticky = 0; e_hints_window_sticky_set(ec, 0); + e_client_desk_set(ec, desk); if (e_config->transient.desktop) {