don't take KeyRelease events for menus until they receive a KeyPress event first. avoid using the key binding used to show the menu to execute something inside it.
This commit is contained in:
parent
78cd9bba52
commit
040d344a89
2 changed files with 8 additions and 1 deletions
|
@ -1671,6 +1671,8 @@ static gboolean event_handle_menu_keyboard(XEvent *ev)
|
||||||
|
|
||||||
/* Allow control while going thru the menu */
|
/* Allow control while going thru the menu */
|
||||||
else if (ev->type == KeyPress && (state & ~ControlMask) == 0) {
|
else if (ev->type == KeyPress && (state & ~ControlMask) == 0) {
|
||||||
|
frame->got_press = TRUE;
|
||||||
|
|
||||||
if (keycode == ob_keycode(OB_KEY_ESCAPE)) {
|
if (keycode == ob_keycode(OB_KEY_ESCAPE)) {
|
||||||
menu_frame_hide_all();
|
menu_frame_hide_all();
|
||||||
ret = TRUE;
|
ret = TRUE;
|
||||||
|
@ -1704,7 +1706,7 @@ static gboolean event_handle_menu_keyboard(XEvent *ev)
|
||||||
|
|
||||||
Allow ControlMask only, and don't bother if the menu is empty */
|
Allow ControlMask only, and don't bother if the menu is empty */
|
||||||
else if (ev->type == KeyRelease && (state & ~ControlMask) == 0 &&
|
else if (ev->type == KeyRelease && (state & ~ControlMask) == 0 &&
|
||||||
frame->entries)
|
frame->entries && frame->got_press)
|
||||||
{
|
{
|
||||||
if (keycode == ob_keycode(OB_KEY_RETURN)) {
|
if (keycode == ob_keycode(OB_KEY_RETURN)) {
|
||||||
/* Enter runs the active item or goes into the submenu.
|
/* Enter runs the active item or goes into the submenu.
|
||||||
|
|
|
@ -73,6 +73,11 @@ struct _ObMenuFrame
|
||||||
|
|
||||||
RrAppearance *a_title;
|
RrAppearance *a_title;
|
||||||
RrAppearance *a_items;
|
RrAppearance *a_items;
|
||||||
|
|
||||||
|
gboolean got_press; /* don't allow a KeyRelease event to run things in the
|
||||||
|
menu until it has seen a KeyPress. this is to
|
||||||
|
avoid having the keybinding used to show the menu
|
||||||
|
end up running something inside the menu */
|
||||||
};
|
};
|
||||||
|
|
||||||
struct _ObMenuEntryFrame
|
struct _ObMenuEntryFrame
|
||||||
|
|
Loading…
Reference in a new issue