give the chain popup a 1 second delay before it shows
Dana Jansens danakj@orodu.net
1 files changed,
16 insertions(+),
13 deletions(-)
jump to
M
openbox/keyboard.c
→
openbox/keyboard.c
@@ -69,9 +69,10 @@ RootWindow(ob_display, ob_screen), GrabModeAsync);
} } -static gboolean chain_timeout(gpointer data) +static gboolean popup_show_timeout(gpointer data) { - keyboard_reset_chains(); + gchar *text = data; + popup_show(popup, text); return FALSE; /* don't repeat */ }@@ -90,16 +91,23 @@ for (it = curpos->keylist; it; it = g_list_next(it))
text = g_strconcat((text ? text : ""), it->data, "-", NULL); popup_position(popup, NorthWestGravity, 10, 10); - popup_show(popup, text); - g_free(text); - } else + if (popup->mapped) { + popup_show_timeout(text); + g_free(text); + } else { + ob_main_loop_timeout_remove(ob_main_loop, popup_show_timeout); + ob_main_loop_timeout_add(ob_main_loop, 1 * G_USEC_PER_SEC, + popup_show_timeout, text, + g_direct_equal, g_free); + } + } else { popup_hide(popup); + ob_main_loop_timeout_remove(ob_main_loop, popup_show_timeout); + } } void keyboard_reset_chains() { - ob_main_loop_timeout_remove(ob_main_loop, chain_timeout); - if (curpos) set_curpos(NULL); }@@ -272,11 +280,6 @@ if (p->key == e->xkey.keycode &&
p->state == e->xkey.state) { if (p->first_child != NULL) { /* part of a chain */ - ob_main_loop_timeout_remove(ob_main_loop, chain_timeout); - /* 5 second timeout for chains */ - ob_main_loop_timeout_add(ob_main_loop, 5 * G_USEC_PER_SEC, - chain_timeout, NULL, - g_direct_equal, NULL); set_curpos(p); } else {@@ -318,7 +321,7 @@ g_free(it->data);
g_slist_free(interactive_states); interactive_states = NULL; - ob_main_loop_timeout_remove(ob_main_loop, chain_timeout); + ob_main_loop_timeout_remove(ob_main_loop, popup_show_timeout); keyboard_unbind_all(); set_curpos(NULL);