Changeset 12dd36c in mainline


Ignore:
Timestamp:
2024-11-12T10:04:38Z (3 weeks ago)
Author:
Jiri Svoboda <jiri@…>
Branches:
master
Children:
1eeddb3, 5ce0438, 9bfb74a, ad85592, b718826, ed19604b
Parents:
9a07ee3
Message:

Handle Enter/Escape keys in message dialog.

Location:
uspace/lib/ui/src
Files:
2 edited

Legend:

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

    r9a07ee3 r12dd36c  
    11/*
    2  * Copyright (c) 2022 Jiri Svoboda
     2 * Copyright (c) 2024 Jiri Svoboda
    33 * All rights reserved.
    44 *
     
    396396 *
    397397 * @param window Window
    398  * @param arg Argument (ui_prompt_dialog_t *)
     398 * @param arg Argument (ui_file_dialog_t *)
    399399 * @param event Keyboard event
    400400 */
     
    427427                }
    428428        }
    429 
    430429}
    431430
  • uspace/lib/ui/src/msgdialog.c

    r9a07ee3 r12dd36c  
    4747
    4848static void ui_msg_dialog_wnd_close(ui_window_t *, void *);
     49static void ui_msg_dialog_wnd_kbd(ui_window_t *, void *, kbd_event_t *);
    4950
    5051ui_window_cb_t ui_msg_dialog_wnd_cb = {
    51         .close = ui_msg_dialog_wnd_close
     52        .close = ui_msg_dialog_wnd_close,
     53        .kbd = ui_msg_dialog_wnd_kbd
    5254};
    5355
     
    281283}
    282284
     285/** Message dialog window keyboard event handler.
     286 *
     287 * @param window Window
     288 * @param arg Argument (ui_msg_dialog_t *)
     289 * @param event Keyboard event
     290 */
     291static void ui_msg_dialog_wnd_kbd(ui_window_t *window, void *arg,
     292    kbd_event_t *event)
     293{
     294        ui_msg_dialog_t *dialog = (ui_msg_dialog_t *) arg;
     295        ui_evclaim_t claim;
     296
     297        claim = ui_window_def_kbd(window, event);
     298        if (claim == ui_claimed)
     299                return;
     300
     301        if (event->type == KEY_PRESS &&
     302            (event->mods & (KM_CTRL | KM_SHIFT | KM_ALT)) == 0) {
     303                if (event->key == KC_ENTER) {
     304                        /* OK / default button */
     305                        if (dialog->cb != NULL && dialog->cb->button != NULL) {
     306                                dialog->cb->button(dialog, dialog->arg, 0);
     307                                return;
     308                        }
     309                } else if (event->key == KC_ESCAPE) {
     310                        /* Cancel */
     311                        if (dialog->cb != NULL && dialog->cb->close != NULL) {
     312                                dialog->cb->close(dialog, dialog->arg);
     313                                return;
     314                        }
     315                }
     316        }
     317
     318}
     319
    283320/** Message dialog button click handler.
    284321 *
Note: See TracChangeset for help on using the changeset viewer.