X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;f=openbox%2Fscreen.c;h=298a0b22b4c4f13961e43644a88a9f90fd72a2fd;hb=7059cde13b2da3eb3ec07b48fd643de76425fb21;hp=70de299d35acbc0bc879e91b2a7ada6292534644;hpb=a9175a8a324deb6d1b7e717fb77fbc96204c7540;p=chaz%2Fopenbox diff --git a/openbox/screen.c b/openbox/screen.c index 70de299d..298a0b22 100644 --- a/openbox/screen.c +++ b/openbox/screen.c @@ -45,7 +45,7 @@ /*! The event mask to grab on the root window */ #define ROOT_EVENTMASK (StructureNotifyMask | PropertyChangeMask | \ EnterWindowMask | LeaveWindowMask | \ - SubstructureRedirectMask | \ + SubstructureRedirectMask | FocusChangeMask | \ ButtonPressMask | ButtonReleaseMask | ButtonMotionMask) guint screen_num_desktops; @@ -372,7 +372,7 @@ void screen_resize() void screen_set_num_desktops(guint num) { - guint i, old; + guint old; gulong *viewport; GList *it; @@ -410,16 +410,6 @@ void screen_set_num_desktops(guint num) /* change our desktop if we're on one that no longer exists! */ if (screen_desktop >= screen_num_desktops) screen_set_desktop(num - 1); - - /* update the focus lists */ - /* free our lists for the desktops which have disappeared */ - for (i = num; i < old; ++i) - g_list_free(focus_order[i]); - /* realloc the array */ - focus_order = g_renew(GList*, focus_order, num); - /* set the new lists to be empty */ - for (i = old; i < num; ++i) - focus_order[i] = NULL; } void screen_set_desktop(guint num) @@ -888,10 +878,13 @@ void screen_show_desktop(gboolean show) if (show) { /* focus desktop */ - for (it = focus_order[screen_desktop]; it; it = g_list_next(it)) - if (((ObClient*)it->data)->type == OB_CLIENT_TYPE_DESKTOP && - client_validate(it->data) && client_focus(it->data)) + for (it = focus_order; it; it = g_list_next(it)) { + ObClient *c = it->data; + if (c->type == OB_CLIENT_TYPE_DESKTOP && + (c->desktop == screen_desktop || c->desktop == DESKTOP_ALL) && + client_focus(it->data)) break; + } } else { focus_fallback(TRUE); }