Show the submenu and move focus there with the enter key when the submenu isn't shown yet.

This commit is contained in:
Dana Jansens 2010-11-08 13:07:02 -05:00
parent f14bf9cac2
commit 2e82715a4a

View file

@ -1859,14 +1859,23 @@ static gboolean event_handle_menu_input(XEvent *ev)
ret = TRUE;
}
else if (sym == XK_Right) {
/* Right goes to the selected 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);
menu_frame_select_next(frame->child);
else if (sym == XK_Right || sym == XK_Return || sym == XK_KP_Enter)
{
/* Right and enter goes to the selected submenu.
Enter executes instead if it's not on a submenu. */
if (frame->selected) {
const ObMenuEntryType t = frame->selected->entry->type;
if (t == OB_MENU_ENTRY_TYPE_SUBMENU) {
/* make sure it is visible */
menu_frame_select(frame, frame->selected, TRUE);
/* move focus to the child menu */
menu_frame_select_next(frame->child);
}
else if (sym != XK_Right) {
frame->press_doexec = TRUE;
}
}
ret = TRUE;
}
@ -1891,11 +1900,6 @@ static gboolean event_handle_menu_input(XEvent *ev)
ret = TRUE;
}
else if (sym == XK_Return || sym == XK_KP_Enter) {
frame->press_doexec = TRUE;
ret = TRUE;
}
/* keyboard accelerator shortcuts. (if it was a valid key) */
else if (frame->entries &&
(unikey =
@ -1957,9 +1961,7 @@ static gboolean event_handle_menu_input(XEvent *ev)
frame->got_press &&
frame->press_doexec)
{
if (frame->child)
menu_frame_select_next(frame->child);
else if (frame->selected)
if (frame->selected)
menu_entry_frame_execute(frame->selected, ev->xkey.state);
}
}