switch (e->type) {
case FocusIn:
- client->focused = TRUE;
- engine_frame_adjust_focus(client->frame);
-
- /* focus state can affect the stacking layer */
- client_calc_layer(client);
-
- if (focus_client != client)
- focus_set_client(client);
+ client_set_focused(client, TRUE);
break;
case FocusOut:
- client->focused = FALSE;
- engine_frame_adjust_focus(client->frame);
-
- /* focus state can affect the stacking layer */
- client_calc_layer(client);
-
- if (focus_client == client)
- focus_set_client(NULL);
+ client_set_focused(client, FALSE);
break;
case ConfigureRequest:
g_message("ConfigureRequest for window %lx", client->window);
/* we shouldn't be able to get this unless we're iconic */
g_assert(client->iconic);
- /*HOOKFIRECLIENT(requestactivate, client);XXX*/
+ if (screen_showing_desktop)
+ screen_show_desktop(FALSE);
+ client_iconify(client, FALSE, TRUE);
+ if (!client->frame->visible)
+ /* if its not visible still, then don't mess with it */
+ break;
+ if (client->shaded)
+ client_shade(client, FALSE);
+ client_focus(client);
+ stacking_raise(client);
break;
case ClientMessage:
/* validate cuz we query stuff off the client here */