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


Ignore:
Timestamp:
2022-03-10T13:44:10Z (3 years ago)
Author:
Jiri Svoboda <jiri@…>
Branches:
master, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
c88d7f99
Parents:
ca2680d
git-author:
Jiri Svoboda <jiri@…> (2022-03-09 18:44:00)
git-committer:
Jiri Svoboda <jiri@…> (2022-03-10 13:44:10)
Message:

Menu accelerators

Open a menu by pressing F10, then accelerator key (e.g. 'F').

File:
1 edited

Legend:

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

    rca2680d r96c6a00  
    252252        old_menu = mbar->selected;
    253253
    254         if (mbar->selected != menu)
    255                 mbar->selected = menu;
    256         else
    257                 mbar->selected = NULL;
     254        mbar->selected = menu;
    258255
    259256        /* Close previously open menu */
     
    333330{
    334331        gfx_rect_t rect;
     332        ui_menu_t *menu;
     333        char32_t maccel;
    335334
    336335        if (event->key == KC_F10) {
     
    361360
    362361                return ui_claimed;
     362        }
     363
     364        if (event->c != '\0' && !ui_menu_is_open(mbar->selected)) {
     365                /* 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                }
    363377        }
    364378
     
    428442                    gfx_pix_inside_rect(&ppos, &rect)) {
    429443                        mbar->active = true;
    430                         ui_menu_bar_select(mbar, menu, true);
     444
     445                        /* Open the menu, close if already open. */
     446                        if (menu == mbar->selected)
     447                                ui_menu_bar_select(mbar, NULL, false);
     448                        else
     449                                ui_menu_bar_select(mbar, menu, true);
     450
    431451                        return ui_claimed;
    432452                }
Note: See TracChangeset for help on using the changeset viewer.