Ignore:
File:
1 edited

Legend:

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

    rec50d65e r8279aab  
    11/*
    2  * Copyright (c) 2024 Jiri Svoboda
     2 * Copyright (c) 2025 Jiri Svoboda
    33 * All rights reserved.
    44 *
     
    189189        switch (params->placement) {
    190190        case ui_wnd_place_default:
    191                 assert(ui_is_fullscreen(window->ui));
     191        case ui_wnd_place_center:
     192                assert(params->placement != ui_wnd_place_default ||
     193                    ui_is_fullscreen(window->ui));
    192194                /* Center window */
    193195                gfx_rect_dims(&params->rect, &dims);
     
    343345        dparams.rect = params->rect;
    344346        dparams.caption = params->caption;
    345         /* Only allow making the window larger */
    346         gfx_rect_dims(&params->rect, &dparams.min_size);
     347        dparams.min_size = params->min_size;
    347348
    348349        /*
     
    358359        if ((params->flags & ui_wndf_popup) != 0)
    359360                dparams.flags |= wndf_popup;
     361        if ((params->flags & ui_wndf_nofocus) != 0)
     362                dparams.flags |= wndf_nofocus;
    360363        if ((params->flags & ui_wndf_topmost) != 0)
    361364                dparams.flags |= wndf_topmost;
     
    975978        ui_t *ui = window->ui;
    976979
    977         ui_lock(ui);
     980        fibril_mutex_lock(&ui->lock);
    978981        ui_window_send_close(window);
    979         ui_unlock(ui);
     982        fibril_mutex_unlock(&ui->lock);
    980983}
    981984
     
    986989        ui_t *ui = window->ui;
    987990
    988         ui_lock(ui);
     991        fibril_mutex_lock(&ui->lock);
    989992        (void)nfocus;
    990993
     
    995998
    996999        ui_window_send_focus(window, nfocus);
    997         ui_unlock(ui);
     1000        fibril_mutex_unlock(&ui->lock);
    9981001}
    9991002
     
    10041007        ui_t *ui = window->ui;
    10051008
    1006         ui_lock(ui);
     1009        fibril_mutex_lock(&ui->lock);
    10071010        ui_window_send_kbd(window, kbd_event);
    1008         ui_unlock(ui);
     1011        fibril_mutex_unlock(&ui->lock);
    10091012}
    10101013
     
    10201023                return;
    10211024
    1022         ui_lock(ui);
     1025        fibril_mutex_lock(&ui->lock);
    10231026
    10241027        claim = ui_wdecor_pos_event(window->wdecor, event);
    10251028        if (claim == ui_claimed) {
    1026                 ui_unlock(ui);
     1029                fibril_mutex_unlock(&ui->lock);
    10271030                return;
    10281031        }
    10291032
    10301033        ui_window_send_pos(window, event);
    1031         ui_unlock(ui);
     1034        fibril_mutex_unlock(&ui->lock);
    10321035}
    10331036
     
    10451048                return;
    10461049
    1047         ui_lock(ui);
     1050        fibril_mutex_lock(&ui->lock);
    10481051        (void) ui_window_resize(window, rect);
    1049         (void) ui_window_paint(window);
    1050         ui_unlock(ui);
     1052        ui_window_send_resize(window);
     1053        fibril_mutex_unlock(&ui->lock);
    10511054}
    10521055
     
    10571060        ui_t *ui = window->ui;
    10581061
    1059         ui_lock(ui);
     1062        fibril_mutex_lock(&ui->lock);
    10601063
    10611064        if (window->wdecor != NULL && nfocus == 0) {
     
    10651068
    10661069        ui_window_send_unfocus(window, nfocus);
    1067         ui_unlock(ui);
     1070        fibril_mutex_unlock(&ui->lock);
    10681071}
    10691072
     
    12951298void ui_window_send_minimize(ui_window_t *window)
    12961299{
    1297         if (window->cb != NULL && window->cb->maximize != NULL)
     1300        if (window->cb != NULL && window->cb->minimize != NULL)
    12981301                window->cb->minimize(window, window->arg);
    12991302        else
     
    13931396        else
    13941397                return ui_window_def_unfocus(window, nfocus);
     1398}
     1399
     1400/** Send window resize event.
     1401 *
     1402 * @param window Window
     1403 */
     1404void ui_window_send_resize(ui_window_t *window)
     1405{
     1406        if (window->cb != NULL && window->cb->resize != NULL)
     1407                window->cb->resize(window, window->arg);
     1408        else
     1409                return ui_window_def_resize(window);
    13951410}
    13961411
     
    15731588        if (window->control != NULL)
    15741589                ui_control_unfocus(window->control, nfocus);
     1590}
     1591
     1592/** Default window resize routine.
     1593 *
     1594 * @param window Window
     1595 * @return EOK on success or an error code
     1596 */
     1597void ui_window_def_resize(ui_window_t *window)
     1598{
     1599        ui_window_paint(window);
    15751600}
    15761601
Note: See TracChangeset for help on using the changeset viewer.