Changeset b3b48f4 in mainline for uspace/lib/ui/src/menubar.c


Ignore:
Timestamp:
2022-03-11T17:28:10Z (2 years ago)
Author:
Jiri Svoboda <jiri@…>
Branches:
master, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
bd16113
Parents:
b987eb4
Message:

Use Alt-key accelerators to open menus

File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/lib/ui/src/menubar.c

    rb987eb4 rb3b48f4  
    330330{
    331331        gfx_rect_t rect;
    332         ui_menu_t *menu;
    333         char32_t maccel;
    334332
    335333        if (event->key == KC_F10) {
     
    364362        if (event->c != '\0' && !ui_menu_is_open(mbar->selected)) {
    365363                /* Check if it is an accelerator. */
    366 
    367                 menu = ui_menu_first(mbar);
    368                 while (menu != NULL) {
    369                         maccel = ui_menu_get_accel(menu);
    370                         if (event->c == maccel) {
    371                                 ui_menu_bar_select(mbar, menu, true);
    372                                 return ui_claimed;
    373                         }
    374 
    375                         menu = ui_menu_next(menu);
    376                 }
     364                ui_menu_bar_press_accel(mbar, event->c);
    377365        }
    378366
     
    388376ui_evclaim_t ui_menu_bar_kbd_event(ui_menu_bar_t *mbar, kbd_event_t *event)
    389377{
     378        if ((event->mods & KM_ALT) != 0 &&
     379            (event->mods & (KM_CTRL | KM_SHIFT)) == 0 && event->c != '\0') {
     380                /* Check if it is an accelerator. */
     381                ui_menu_bar_press_accel(mbar, event->c);
     382        }
     383
    390384        if (event->type == KEY_PRESS && (event->mods &
    391385            (KM_CTRL | KM_ALT | KM_SHIFT)) == 0) {
     
    397391
    398392        return ui_unclaimed;
     393}
     394
     395/** Accelerator key press.
     396 *
     397 * If @a c matches an accelerator key, open the respective menu.
     398 *
     399 * @param mbar Menu bar
     400 * @param c Character
     401 */
     402void ui_menu_bar_press_accel(ui_menu_bar_t *mbar, char32_t c)
     403{
     404        ui_menu_t *menu;
     405        char32_t maccel;
     406
     407        menu = ui_menu_first(mbar);
     408        while (menu != NULL) {
     409                maccel = ui_menu_get_accel(menu);
     410                if (c == maccel) {
     411                        ui_menu_bar_select(mbar, menu, true);
     412                        return;
     413                }
     414
     415                menu = ui_menu_next(menu);
     416        }
    399417}
    400418
Note: See TracChangeset for help on using the changeset viewer.