moving on us */
event_halt_focus_delay();
- client_focus(data->client.any.c);
+ if (client_validate(data->client.any.c))
+ client_focus(data->client.any.c);
}
}
/* choose the correct target */
self = client_focus_target(self);
+#if 0
if (!client_validate(self))
return FALSE;
+#endif
if (!client_can_focus(self)) {
if (!self->frame->visible) {
without focusing it or modifying the focus order lists. */
gboolean client_can_focus(ObClient *self);
-/*! Attempt to focus the client window */
+/*! Attempt to focus the client window
+ NOTE: You should validate the client before calling this !! (client_validate)
+*/
gboolean client_focus(ObClient *self);
/*! Remove focus from the client window */
}
}
-#if 0 /* focus debugging stuff */
+#if 1 /* focus debugging stuff */
if (e->type == FocusIn || e->type == FocusOut) {
gint mode = e->xfocus.mode;
gint detail = e->xfocus.detail;
ObClient *c = data;
if (focus_client != c) {
- client_focus(c);
- if (config_focus_raise)
- client_raise(c);
+ if (client_validate(c)) {
+ client_focus(c);
+ if (config_focus_raise)
+ client_raise(c);
+ }
}
return FALSE; /* no repeat */
}
/* focus desktop */
for (it = focus_order[screen_desktop]; it; it = g_list_next(it))
if (((ObClient*)it->data)->type == OB_CLIENT_TYPE_DESKTOP &&
- client_focus(it->data))
+ client_validate(it->data) && client_focus(it->data))
break;
} else {
focus_fallback(OB_FOCUS_FALLBACK_NOFOCUS);