X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;f=openbox%2Fscreen.c;h=8f60029ab05211db078eedb8aba896da9a1b9e47;hb=c5789fea10f24163465292430a068f4d2ae33f39;hp=3c83baa4d0f1a0a2218efca6cc727aac855467a2;hpb=216a04bdd057c03a719a0908cd003503b4f73fdb;p=chaz%2Fopenbox diff --git a/openbox/screen.c b/openbox/screen.c index 3c83baa4..8f60029a 100644 --- a/openbox/screen.c +++ b/openbox/screen.c @@ -5,6 +5,8 @@ #include "frame.h" #include "engine.h" #include "focus.h" +#include "dispatch.h" +#include "../render/render.h" #include #ifdef HAVE_UNISTD_H @@ -193,7 +195,8 @@ void screen_resize() void screen_set_num_desktops(guint num) { - unsigned long *viewport; + guint old; + gulong *viewport; g_assert(num > 0); @@ -216,11 +219,12 @@ void screen_set_num_desktops(guint num) } */ + old = screen_num_desktops; screen_num_desktops = num; PROP_SET32(ob_root, net_number_of_desktops, cardinal, num); /* set the viewport hint */ - viewport = g_new0(unsigned long, num * 2); + viewport = g_new0(gulong, num * 2); PROP_SET32A(ob_root, net_desktop_viewport, cardinal, viewport, num * 2); g_free(viewport); @@ -233,6 +237,8 @@ void screen_set_num_desktops(guint num) /* may be some unnamed desktops that we need to fill in with names */ screen_update_desktop_names(); + dispatch_ob(Event_Ob_NumDesktops, num, old); + /* change our desktop if we're on one that no longer exists! */ if (screen_desktop >= screen_num_desktops) screen_set_desktop(num - 1); @@ -241,13 +247,13 @@ void screen_set_num_desktops(guint num) void screen_set_desktop(guint num) { GList *it; - - guint old = screen_desktop; + guint old; g_assert(num < screen_num_desktops); g_message("Moving to desktop %u", num); + old = screen_desktop; screen_desktop = num; PROP_SET32(ob_root, net_current_desktop, cardinal, num); @@ -267,9 +273,7 @@ void screen_set_desktop(guint num) engine_frame_show(c->frame); } - /* force the callbacks to fire */ - if (focus_client == NULL) - focus_set_client(NULL); + dispatch_ob(Event_Ob_Desktop, num, old); } void screen_update_layout() @@ -390,20 +394,19 @@ void screen_show_desktop(gboolean show) } } - show = show ? 1 : 0; /* make it boolean */ + show = !!show; /* make it boolean */ PROP_SET32(ob_root, net_showing_desktop, cardinal, show); + + dispatch_ob(Event_Ob_ShowDesktop, show, 0); } void screen_install_colormap(Client *client, gboolean install) { if (client == NULL) { - /* XXX DONT USE THE DEFAULT SHIT HERE */ if (install) - XInstallColormap(ob_display, - DefaultColormap(ob_display, ob_screen)); + XInstallColormap(ob_display, render_colormap); else - XUninstallColormap(ob_display, - DefaultColormap(ob_display, ob_screen)); + XUninstallColormap(ob_display, render_colormap); } else { XWindowAttributes wa; if (XGetWindowAttributes(ob_display, client->window, &wa)) {