X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;f=openbox%2Fscreen.c;h=e9d0ce1a67d1e06f211083e059561dd95e1ea6f7;hb=b7b4abe0d84b7a820a2ada7a08a0d3d15a86acaf;hp=2e6ff3f14fb8ace58ebb64d5ba8132a10f581c9a;hpb=e8ed8b3c2aa4304e218cce094b1aebe9368357fb;p=chaz%2Fopenbox diff --git a/openbox/screen.c b/openbox/screen.c index 2e6ff3f1..e9d0ce1a 100644 --- a/openbox/screen.c +++ b/openbox/screen.c @@ -377,24 +377,16 @@ void screen_update_desktop_names() void screen_show_desktop(gboolean show) { GList *it; - static Window saved_focus = 0; if (show == screen_showing_desktop) return; /* no change */ - /* save the window focus, and restore it when leaving the show-desktop - mode */ - if (show && focus_client) - saved_focus = focus_client->window; - screen_showing_desktop = show; if (show) { /* bottom to top */ for (it = g_list_last(stacking_list); it != NULL; it = it->prev) { Client *client = it->data; - if (client->type == Type_Desktop) - client_focus(client); - else if (client->frame->visible && !client_should_show(client)) + if (client->frame->visible && !client_should_show(client)) engine_frame_hide(client->frame); } } else { @@ -406,15 +398,6 @@ void screen_show_desktop(gboolean show) } } - if (!show) { - Client *f = focus_client; - if (!f || f->type == Type_Desktop) { - Client *c = g_hash_table_lookup(client_map, - (gpointer)saved_focus); - if (c) client_focus(c); - } - } - show = !!show; /* make it boolean */ PROP_SET32(ob_root, net_showing_desktop, cardinal, show); @@ -423,14 +406,16 @@ void screen_show_desktop(gboolean show) void screen_install_colormap(Client *client, gboolean install) { + XWindowAttributes wa; + if (client == NULL) { if (install) XInstallColormap(ob_display, render_colormap); else XUninstallColormap(ob_display, render_colormap); } else { - XWindowAttributes wa; - if (XGetWindowAttributes(ob_display, client->window, &wa)) { + if (XGetWindowAttributes(ob_display, client->window, &wa) && + wa.colormap != None) { if (install) XInstallColormap(ob_display, wa.colormap); else @@ -444,8 +429,7 @@ void screen_update_struts() GSList *it; guint i; - if (strut != NULL) - g_free(strut); + g_free(strut); strut = g_new0(Strut, screen_num_desktops + 1); for (it = client_list; it; it = it->next) { @@ -469,9 +453,8 @@ static void screen_update_area() { guint i; gulong *dims; - - if (area != NULL) - g_free(area); + + g_free(area); area = g_new0(Rect, screen_num_desktops + 1); dims = g_new(unsigned long, 4 * screen_num_desktops);