Changeset 3e41cc4 in mainline for uspace/lib/ui


Ignore:
Timestamp:
2025-10-19T13:08:37Z (8 weeks ago)
Author:
Jiri Svoboda <jiri@…>
Branches:
master
Children:
5bf9ca21, aefdccd, c81ab84, e6b4d2d, fa655ae0
Parents:
bb4d0b5
Message:

Repaint all windows in fullscreen mode in ui_paint().

After error dialog is closed in Navigator, need to also repaint main window,
not just progress window.

Location:
uspace/lib/ui
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • uspace/lib/ui/include/ui/window.h

    rbb4d0b5 r3e41cc4  
    11/*
    2  * Copyright (c) 2024 Jiri Svoboda
     2 * Copyright (c) 2025 Jiri Svoboda
    33 * All rights reserved.
    44 *
     
    5656extern void ui_window_add(ui_window_t *, ui_control_t *);
    5757extern void ui_window_remove(ui_window_t *, ui_control_t *);
    58 extern ui_window_t *ui_window_get_active(ui_t *);
    5958extern errno_t ui_window_resize(ui_window_t *, gfx_rect_t *);
    6059extern ui_t *ui_window_get_ui(ui_window_t *);
  • uspace/lib/ui/private/window.h

    rbb4d0b5 r3e41cc4  
    11/*
    2  * Copyright (c) 2024 Jiri Svoboda
     2 * Copyright (c) 2025 Jiri Svoboda
    33 * All rights reserved.
    44 *
     
    136136extern errno_t ui_window_size_change(ui_window_t *, gfx_rect_t *,
    137137    ui_wnd_sc_op_t);
     138extern ui_window_t *ui_window_get_active(ui_t *);
     139extern ui_window_t *ui_window_first(ui_t *);
     140extern ui_window_t *ui_window_next(ui_window_t *);
    138141
    139142#endif
  • uspace/lib/ui/src/ui.c

    rbb4d0b5 r3e41cc4  
    412412        errno_t rc;
    413413        gfx_context_t *gc;
    414         ui_window_t *awnd;
     414        ui_window_t *wnd;
    415415        gfx_color_t *color = NULL;
    416416
     
    439439        gfx_color_delete(color);
    440440
    441         /* XXX Should repaint all windows */
    442         awnd = ui_window_get_active(ui);
    443         if (awnd == NULL)
    444                 return EOK;
    445 
    446         rc = ui_wdecor_paint(awnd->wdecor);
    447         if (rc != EOK)
    448                 return rc;
    449 
    450         return ui_window_paint(awnd);
     441        /* Repaint all windows */
     442        wnd = ui_window_first(ui);
     443        while (wnd != NULL) {
     444                rc = ui_wdecor_paint(wnd->wdecor);
     445                if (rc != EOK)
     446                        return rc;
     447
     448                rc = ui_window_paint(wnd);
     449                if (rc != EOK)
     450                        return rc;
     451
     452                wnd = ui_window_next(wnd);
     453        }
     454
     455        return EOK;
    451456}
    452457
  • uspace/lib/ui/src/window.c

    rbb4d0b5 r3e41cc4  
    617617}
    618618
     619/** Get first (lowermost) window (only valid in fullscreen mode).
     620 *
     621 * @param ui User interface
     622 * @return First window
     623 */
     624ui_window_t *ui_window_first(ui_t *ui)
     625{
     626        link_t *link;
     627
     628        link = list_first(&ui->windows);
     629        if (link == NULL)
     630                return NULL;
     631
     632        return list_get_instance(link, ui_window_t, lwindows);
     633}
     634
     635/** Get next window (only valid in fullscreen mode).
     636 *
     637 * @param cur Current window
     638 * @return First window
     639 */
     640ui_window_t *ui_window_next(ui_window_t *cur)
     641{
     642        link_t *link;
     643
     644        link = list_next(&cur->lwindows, &cur->ui->windows);
     645        if (link == NULL)
     646                return NULL;
     647
     648        return list_get_instance(link, ui_window_t, lwindows);
     649}
     650
    619651/** Get active window (only valid in fullscreen mode).
    620652 *
Note: See TracChangeset for help on using the changeset viewer.