Ignore:
File:
1 edited

Legend:

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

    r62223ec r46a47c0  
    11/*
    2  * Copyright (c) 2020 Jiri Svoboda
     2 * Copyright (c) 2023 Jiri Svoboda
    33 * All rights reserved.
    44 *
     
    4646static void ui_fixed_ctl_destroy(void *);
    4747static errno_t ui_fixed_ctl_paint(void *);
     48static ui_evclaim_t ui_fixed_ctl_kbd_event(void *, kbd_event_t *);
    4849static ui_evclaim_t ui_fixed_ctl_pos_event(void *, pos_event_t *);
    49 static void ui_fixed_ctl_unfocus(void *);
     50static void ui_fixed_ctl_unfocus(void *, unsigned);
    5051
    5152/** Push button control ops */
     
    5354        .destroy = ui_fixed_ctl_destroy,
    5455        .paint = ui_fixed_ctl_paint,
     56        .kbd_event = ui_fixed_ctl_kbd_event,
    5557        .pos_event = ui_fixed_ctl_pos_event,
    5658        .unfocus = ui_fixed_ctl_unfocus
     
    211213}
    212214
     215/** Handle fixed layout keyboard event.
     216 *
     217 * @param fixed Fixed layout
     218 * @param kbd_event Keyboard event
     219 * @return @c ui_claimed iff the event is claimed
     220 */
     221ui_evclaim_t ui_fixed_kbd_event(ui_fixed_t *fixed, kbd_event_t *event)
     222{
     223        ui_fixed_elem_t *elem;
     224        ui_evclaim_t claimed;
     225
     226        elem = ui_fixed_first(fixed);
     227        while (elem != NULL) {
     228                claimed = ui_control_kbd_event(elem->control, event);
     229                if (claimed == ui_claimed)
     230                        return ui_claimed;
     231
     232                elem = ui_fixed_next(elem);
     233        }
     234
     235        return ui_unclaimed;
     236}
     237
    213238/** Handle fixed layout position event.
    214239 *
     
    237262 *
    238263 * @param fixed Fixed layout
    239  */
    240 void ui_fixed_unfocus(ui_fixed_t *fixed)
    241 {
    242         ui_fixed_elem_t *elem;
    243 
    244         elem = ui_fixed_first(fixed);
    245         while (elem != NULL) {
    246                 ui_control_unfocus(elem->control);
     264 * @param nfocus Number of remaining foci
     265 */
     266void ui_fixed_unfocus(ui_fixed_t *fixed, unsigned nfocus)
     267{
     268        ui_fixed_elem_t *elem;
     269
     270        elem = ui_fixed_first(fixed);
     271        while (elem != NULL) {
     272                ui_control_unfocus(elem->control, nfocus);
    247273
    248274                elem = ui_fixed_next(elem);
     
    271297
    272298        return ui_fixed_paint(fixed);
     299}
     300
     301/** Handle fixed layout control keyboard event.
     302 *
     303 * @param arg Argument (ui_fixed_t *)
     304 * @param kbd_event Keyboard event
     305 * @return @c ui_claimed iff the event is claimed
     306 */
     307ui_evclaim_t ui_fixed_ctl_kbd_event(void *arg, kbd_event_t *event)
     308{
     309        ui_fixed_t *fixed = (ui_fixed_t *) arg;
     310
     311        return ui_fixed_kbd_event(fixed, event);
    273312}
    274313
     
    289328 *
    290329 * @param arg Argument (ui_fixed_t *)
    291  */
    292 void ui_fixed_ctl_unfocus(void *arg)
    293 {
    294         ui_fixed_t *fixed = (ui_fixed_t *) arg;
    295 
    296         ui_fixed_unfocus(fixed);
     330 * @param nfocus Number of remaining foci
     331 */
     332void ui_fixed_ctl_unfocus(void *arg, unsigned nfocus)
     333{
     334        ui_fixed_t *fixed = (ui_fixed_t *) arg;
     335
     336        ui_fixed_unfocus(fixed, nfocus);
    297337}
    298338
Note: See TracChangeset for help on using the changeset viewer.