return;
window_location_t loc;
- if (locate_window(e->window, &loc)) {
- if (xcb_icccm_get_wm_hints_reply(dpy, xcb_icccm_get_wm_hints(dpy, e->window), &hints, NULL) == 1) {
- uint32_t urgent = xcb_icccm_wm_hints_get_urgency(&hints);
- if (urgent != 0 && loc.node != mon->desk->focus) {
- loc.node->client->urgent = urgent;
- put_status();
- if (loc.monitor->desk == loc.desktop)
- arrange(loc.monitor, loc.desktop);
- }
- }
- }
+ if (locate_window(e->window, &loc)
+ && xcb_icccm_get_wm_hints_reply(dpy, xcb_icccm_get_wm_hints(dpy, e->window), &hints, NULL) == 1)
+ set_urgency(loc.monitor, loc.desktop, loc.node, xcb_icccm_wm_hints_get_urgency(&hints));
}
void client_message(xcb_generic_event_t *evt)
toggle_fullscreen(m, n->client);
arrange(m, d);
}
+ } else if (state == ewmh->_NET_WM_STATE_DEMANDS_ATTENTION) {
+ if (action == XCB_EWMH_WM_STATE_ADD)
+ set_urgency(m, d, n, true);
+ else if (action == XCB_EWMH_WM_STATE_REMOVE)
+ set_urgency(m, d, n, false);
+ else if (action == XCB_EWMH_WM_STATE_TOGGLE)
+ set_urgency(m, d, n, !n->client->urgent);
}
}
if (frozen_pointer->is_tiled) {
xcb_window_t pwin = XCB_NONE;
query_pointer(&pwin, NULL);
- if (pwin != XCB_NONE) {
- window_location_t loc;
- bool is_managed = locate_window(pwin, &loc);
- if (is_managed && is_tiled(loc.node->client) && loc.monitor == m) {
- swap_nodes(d, n, loc.desktop, loc.node);
- arrange(m, d);
- } else {
- if (is_managed && !is_tiled(loc.node->client) && loc.monitor == m) {
+ if (pwin == win)
+ return;
+ window_location_t loc;
+ bool is_managed = (pwin == XCB_NONE ? false : locate_window(pwin, &loc));
+ if (is_managed && is_tiled(loc.node->client) && loc.monitor == m) {
+ swap_nodes(d, n, loc.desktop, loc.node);
+ arrange(m, d);
+ } else {
+ if (is_managed && loc.monitor == m) {
+ return;
+ } else if (!is_managed) {
+ xcb_point_t pt = (xcb_point_t) {root_x, root_y};
+ monitor_t *pmon = monitor_from_point(pt);
+ if (pmon == NULL || pmon == m) {
return;
- } else if (!is_managed) {
- xcb_point_t pt = (xcb_point_t) {root_x, root_y};
- monitor_t *pmon = monitor_from_point(pt);
- if (pmon == NULL || pmon == m) {
- return;
- } else {
- loc.monitor = pmon;
- loc.desktop = pmon->desk;
- }
+ } else {
+ loc.monitor = pmon;
+ loc.desktop = pmon->desk;
}
- transfer_node(m, d, loc.monitor, loc.desktop, n);
- arrange(m, d);
- arrange(loc.monitor, loc.desktop);
- frozen_pointer->monitor = loc.monitor;
- frozen_pointer->desktop = loc.desktop;
}
+ transfer_node(m, d, loc.monitor, loc.desktop, n);
+ arrange(m, d);
+ arrange(loc.monitor, loc.desktop);
+ frozen_pointer->monitor = loc.monitor;
+ frozen_pointer->desktop = loc.desktop;
}
} else {
x = rect.x + delta_x;