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);
}
push_to_top(client);
/* set the NET_ACTIVE_WINDOW hint, but preserve it on shutdown */
- if (ob_state != OB_STATE_EXITING) {
+ if (ob_state() != OB_STATE_EXITING) {
active = client ? client->window : None;
- PROP_SET32(ob_root, net_active_window, window, active);
+ PROP_SET32(RootWindow(ob_display, ob_screen),
+ net_active_window, window, active);
}
if (focus_client != NULL)
int x, y;
GList *it;
- if (ob_pointer_pos(&x, &y)) {
+ if (screen_pointer_pos(&x, &y)) {
for (it = stacking_list; it != NULL; it = it->next) {
if (WINDOW_IS_CLIENT(it->data)) {
ObClient *c = WINDOW_AS_CLIENT(it->data);