GSList *it;
Client *ret;
- for (it = node->transients; it != NULL; it = g_slist_next(it)) {
+ for (it = node->transients; it != NULL; it = it->next) {
Client *c = it->data;
if (c == skip) continue; /* circular? */
if ((ret = search_focus_tree(c, skip))) return ret;
if (old == DESKTOP_ALL) {
for (i = 0; i < screen_num_desktops; ++i)
focus_order[i] = g_list_remove(focus_order[i], self);
+ focus_order[target] = g_list_prepend(focus_order[target], self);
} else {
focus_order[old] = g_list_remove(focus_order[old], self);
- }
- if (target == DESKTOP_ALL) {
- for (i = 0; i < screen_num_desktops; ++i)
- focus_order[i] = g_list_prepend(focus_order[i], self);
- } else {
- focus_order[target] = g_list_prepend(focus_order[target], self);
+ if (target == DESKTOP_ALL)
+ for (i = 0; i < screen_num_desktops; ++i)
+ focus_order[i] = g_list_prepend(focus_order[i], self);
}
dispatch_client(Event_Client_Desktop, self, target, old);
XSendEvent(ob_display, self->window, FALSE, NoEventMask, &ce);
}
- client_set_focused(self, TRUE);
-
/* XSync(ob_display, FALSE); XXX Why sync? */
return TRUE;
}
void client_unfocus(Client *self)
{
g_assert(focus_client == self);
- client_set_focused(self, FALSE);
-}
-
-void client_set_focused(Client *self, gboolean focused)
-{
- if (focused) {
- if (focus_client != self) {
- focus_set_client(self);
-
- /* focus state can affect the stacking layer */
- client_calc_layer(self);
-
- engine_frame_adjust_focus(self->frame);
- }
- } else {
- if (focus_client == self)
- focus_set_client(NULL);
-
- /* focus state can affect the stacking layer */
- client_calc_layer(self);
-
- if (self->frame != NULL) /* unfocus can happen while being unmanaged */
- engine_frame_adjust_focus(self->frame);
- }
}
gboolean client_focused(Client *self)