#include <X11/Xatom.h>
#include <glib.h>
+#ifdef USE_LIBSN
+# include <libsn/sn.h>
+#endif
+
#ifdef HAVE_SYS_SELECT_H
# include <sys/select.h>
#endif
}
XNextEvent(ob_display, &e);
+#ifdef USE_LIBSN
+ sn_display_process_event(ob_sn_display, &e);
+#endif
+
event_process(&e);
had_event = TRUE;
}
switch (e->type) {
case ButtonPress:
case ButtonRelease:
- switch (frame_context(client, e->xbutton.window)) {
- case Context_Maximize:
- client->frame->max_press = (e->type == ButtonPress);
- framerender_frame(client->frame);
- break;
- case Context_Close:
- client->frame->close_press = (e->type == ButtonPress);
- framerender_frame(client->frame);
- break;
- case Context_Iconify:
- client->frame->iconify_press = (e->type == ButtonPress);
- framerender_frame(client->frame);
- break;
- case Context_AllDesktops:
- client->frame->desk_press = (e->type == ButtonPress);
- framerender_frame(client->frame);
- break;
- case Context_Shade:
- client->frame->shade_press = (e->type == ButtonPress);
- framerender_frame(client->frame);
- break;
- default:
- /* nothing changes with clicks for any other contexts */
- break;
+ /* Wheel buttons don't draw because they are an instant click, so it
+ is a waste of resources to go drawing it. */
+ if (!(e->xbutton.button == 4 || e->xbutton.button == 5)) {
+ switch (frame_context(client, e->xbutton.window)) {
+ case Context_Maximize:
+ client->frame->max_press = (e->type == ButtonPress);
+ framerender_frame(client->frame);
+ break;
+ case Context_Close:
+ client->frame->close_press = (e->type == ButtonPress);
+ framerender_frame(client->frame);
+ break;
+ case Context_Iconify:
+ client->frame->iconify_press = (e->type == ButtonPress);
+ framerender_frame(client->frame);
+ break;
+ case Context_AllDesktops:
+ client->frame->desk_press = (e->type == ButtonPress);
+ framerender_frame(client->frame);
+ break;
+ case Context_Shade:
+ client->frame->shade_press = (e->type == ButtonPress);
+ framerender_frame(client->frame);
+ break;
+ default:
+ /* nothing changes with clicks for any other contexts */
+ break;
+ }
}
break;
case FocusIn:
}
else if (msgtype == prop_atoms.net_wm_strut)
client_update_strut(client);
- else if (msgtype == prop_atoms.net_wm_icon)
+ else if (msgtype == prop_atoms.net_wm_icon ||
+ msgtype == prop_atoms.kwm_win_icon)
client_update_icons(client);
- else if (msgtype == prop_atoms.kwm_win_icon)
- client_update_kwm_icon(client);
default:
;
#ifdef SHAPE
dock_app_drag(app, &e->xmotion);
break;
case UnmapNotify:
- g_message("Unmap");
if (app->ignore_unmaps) {
app->ignore_unmaps--;
break;
dock_remove(app, TRUE);
break;
case DestroyNotify:
- g_message("Destroy");
dock_remove(app, FALSE);
break;
case ReparentNotify: