Changeset 266ec54 in mainline for uspace/lib/ui/src/window.c


Ignore:
Timestamp:
2020-11-28T23:06:31Z (4 years ago)
Author:
Jiri Svoboda <jiri@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
db3c6795
Parents:
554a5f1
git-author:
Jiri Svoboda <jiri@…> (2020-11-27 22:30:28)
git-committer:
Jiri Svoboda <jiri@…> (2020-11-28 23:06:31)
Message:

Viewer fullsreen mode

Fullscreen window placement is more of a stopgap. Proper
solution would probably be via maximizing the window.

File:
1 edited

Legend:

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

    r554a5f1 r266ec54  
    8989 *
    9090 * Window parameters structure must always be initialized using this function
    91  * first.
     91 * first. By default, the window will be decorated. To get a non-decorated
     92 * window, one needs to clear ui_wds_decorated
     93 * (e.g. params->style &= ~ui_wds_decorated).
    9294 *
    9395 * @param params Window parameters structure
     
    9698{
    9799        memset(params, 0, sizeof(ui_wnd_params_t));
     100
     101        /* Make window decorated by default. */
     102        params->style = ui_wds_decorated;
    98103}
    99104
     
    111116        display_info_t info;
    112117        gfx_coord2_t pos;
     118        gfx_coord2_t scr_dims;
    113119        display_wnd_params_t dparams;
    114120        display_window_t *dwindow = NULL;
     
    129135
    130136        if (ui->display != NULL) {
     137                if (params->placement != ui_wnd_place_default) {
     138                        rc = display_get_info(ui->display, &info);
     139                        if (rc != EOK)
     140                                goto error;
     141                }
     142
     143                if (params->placement == ui_wnd_place_full_screen) {
     144                        /* Make window the size of the screen */
     145                        gfx_rect_dims(&info.rect, &scr_dims);
     146                        gfx_coord2_add(&dparams.rect.p0, &scr_dims,
     147                            &dparams.rect.p1);
     148                }
     149
    131150                rc = display_window_create(ui->display, &dparams, &dwnd_cb,
    132151                    (void *) window, &dwindow);
     
    135154
    136155                if (params->placement != ui_wnd_place_default) {
    137                         rc = display_get_info(ui->display, &info);
    138                         if (rc != EOK)
    139                                 goto error;
    140 
    141156                        pos.x = 0;
    142157                        pos.y = 0;
     
    146161                                assert(false);
    147162                        case ui_wnd_place_top_left:
     163                        case ui_wnd_place_full_screen:
    148164                                pos.x = info.rect.p0.x - params->rect.p0.x;
    149165                                pos.y = info.rect.p0.y - params->rect.p0.y;
     
    188204                goto error;
    189205
    190         ui_wdecor_set_rect(wdecor, &params->rect);
     206        ui_wdecor_set_rect(wdecor, &dparams.rect);
    191207        ui_wdecor_set_cb(wdecor, &wdecor_cb, (void *) window);
    192208        ui_wdecor_paint(wdecor);
     
    194210        window->ui = ui;
    195211        window->dwindow = dwindow;
    196         window->rect = params->rect;
     212        window->rect = dparams.rect;
    197213        window->gc = gc;
    198214        window->res = res;
Note: See TracChangeset for help on using the changeset viewer.