Changeset 2c12135 in mainline for uspace/lib/ui/src/ui.c


Ignore:
Timestamp:
2026-02-18T09:13:26Z (3 days ago)
Author:
Jiri Svoboda <jiri@…>
Branches:
master
Children:
26edcd6
Parents:
a4e4e29
git-author:
Jiri Svoboda <jiri@…> (2026-02-17 21:13:24)
git-committer:
Jiri Svoboda <jiri@…> (2026-02-18 09:13:26)
Message:

GFXDemo resize in console UI, fix UI resize / UI window resize in console.

File:
1 edited

Legend:

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

    ra4e4e29 r2c12135  
    11/*
    2  * Copyright (c) 2025 Jiri Svoboda
     2 * Copyright (c) 2026 Jiri Svoboda
    33 * All rights reserved.
    44 *
     
    326326}
    327327
     328/** Resize UI after screen size change.
     329 *
     330 * @param ui UI
     331 * @param rect New screen rectangle.
     332 */
     333static void ui_resize(ui_t *ui, gfx_rect_t *rect)
     334{
     335        ui_window_t *wnd;
     336
     337        ui->rect = *rect;
     338
     339        /* Resize all fullscreen windows */
     340        wnd = ui_window_first(ui);
     341        while (wnd != NULL) {
     342                if (wnd->placement == ui_wnd_place_full_screen) {
     343                        (void)ui_window_resize(wnd, rect);
     344                        ui_window_send_resize(wnd);
     345                }
     346
     347                wnd = ui_window_next(wnd);
     348        }
     349
     350        (void)ui_paint(ui);
     351}
     352
    328353static void ui_cons_event_process(ui_t *ui, cons_event_t *event)
    329354{
     
    331356        ui_evclaim_t claim;
    332357        pos_event_t pos;
     358        sysarg_t cols, rows;
     359        gfx_rect_t rect;
     360        errno_t rc;
    333361
    334362        awnd = ui_window_get_active(ui);
     
    358386                break;
    359387        case CEV_RESIZE:
     388                rc = console_gc_resize(ui->cgc);
     389                if (rc != EOK) {
     390                        /* XXX No good way to recover. */
     391                        console_done(ui->console);
     392                        exit(1);
     393                }
     394
     395                rc = console_get_size(ui->console, &cols, &rows);
     396                if (rc != EOK) {
     397                        /* XXX No good way to recover. */
     398                        console_done(ui->console);
     399                        exit(1);
     400                }
     401
    360402                ui_lock(ui);
    361                 ui_window_send_resize(awnd);
     403
     404                rect.p0.x = 0;
     405                rect.p0.y = 0;
     406                rect.p1.x = cols;
     407                rect.p1.y = rows;
     408
     409                ui_resize(ui, &rect);
    362410                ui_unlock(ui);
    363411                break;
Note: See TracChangeset for help on using the changeset viewer.