forked from enlightenment/enlightenment
redo client urgency again with separate flag for actual urgent state
preserve icccm flag for accurate detection
This commit is contained in:
parent
f43279d839
commit
9ad04eb877
|
@ -2029,7 +2029,7 @@ _e_client_frame_update(E_Client *ec)
|
|||
((!ec->icccm.accepts_focus) &&
|
||||
(!ec->icccm.take_focus)))
|
||||
bordername = "nofocus";
|
||||
else if (ec->icccm.urgent)
|
||||
else if (ec->urgent)
|
||||
bordername = "urgent";
|
||||
else if ((ec->icccm.transient_for != 0) ||
|
||||
(ec->dialog))
|
||||
|
@ -3682,13 +3682,18 @@ e_client_urgent_set(E_Client *ec, Eina_Bool urgent)
|
|||
E_OBJECT_TYPE_CHECK(ec, E_CLIENT_TYPE);
|
||||
|
||||
urgent = !!urgent;
|
||||
if (urgent == ec->icccm.urgent) return;
|
||||
ec->icccm.urgent = urgent;
|
||||
if (urgent == ec->urgent) return;
|
||||
_e_client_event_property(ec, E_CLIENT_PROPERTY_URGENCY);
|
||||
if (urgent && (!ec->focused))
|
||||
e_comp_object_signal_emit(ec->frame, "e,state,urgent", "e");
|
||||
if (urgent && (!ec->focused) && (!ec->want_focus))
|
||||
{
|
||||
e_comp_object_signal_emit(ec->frame, "e,state,urgent", "e");
|
||||
ec->urgent = urgent;
|
||||
}
|
||||
else
|
||||
e_comp_object_signal_emit(ec->frame, "e,state,not_urgent", "e");
|
||||
{
|
||||
e_comp_object_signal_emit(ec->frame, "e,state,not_urgent", "e");
|
||||
ec->urgent = 0;
|
||||
}
|
||||
if (urgent && e_screensaver_on_get() && e_config->screensaver_wake_on_urgent)
|
||||
{
|
||||
int x, y;
|
||||
|
|
|
@ -572,6 +572,7 @@ struct E_Client
|
|||
unsigned int iconic : 1;
|
||||
unsigned int deskshow : 1;
|
||||
unsigned int sticky : 1;
|
||||
unsigned int urgent : 1;
|
||||
unsigned int shaped_input : 1;
|
||||
unsigned int need_shape_merge : 1;
|
||||
unsigned int need_shape_export : 1;
|
||||
|
|
|
@ -512,7 +512,7 @@ _e_comp_object_shadow_setup(E_Comp_Object *cw)
|
|||
e_comp_object_signal_emit(cw->smart_obj, "e,state,focused", "e");
|
||||
else
|
||||
e_comp_object_signal_emit(cw->smart_obj, "e,state,unfocused", "e");
|
||||
if (urgent || cw->ec->icccm.urgent)
|
||||
if (urgent || cw->ec->urgent)
|
||||
e_comp_object_signal_emit(cw->smart_obj, "e,state,urgent", "e");
|
||||
else
|
||||
e_comp_object_signal_emit(cw->smart_obj, "e,state,not_urgent", "e");
|
||||
|
|
|
@ -3097,6 +3097,7 @@ _e_comp_x_hook_client_fetch(void *d EINA_UNUSED, E_Client *ec)
|
|||
&is_urgent))
|
||||
{
|
||||
ec->icccm.accepts_focus = accepts_focus;
|
||||
ec->icccm.urgent = is_urgent;
|
||||
e_client_urgent_set(ec, is_urgent);
|
||||
|
||||
/* If this is a new window, set the state as requested. */
|
||||
|
|
|
@ -1172,7 +1172,7 @@ _ibox_cb_event_client_property(void *data __UNUSED__, int type __UNUSED__, E_Eve
|
|||
_ibox_icon_fill(ic);
|
||||
continue;
|
||||
}
|
||||
if (ev->ec->icccm.urgent)
|
||||
if (ev->ec->urgent)
|
||||
{
|
||||
e_gadcon_urgent_show(b->inst->gcc->gadcon);
|
||||
edje_object_signal_emit(ic->o_holder, "e,state,urgent", "e");
|
||||
|
|
|
@ -685,7 +685,7 @@ _pager_window_new(Pager_Desk *pd, E_Client *client)
|
|||
edje_object_part_swallow(pw->o_window, "e.swallow.icon", o);
|
||||
}
|
||||
|
||||
if (client->icccm.urgent && !client->focused)
|
||||
if (client->urgent)
|
||||
{
|
||||
if (!(client->iconic))
|
||||
edje_object_signal_emit(pd->o_desk, "e,state,urgent", "e");
|
||||
|
@ -1403,7 +1403,7 @@ _pager_cb_event_client_urgent_change(void *data __UNUSED__, int type __UNUSED__,
|
|||
|
||||
if (!(ev->property & E_CLIENT_PROPERTY_URGENCY)) return ECORE_CALLBACK_RENEW;
|
||||
zone = ev->ec->zone;
|
||||
urgent = ev->ec->icccm.urgent;
|
||||
urgent = ev->ec->urgent || ev->ec->icccm.urgent;
|
||||
|
||||
if (pager_config->popup_urgent && (pager_config->popup_urgent_focus ||
|
||||
((!pager_config->popup_urgent_focus) && (!ev->ec->focused) && (!ev->ec->want_focus))))
|
||||
|
@ -1430,7 +1430,7 @@ _pager_cb_event_client_urgent_change(void *data __UNUSED__, int type __UNUSED__,
|
|||
pw = _pager_desk_window_find(pd, ev->ec);
|
||||
if (pw)
|
||||
{
|
||||
if (urgent && !ev->ec->focused)
|
||||
if (ev->ec->urgent)
|
||||
{
|
||||
if (!(ev->ec->iconic))
|
||||
{
|
||||
|
|
|
@ -682,7 +682,7 @@ _pager_window_new(Pager_Desk *pd, Evas_Object *mirror, E_Client *client)
|
|||
evas_object_event_callback_add(mirror, EVAS_CALLBACK_DEL,
|
||||
_pager_window_cb_del, pw);
|
||||
|
||||
if (client->icccm.urgent && !client->focused)
|
||||
if (client->urgent)
|
||||
{
|
||||
if (!(client->iconic))
|
||||
edje_object_signal_emit(pd->o_desk, "e,state,urgent", "e");
|
||||
|
@ -1015,7 +1015,7 @@ _pager_cb_event_client_urgent_change(void *data EINA_UNUSED, int type EINA_UNUSE
|
|||
|
||||
pp = _pager_popup_find(ev->ec->zone);
|
||||
|
||||
if ((!pp) && (ev->ec->icccm.urgent) && (!ev->ec->iconic))
|
||||
if ((!pp) && (ev->ec->urgent || ev->ec->icccm.urgent) && (!ev->ec->iconic))
|
||||
{
|
||||
pp = _pager_popup_new(ev->ec->zone, 0);
|
||||
if (!pp) return ECORE_CALLBACK_RENEW;
|
||||
|
|
|
@ -657,7 +657,7 @@ _tasks_item_fill(Tasks_Item *item)
|
|||
_tasks_item_signal_emit(item, "e,state,focused", "e");
|
||||
else
|
||||
_tasks_item_signal_emit(item, "e,state,unfocused", "e");
|
||||
if (item->client->icccm.urgent && !item->client->focused)
|
||||
if (item->client->urgent)
|
||||
_tasks_item_signal_emit(item, "e,state,urgent", "e");
|
||||
else
|
||||
_tasks_item_signal_emit(item, "e,state,not_urgent", "e");
|
||||
|
@ -941,7 +941,7 @@ _tasks_cb_event_client_urgent_change(void *data __UNUSED__, int type __UNUSED__,
|
|||
E_Event_Client_Property *ev = event;
|
||||
|
||||
if (!(ev->property & E_CLIENT_PROPERTY_URGENCY)) return ECORE_CALLBACK_RENEW;
|
||||
if (ev->ec->icccm.urgent && (!ev->ec->focused))
|
||||
if (ev->ec->urgent)
|
||||
_tasks_signal_emit(ev->ec, "e,state,urgent", "e");
|
||||
else
|
||||
_tasks_signal_emit(ev->ec, "e,state,not_urgent", "e");
|
||||
|
|
Loading…
Reference in New Issue