static gboolean unfocus_delay_func(gpointer data);
static void focus_delay_client_dest(ObClient *client, gpointer data);
-Time event_last_user_time;
+Time event_last_user_time = CurrentTime;
/*! The time of the current X event (if it had a timestamp) */
-static Time event_curtime;
+static Time event_curtime = CurrentTime;
/*! The source time that started the current X event (user-provided, so not
to be trusted) */
-static Time event_sourcetime;
+static Time event_sourcetime = CurrentTime;
/*! The serial of the current X event */
static gulong event_curserial;
#endif
client_add_destroy_notify(focus_delay_client_dest, NULL);
-
- event_curtime = CurrentTime;
- event_sourcetime = CurrentTime;
- event_last_user_time = CurrentTime;
}
void event_shutdown(gboolean reconfig)
client_update_title(client);
} else if (msgtype == OBT_PROP_ATOM(WM_PROTOCOLS)) {
client_update_protocols(client);
- client_setup_decor_and_functions(client, TRUE);
}
else if (msgtype == OBT_PROP_ATOM(NET_WM_STRUT) ||
msgtype == OBT_PROP_ATOM(NET_WM_STRUT_PARTIAL)) {
else if (sym == XK_Right) {
/* Right goes to the selected submenu */
- if (frame->selected->entry->type == OB_MENU_ENTRY_TYPE_SUBMENU)
+ if (frame->selected &&
+ frame->selected->entry->type == OB_MENU_ENTRY_TYPE_SUBMENU)
{
/* make sure it is visible */
menu_frame_select(frame, frame->selected, TRUE);
gboolean find_timestamp(XEvent *e, gpointer data)
{
const Time t = event_get_timestamp(e);
- if (t != CurrentTime) {
+ if (t > event_curtime) {
event_curtime = t;
return TRUE;
}
return FALSE;
}
-Time event_time(void)
+static Time next_time(void)
{
- if (event_curtime) return event_curtime;
-
/* Some events don't come with timestamps :(
...but we can get one anyways >:) */
return event_curtime;
}
+Time event_time(void)
+{
+ if (event_curtime) return event_curtime;
+
+ return next_time();
+}
+
Time event_source_time(void)
{
return event_sourcetime;
}
+
+void event_reset_time(void)
+{
+ next_time();
+}