#include "client.h"
#include "action.h"
#include "prop.h"
+#include "menuframe.h"
#include "config.h"
#include "keytree.h"
#include "keyboard.h"
return FALSE; /* don't repeat */
}
-static gboolean popup_show_timeout(gpointer data)
-{
- gchar *text = data;
- popup_show(popup, text);
-
- return FALSE; /* don't repeat */
-}
-
static void set_curpos(KeyBindingTree *newpos)
{
grab_keys(FALSE);
}
popup_position(popup, NorthWestGravity, 10, 10);
- if (popup->mapped) {
- popup_show_timeout(text);
- g_free(text);
- } else {
- ob_main_loop_timeout_remove(ob_main_loop, popup_show_timeout);
- /* 1 second delay for the popup to show */
- ob_main_loop_timeout_add(ob_main_loop, G_USEC_PER_SEC,
- popup_show_timeout, text,
- g_direct_equal, g_free);
- }
+ /* 1 second delay for the popup to show */
+ popup_delay_show(popup, G_USEC_PER_SEC, text);
+ g_free(text);
} else {
popup_hide(popup);
- ob_main_loop_timeout_remove(ob_main_loop, popup_show_timeout);
}
}
if (p->key == e->xkey.keycode &&
p->state == e->xkey.state)
{
+ /* if we hit a key binding, then close any open menus and run it */
+ if (menu_frame_visible)
+ menu_frame_hide_all();
+
if (p->first_child != NULL) { /* part of a chain */
ob_main_loop_timeout_remove(ob_main_loop, chain_timeout);
/* 3 second timeout for chains */
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);