msgtype = e->xclient.message_type;
if (msgtype == prop_atoms.net_current_desktop) {
guint d = e->xclient.data.l[0];
- event_curtime = e->xclient.data.l[1];
- if (d < screen_num_desktops)
+ if (d < screen_num_desktops) {
+ event_curtime = e->xclient.data.l[1];
+ ob_debug("SWITCH DESKTOP TIME: %d\n", event_curtime);
screen_set_desktop(d);
+ }
} else if (msgtype == prop_atoms.net_number_of_desktops) {
guint d = e->xclient.data.l[0];
if (d > 0)
ObClient *c = data;
if (focus_client != c) {
- if (client_validate(c)) {
- client_focus(c);
- if (config_focus_raise)
- client_raise(c);
- }
+ if (client_focus(c) && config_focus_raise)
+ client_raise(c);
}
return FALSE; /* no repeat */
}
later in time than T.
- http://tronche.com/gui/x/xlib/input/pointer-grabbing.html
*/
- return t1 >= t2 && t1 <= t2 + (1 << (sizeof(Time)*8-1));
+
+ /* TIME_HALF is half of the number space of a Time type variable */
+#define TIME_HALF (Time)(1 << (sizeof(Time)*8-1))
+
+ if (t2 >= TIME_HALF)
+ /* t2 is in the second half so t1 might wrap around and be smaller than
+ t2 */
+ return t1 >= t2 || t1 < (t2 + TIME_HALF);
+ else
+ /* t2 is in the first half so t1 has to come after it */
+ return t1 >= t2 && t1 < (t2 + TIME_HALF);
}