GList **focus_order = NULL; /* these lists are created when screen_startup
sets the number of desktops */
-Window focus_backup = None;
-
static ObClient *focus_cycle_target = NULL;
static Popup *focus_cycle_popup = NULL;
void focus_startup()
{
- /* create the window which gets focus when no clients get it. Have to
- make it override-redirect so we don't try manage it, since it is
- mapped. */
- XSetWindowAttributes attrib;
focus_client = NULL;
- attrib.override_redirect = TRUE;
- focus_backup = XCreateWindow(ob_display, ob_root,
- -100, -100, 1, 1, 0,
- CopyFromParent, InputOutput, CopyFromParent,
- CWOverrideRedirect, &attrib);
- XMapRaised(ob_display, focus_backup);
-
- /* do this *after* focus_backup is created, since it is used for
- stacking */
focus_cycle_popup = popup_new(TRUE);
/* start with nothing focused */
popup_free(focus_cycle_popup);
focus_cycle_popup = NULL;
- XDestroyWindow(ob_display, focus_backup);
-
/* reset focus to root */
XSetInputFocus(ob_display, PointerRoot, RevertToPointerRoot,
event_lasttime);
if (client == NULL) {
/* when nothing will be focused, send focus to the backup target */
- XSetInputFocus(ob_display, focus_backup, RevertToPointerRoot,
+ XSetInputFocus(ob_display, screen_support_win, RevertToPointerRoot,
event_lasttime);
XSync(ob_display, FALSE);
}
return client_focus(target);
}
-void focus_fallback(FallbackType type)
+void focus_fallback(ObFocusFallbackType type)
{
GList *it;
ObClient *old = NULL;
*/
focus_set_client(NULL);
- if (!(type == Fallback_Desktop ?
+ if (!(type == OB_FOCUS_FALLBACK_DESKTOP ?
config_focus_last_on_desktop : config_focus_last)) {
if (config_focus_follow) focus_under_pointer();
return;
}
- if (type == Fallback_Unfocusing && old) {
+ if (type == OB_FOCUS_FALLBACK_UNFOCUSING && old) {
/* try for transient relations */
if (old->transient_for) {
if (old->transient_for == OB_TRAN_GROUP) {
}
for (it = focus_order[screen_desktop]; it != NULL; it = it->next)
- if (type != Fallback_Unfocusing || it->data != old)
+ if (type != OB_FOCUS_FALLBACK_UNFOCUSING || it->data != old)
if (client_normal(it->data) &&
/* dont fall back to 'anonymous' fullscreen windows. theres no
checks for this is in transient/group fallbacks, so they can