((!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))
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;
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;
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");
&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. */
_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");
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");
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))))
pw = _pager_desk_window_find(pd, ev->ec);
if (pw)
{
- if (urgent && !ev->ec->focused)
+ if (ev->ec->urgent)
{
if (!(ev->ec->iconic))
{
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");
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;
_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");
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");