Changeset 2c12135 in mainline


Ignore:
Timestamp:
2026-02-18T09:13:26Z (2 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.

Location:
uspace
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • uspace/app/gfxdemo/gfxdemo.c

    ra4e4e29 r2c12135  
    11/*
    2  * Copyright (c) 2025 Jiri Svoboda
     2 * Copyright (c) 2026 Jiri Svoboda
    33 * All rights reserved.
    44 *
     
    6161};
    6262
     63static void uiwnd_resize_event(ui_window_t *, void *);
    6364static void uiwnd_close_event(ui_window_t *, void *);
    6465static void uiwnd_kbd_event(ui_window_t *, void *, kbd_event_t *);
    6566
    6667static ui_window_cb_t ui_window_cb = {
     68        .resize = uiwnd_resize_event,
    6769        .close = uiwnd_close_event,
    6870        .kbd = uiwnd_kbd_event
     
    11691171
    11701172        /* Do not decorate the window in fullscreen mode */
    1171         if (ui_is_fullscreen(ui))
     1173        if (ui_is_fullscreen(ui)) {
    11721174                params.style &= ~ui_wds_decorated;
     1175                params.placement = ui_wnd_place_full_screen;
     1176        }
    11731177
    11741178        /*
     
    13281332        (void)arg;
    13291333        demo_kbd_event(event);
     1334}
     1335
     1336static void uiwnd_resize_event(ui_window_t *window, void *arg)
     1337{
     1338        gfx_rect_t rect;
     1339        gfx_coord2_t dims;
     1340
     1341        ui_window_get_app_rect(window, &rect);
     1342        gfx_rect_dims(&rect, &dims);
     1343        scr_width = dims.x;
     1344        scr_height = dims.y;
    13301345}
    13311346
  • 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;
  • uspace/lib/ui/src/window.c

    ra4e4e29 r2c12135  
    767767                /* Window is resized, now we can map the window bitmap again */
    768768                gfx_bitmap_params_init(&win_params);
    769                 win_params.flags |= bmpf_direct_output;
     769                if (window->ui->display != NULL)
     770                        win_params.flags |= bmpf_direct_output;
    770771                win_params.rect = nrect;
    771772
Note: See TracChangeset for help on using the changeset viewer.