discomfitor pushed a commit to branch master.

http://git.enlightenment.org/core/enlightenment.git/commit/?id=2b984e68b98a5042c28c12394856fc1bb81c1fe6

commit 2b984e68b98a5042c28c12394856fc1bb81c1fe6
Author: Mike Blumenkrantz <zm...@osg.samsung.com>
Date:   Fri Aug 18 15:52:52 2017 -0400

    add MISC client property event to be manually triggered whenever misc props 
change
    
    there's too many properties to create flags/events for all of them, so just 
use this
    if it's one of the many misc props
    
    currently only used for skip_{pager,taskbar,winlist}
---
 src/bin/e_client.c          |  7 +++++++
 src/bin/e_client.h          |  2 ++
 src/bin/e_hints.c           |  6 ++++++
 src/bin/e_int_client_menu.c | 15 ++++++++++++---
 4 files changed, 27 insertions(+), 3 deletions(-)

diff --git a/src/bin/e_client.c b/src/bin/e_client.c
index f8a4b70c8..d9619f29b 100644
--- a/src/bin/e_client.c
+++ b/src/bin/e_client.c
@@ -4775,6 +4775,13 @@ e_client_pinned_set(E_Client *ec, Eina_Bool set)
    EC_CHANGED(ec);
 }
 
+E_API void
+e_client_prop_misc_changed(E_Client *ec)
+{
+   EINA_SAFETY_ON_NULL_RETURN(ec);
+   _e_client_event_property(ec, E_CLIENT_PROPERTY_MISC);
+}
+
 ///////////////////////////////////////
 
 E_API Eina_Bool
diff --git a/src/bin/e_client.h b/src/bin/e_client.h
index 5bc50fa5d..c2a7e0cae 100644
--- a/src/bin/e_client.h
+++ b/src/bin/e_client.h
@@ -134,6 +134,7 @@ typedef enum E_Client_Property
    E_CLIENT_PROPERTY_GRAVITY = (1 << 5),
    E_CLIENT_PROPERTY_NETWM_STATE = (1 << 6),
    E_CLIENT_PROPERTY_STICKY = (1 << 7),
+   E_CLIENT_PROPERTY_MISC = (1 << 31),
 } E_Client_Property;
 
 typedef struct E_Client E_Client;
@@ -820,6 +821,7 @@ E_API void e_client_urgent_set(E_Client *ec, Eina_Bool 
urgent);
 E_API void e_client_stick(E_Client *ec);
 E_API void e_client_unstick(E_Client *ec);
 E_API void e_client_pinned_set(E_Client *ec, Eina_Bool set);
+E_API void e_client_prop_misc_changed(E_Client *ec);
 E_API void e_client_comp_hidden_set(E_Client *ec, Eina_Bool hidden);
 E_API Eina_Bool e_client_border_set(E_Client *ec, const char *name);
 E_API void e_client_act_move_keyboard(E_Client *ec);
diff --git a/src/bin/e_hints.c b/src/bin/e_hints.c
index 6b1fff4c2..f42219c56 100644
--- a/src/bin/e_hints.c
+++ b/src/bin/e_hints.c
@@ -859,6 +859,7 @@ e_hints_window_state_update(E_Client *ec, int state, int 
action)
                   ec->netwm.state.skip_taskbar = 0;
                   ec->netwm.update.state = 1;
                   EC_CHANGED(ec);
+                  e_client_prop_misc_changed(ec);
                }
              break;
 
@@ -868,6 +869,7 @@ e_hints_window_state_update(E_Client *ec, int state, int 
action)
                   ec->netwm.state.skip_taskbar = 1;
                   ec->netwm.update.state = 1;
                   EC_CHANGED(ec);
+                  e_client_prop_misc_changed(ec);
                }
              break;
 
@@ -875,6 +877,7 @@ e_hints_window_state_update(E_Client *ec, int state, int 
action)
              ec->netwm.state.skip_taskbar = !ec->netwm.state.skip_taskbar;
              ec->netwm.update.state = 1;
              EC_CHANGED(ec);
+             e_client_prop_misc_changed(ec);
              break;
           }
         break;
@@ -888,6 +891,7 @@ e_hints_window_state_update(E_Client *ec, int state, int 
action)
                   ec->netwm.state.skip_pager = 0;
                   ec->netwm.update.state = 1;
                   EC_CHANGED(ec);
+                  e_client_prop_misc_changed(ec);
                }
              break;
 
@@ -897,6 +901,7 @@ e_hints_window_state_update(E_Client *ec, int state, int 
action)
                   ec->netwm.state.skip_pager = 1;
                   ec->netwm.update.state = 1;
                   EC_CHANGED(ec);
+                  e_client_prop_misc_changed(ec);
                }
              break;
 
@@ -904,6 +909,7 @@ e_hints_window_state_update(E_Client *ec, int state, int 
action)
              ec->netwm.state.skip_pager = !ec->netwm.state.skip_pager;
              ec->netwm.update.state = 1;
              EC_CHANGED(ec);
+             e_client_prop_misc_changed(ec);
              break;
           }
         break;
diff --git a/src/bin/e_int_client_menu.c b/src/bin/e_int_client_menu.c
index f66aaa4b2..c64795978 100644
--- a/src/bin/e_int_client_menu.c
+++ b/src/bin/e_int_client_menu.c
@@ -949,7 +949,10 @@ _e_client_menu_cb_skip_winlist(void *data, E_Menu *m 
EINA_UNUSED, E_Menu_Item *m
 
    if (((ec->icccm.accepts_focus) || (ec->icccm.take_focus)) &&
        (!ec->netwm.state.skip_taskbar))
-     ec->user_skip_winlist = e_menu_item_toggle_get(mi);
+     {
+        ec->user_skip_winlist = e_menu_item_toggle_get(mi);
+        e_client_prop_misc_changed(ec);
+     }
    else
      ec->user_skip_winlist = 0;
    EC_CHANGED(ec);
@@ -964,7 +967,10 @@ _e_client_menu_cb_skip_pager(void *data, E_Menu *m 
EINA_UNUSED, E_Menu_Item *mi)
    if (!(ec = data)) return;
 
    if ((ec->icccm.accepts_focus) || (ec->icccm.take_focus))
-     ec->netwm.state.skip_pager = e_menu_item_toggle_get(mi);
+     {
+        ec->netwm.state.skip_pager = e_menu_item_toggle_get(mi);
+        e_client_prop_misc_changed(ec);
+     }
    else
      ec->netwm.state.skip_pager = 0;
    EC_CHANGED(ec);
@@ -979,7 +985,10 @@ _e_client_menu_cb_skip_taskbar(void *data, E_Menu *m 
EINA_UNUSED, E_Menu_Item *m
    if (!(ec = data)) return;
 
    if ((ec->icccm.accepts_focus) || (ec->icccm.take_focus))
-     ec->netwm.state.skip_taskbar = e_menu_item_toggle_get(mi);
+     {
+        ec->netwm.state.skip_taskbar = e_menu_item_toggle_get(mi);
+        e_client_prop_misc_changed(ec);
+     }
    else
      ec->netwm.state.skip_taskbar = 0;
    EC_CHANGED(ec);

-- 


Reply via email to