#include "frame.h"
#include "engine.h"
#include "focus.h"
+#include "dispatch.h"
+#include "../render/render.h"
#include <X11/Xlib.h>
#ifdef HAVE_UNISTD_H
void screen_set_num_desktops(guint num)
{
- unsigned long *viewport;
+ guint old;
+ gulong *viewport;
g_assert(num > 0);
}
*/
+ 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);
/* 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);
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);
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()
}
}
- 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)) {