X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;f=openbox%2Fscreen.c;h=f424ca041c13480c076eea71840da70878bb3649;hb=ca8924a5a004816cf7db39bcf4851312ef93a2dc;hp=381753ae9d8fcc67e4b4e9eeca0c298b06bda11a;hpb=ad8e8d4988b515ff690564588983eeedf3f238f4;p=chaz%2Fopenbox diff --git a/openbox/screen.c b/openbox/screen.c index 381753ae..f424ca04 100644 --- a/openbox/screen.c +++ b/openbox/screen.c @@ -368,6 +368,7 @@ void screen_startup(gboolean reconfig) else screen_set_num_desktops(config_desktops_num); + screen_desktop = screen_num_desktops; /* something invalid */ /* start on the current desktop when a wm was already running */ if (PROP_GET32(RootWindow(ob_display, ob_screen), net_current_desktop, cardinal, &d) && @@ -380,6 +381,7 @@ void screen_startup(gboolean reconfig) else screen_set_desktop(MIN(config_screen_firstdesk, screen_num_desktops) - 1, FALSE); + screen_last_desktop = screen_desktop; /* don't start in showing-desktop mode */ screen_showing_desktop = FALSE; @@ -508,11 +510,12 @@ void screen_set_desktop(guint num, gboolean dofocus) old = screen_desktop; screen_desktop = num; - PROP_SET32(RootWindow(ob_display, ob_screen), - net_current_desktop, cardinal, num); if (old == num) return; + PROP_SET32(RootWindow(ob_display, ob_screen), + net_current_desktop, cardinal, num); + screen_last_desktop = old; ob_debug("Moving to desktop %d\n", num+1); @@ -530,7 +533,8 @@ void screen_set_desktop(guint num, gboolean dofocus) } } - if (focus_client && (focus_client->desktop == DESKTOP_ALL || + if (focus_client && ((client_normal(focus_client) && + focus_client->desktop == DESKTOP_ALL) || focus_client->desktop == screen_desktop)) dofocus = FALSE; @@ -936,7 +940,7 @@ void screen_update_desktop_names() it = g_slist_nth(config_desktops_names, i); for (; i < screen_num_desktops; ++i) { - if (it) + if (it && ((char*)it->data)[0]) /* not empty */ /* use the names from the config file when possible */ screen_desktop_names[i] = g_strdup(it->data); else