discomfitor pushed a commit to branch master.

http://git.enlightenment.org/core/enlightenment.git/commit/?id=35aaabc491d33899761336a981d13f38c0e46adf

commit 35aaabc491d33899761336a981d13f38c0e46adf
Author: Mike Blumenkrantz <[email protected]>
Date:   Mon Jan 27 21:34:32 2014 -0500

    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 bd3fbfe..4c51c73 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)
      {

-- 


Reply via email to