add the delay for killing keychains back (but it won't kill chroots)
This commit is contained in:
parent
d9b25d4884
commit
1a300ab372
1 changed files with 25 additions and 5 deletions
|
@ -69,6 +69,12 @@ static void grab_keys(gboolean grab)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static gboolean chain_timeout(gpointer data)
|
||||||
|
{
|
||||||
|
keyboard_reset_chains(0);
|
||||||
|
return FALSE; /* don't repeat */
|
||||||
|
}
|
||||||
|
|
||||||
static gboolean popup_show_timeout(gpointer data)
|
static gboolean popup_show_timeout(gpointer data)
|
||||||
{
|
{
|
||||||
gchar *text = data;
|
gchar *text = data;
|
||||||
|
@ -87,8 +93,14 @@ static void set_curpos(KeyBindingTree *newpos)
|
||||||
gchar *text = NULL;
|
gchar *text = NULL;
|
||||||
GList *it;
|
GList *it;
|
||||||
|
|
||||||
for (it = curpos->keylist; it; it = g_list_next(it))
|
for (it = curpos->keylist; it; it = g_list_next(it)) {
|
||||||
text = g_strconcat((text ? text : ""), it->data, "-", NULL);
|
gchar *oldtext = text;
|
||||||
|
if (text == NULL)
|
||||||
|
text = g_strdup(it->data);
|
||||||
|
else
|
||||||
|
text = g_strconcat(text, " - ", it->data, NULL);
|
||||||
|
g_free(oldtext);
|
||||||
|
}
|
||||||
|
|
||||||
popup_position(popup, NorthWestGravity, 10, 10);
|
popup_position(popup, NorthWestGravity, 10, 10);
|
||||||
if (popup->mapped) {
|
if (popup->mapped) {
|
||||||
|
@ -96,7 +108,8 @@ static void set_curpos(KeyBindingTree *newpos)
|
||||||
g_free(text);
|
g_free(text);
|
||||||
} else {
|
} else {
|
||||||
ob_main_loop_timeout_remove(ob_main_loop, popup_show_timeout);
|
ob_main_loop_timeout_remove(ob_main_loop, popup_show_timeout);
|
||||||
ob_main_loop_timeout_add(ob_main_loop, 1 * G_USEC_PER_SEC,
|
/* 1 second delay for the popup to show */
|
||||||
|
ob_main_loop_timeout_add(ob_main_loop, G_USEC_PER_SEC,
|
||||||
popup_show_timeout, text,
|
popup_show_timeout, text,
|
||||||
g_direct_equal, g_free);
|
g_direct_equal, g_free);
|
||||||
}
|
}
|
||||||
|
@ -287,6 +300,7 @@ void keyboard_event(ObClient *client, const XEvent *e)
|
||||||
if (e->xkey.keycode == config_keyboard_reset_keycode &&
|
if (e->xkey.keycode == config_keyboard_reset_keycode &&
|
||||||
e->xkey.state == config_keyboard_reset_state)
|
e->xkey.state == config_keyboard_reset_state)
|
||||||
{
|
{
|
||||||
|
ob_main_loop_timeout_remove(ob_main_loop, chain_timeout);
|
||||||
keyboard_reset_chains(-1);
|
keyboard_reset_chains(-1);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -299,9 +313,14 @@ void keyboard_event(ObClient *client, const XEvent *e)
|
||||||
if (p->key == e->xkey.keycode &&
|
if (p->key == e->xkey.keycode &&
|
||||||
p->state == e->xkey.state)
|
p->state == e->xkey.state)
|
||||||
{
|
{
|
||||||
if (p->first_child != NULL) /* part of a chain */
|
if (p->first_child != NULL) { /* part of a chain */
|
||||||
|
ob_main_loop_timeout_remove(ob_main_loop, chain_timeout);
|
||||||
|
/* 3 second timeout for chains */
|
||||||
|
ob_main_loop_timeout_add(ob_main_loop, 3 * G_USEC_PER_SEC,
|
||||||
|
chain_timeout, NULL,
|
||||||
|
g_direct_equal, NULL);
|
||||||
set_curpos(p);
|
set_curpos(p);
|
||||||
else if (p->chroot) /* an empty chroot */
|
} else if (p->chroot) /* an empty chroot */
|
||||||
set_curpos(p);
|
set_curpos(p);
|
||||||
else {
|
else {
|
||||||
keyboard_reset_chains(0);
|
keyboard_reset_chains(0);
|
||||||
|
@ -342,6 +361,7 @@ void keyboard_shutdown(gboolean reconfig)
|
||||||
g_slist_free(interactive_states);
|
g_slist_free(interactive_states);
|
||||||
interactive_states = NULL;
|
interactive_states = NULL;
|
||||||
|
|
||||||
|
ob_main_loop_timeout_remove(ob_main_loop, chain_timeout);
|
||||||
ob_main_loop_timeout_remove(ob_main_loop, popup_show_timeout);
|
ob_main_loop_timeout_remove(ob_main_loop, popup_show_timeout);
|
||||||
|
|
||||||
keyboard_unbind_all();
|
keyboard_unbind_all();
|
||||||
|
|
Loading…
Reference in a new issue