Ignore:
File:
1 edited

Legend:

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

    rb71c0fc 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 *);
     50static void ui_fixed_ctl_unfocus(void *, unsigned);
    4951
    5052/** Push button control ops */
     
    5254        .destroy = ui_fixed_ctl_destroy,
    5355        .paint = ui_fixed_ctl_paint,
    54         .pos_event = ui_fixed_ctl_pos_event
     56        .kbd_event = ui_fixed_ctl_kbd_event,
     57        .pos_event = ui_fixed_ctl_pos_event,
     58        .unfocus = ui_fixed_ctl_unfocus
    5559};
    5660
     
    209213}
    210214
     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
    211238/** Handle fixed layout position event.
    212239 *
     
    232259}
    233260
     261/** Handle fixed layout window unfocus notification.
     262 *
     263 * @param fixed Fixed layout
     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);
     273
     274                elem = ui_fixed_next(elem);
     275        }
     276}
     277
    234278/** Destroy fixed layout control.
    235279 *
     
    253297
    254298        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);
    255312}
    256313
     
    268325}
    269326
     327/** Handle fixed layout control window unfocus notification.
     328 *
     329 * @param arg Argument (ui_fixed_t *)
     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);
     337}
     338
    270339/** @}
    271340 */
Note: See TracChangeset for help on using the changeset viewer.