+ DNPRINTF(SWM_D_EVENT, "focusevent: %s window: %lu mode %d detail %d\n",
+ ev->type == FocusIn ? "entering" : "leaving",
+ ev->window, ev->mode, ev->detail);
+#if 0
+ struct ws_win *win;
+ u_int32_t mode_detail;
+ XFocusChangeEvent *ev = &e->xfocus;
+
+ DNPRINTF(SWM_D_EVENT, "focusevent: %s window: %lu mode %d detail %d\n",
+ ev->type == FocusIn ? "entering" : "leaving",
+ ev->window, ev->mode, ev->detail);
+
+ if (last_focus_event == ev->type) {
+ DNPRINTF(SWM_D_FOCUS, "ignoring focusevent: bad ordering\n");
+ return;
+ }
+
+ last_focus_event = ev->type;
+ mode_detail = MERGE_MEMBERS(ev->mode, ev->detail);
+
+ switch (mode_detail) {
+ /* synergy client focus operations */
+ case MERGE_MEMBERS(NotifyNormal, NotifyNonlinear):
+ case MERGE_MEMBERS(NotifyNormal, NotifyNonlinearVirtual):
+
+ /* synergy server focus operations */
+ case MERGE_MEMBERS(NotifyWhileGrabbed, NotifyNonlinear):
+
+ /* Entering applications like rdesktop that mangle the pointer */
+ case MERGE_MEMBERS(NotifyNormal, NotifyPointer):
+
+ if ((win = find_window(e->xfocus.window)) != NULL && win->ws->r)
+ XSetWindowBorder(display, win->id,
+ win->ws->r->s->c[ev->type == FocusIn ?
+ SWM_S_COLOR_FOCUS : SWM_S_COLOR_UNFOCUS].color);
+ break;
+ default:
+ fprintf(stderr, "ignoring focusevent\n");
+ DNPRINTF(SWM_D_FOCUS, "ignoring focusevent\n");
+ break;
+ }
+#endif