Changeset fe5c7a1 in mainline for uspace/app/nav/nav.c


Ignore:
Timestamp:
2021-10-14T10:41:07Z (3 years ago)
Author:
Jiri Svoboda <jiri@…>
Children:
03c4b23
Parents:
b9d689b
git-author:
Jiri Svoboda <jiri@…> (2021-10-13 18:40:48)
git-committer:
Jiri Svoboda <jiri@…> (2021-10-14 10:41:07)
Message:

Panel activation

Active panel can be switched using the Tab key. Mouse activation is
not implemented.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/app/nav/nav.c

    rb9d689b rfe5c7a1  
    8181            ((event->mods & KM_SHIFT) == 0) &&
    8282            (event->mods & KM_CTRL) != 0) {
    83                 if (event->key == KC_Q)
     83                switch (event->key) {
     84                case KC_Q:
    8485                        ui_quit(navigator->ui);
     86                        break;
     87                default:
     88                        break;
     89                }
     90        }
     91
     92        if (event->type == KEY_PRESS &&
     93            ((event->mods & (KM_CTRL | KM_ALT | KM_SHIFT)) == 0)) {
     94                switch (event->key) {
     95                case KC_TAB:
     96                        navigator_switch_panel(navigator);
     97                        break;
     98                default:
     99                        break;
     100                }
    85101        }
    86102
     
    145161
    146162        for (i = 0; i < 2; i++) {
    147                 rc = panel_create(navigator->window, &navigator->panel[i]);
     163                rc = panel_create(navigator->window, i == 0,
     164                    &navigator->panel[i]);
    148165                if (rc != EOK)
    149166                        goto error;
     
    219236}
    220237
     238/** Get the currently active navigator panel.
     239 *
     240 * @param navigator Navigator
     241 * @return Currently active panel
     242 */
     243panel_t *navigator_get_active_panel(navigator_t *navigator)
     244{
     245        int i;
     246
     247        for (i = 0; i < navigator_panels; i++) {
     248                if (panel_is_active(navigator->panel[i]))
     249                        return navigator->panel[i];
     250        }
     251
     252        /* This should not happen */
     253        assert(false);
     254        return NULL;
     255}
     256
     257/** Switch to another navigator panel.
     258 *
     259 * Changes the currently active navigator panel to the next panel.
     260 *
     261 * @param navigator Navigator
     262 */
     263void navigator_switch_panel(navigator_t *navigator)
     264{
     265        if (panel_is_active(navigator->panel[0])) {
     266                panel_deactivate(navigator->panel[0]);
     267                panel_activate(navigator->panel[1]);
     268        } else {
     269                panel_deactivate(navigator->panel[1]);
     270                panel_activate(navigator->panel[0]);
     271        }
     272}
     273
    221274/** @}
    222275 */
Note: See TracChangeset for help on using the changeset viewer.