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}
This commit is contained in:
Mike Blumenkrantz 2017-08-18 15:52:52 -04:00
parent bda9bfb8c0
commit 2b984e68b9
4 changed files with 27 additions and 3 deletions

View File

@ -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

View File

@ -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);

View File

@ -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;

View File

@ -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);