Changeset 266ec54 in mainline for uspace/lib/ui


Ignore:
Timestamp:
2020-11-28T23:06:31Z (5 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.

Location:
uspace/lib/ui
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • uspace/lib/ui/include/types/ui/wdecor.h

    r554a5f1 r266ec54  
    4545/** Window decoration style */
    4646typedef enum {
     47        /** No style bits */
    4748        ui_wds_none = 0x0,
    48         ui_wds_resizable = 0x1
     49        /** Window has a frame */
     50        ui_wds_frame = 0x1,
     51        /** Window has a title bar */
     52        ui_wds_titlebar = 0x2,
     53        /** Window has a close button */
     54        ui_wds_close_btn = 0x4,
     55        /** Window is resizable */
     56        ui_wds_resizable = 0x8,
     57        /** Window is decorated (default decoration) */
     58        ui_wds_decorated = ui_wds_frame | ui_wds_titlebar | ui_wds_close_btn
    4959} ui_wdecor_style_t;
    5060
  • uspace/lib/ui/include/types/ui/window.h

    r554a5f1 r266ec54  
    5656        ui_wnd_place_bottom_left,
    5757        /** Place window to the bottom-right corner of the screen */
    58         ui_wnd_place_bottom_right
     58        ui_wnd_place_bottom_right,
     59        /** Place window accross the entire screen */
     60        ui_wnd_place_full_screen
    5961} ui_wnd_placement_t;
    6062
  • uspace/lib/ui/include/ui/wdecor.h

    r554a5f1 r266ec54  
    5252extern errno_t ui_wdecor_paint(ui_wdecor_t *);
    5353extern void ui_wdecor_pos_event(ui_wdecor_t *, pos_event_t *);
    54 extern void ui_wdecor_rect_from_app(gfx_rect_t *, gfx_rect_t *);
     54extern void ui_wdecor_rect_from_app(ui_wdecor_style_t, gfx_rect_t *,
     55    gfx_rect_t *);
    5556
    5657#endif
  • uspace/lib/ui/src/wdecor.c

    r554a5f1 r266ec54  
    173173        ui_wdecor_get_geom(wdecor, &geom);
    174174
    175         rc = ui_paint_bevel(wdecor->res->gc, &rect,
    176             wdecor->res->wnd_frame_hi_color,
    177             wdecor->res->wnd_frame_sh_color, 1, &rect);
    178         if (rc != EOK)
    179                 return rc;
    180 
    181         rc = ui_paint_bevel(wdecor->res->gc, &rect,
    182             wdecor->res->wnd_highlight_color,
    183             wdecor->res->wnd_shadow_color, 1, &rect);
    184         if (rc != EOK)
    185                 return rc;
    186 
    187         rc = ui_paint_bevel(wdecor->res->gc, &rect,
    188             wdecor->res->wnd_face_color,
    189             wdecor->res->wnd_face_color, 2, &rect);
    190         if (rc != EOK)
    191                 return rc;
    192 
    193         trect = geom.title_bar_rect;
    194 
    195         rc = ui_paint_bevel(wdecor->res->gc, &trect,
    196             wdecor->res->wnd_shadow_color,
    197             wdecor->res->wnd_highlight_color, 1, &trect);
    198         if (rc != EOK)
    199                 return rc;
    200 
    201         rc = gfx_set_color(wdecor->res->gc, wdecor->active ?
    202             wdecor->res->tbar_act_bg_color :
    203             wdecor->res->tbar_inact_bg_color);
    204         if (rc != EOK)
    205                 return rc;
    206 
    207         rc = gfx_fill_rect(wdecor->res->gc, &trect);
    208         if (rc != EOK)
    209                 return rc;
    210 
    211         gfx_text_fmt_init(&fmt);
    212         fmt.halign = gfx_halign_center;
    213         fmt.valign = gfx_valign_center;
    214 
    215         pos.x = (trect.p0.x + trect.p1.x) / 2;
    216         pos.y = (trect.p0.y + trect.p1.y) / 2;
    217 
    218         rc = gfx_set_color(wdecor->res->gc, wdecor->active ?
    219             wdecor->res->tbar_act_text_color :
    220             wdecor->res->tbar_inact_text_color);
    221         if (rc != EOK)
    222                 return rc;
    223 
    224         rc = gfx_puttext(wdecor->res->font, &pos, &fmt, wdecor->caption);
    225         if (rc != EOK)
    226                 return rc;
    227 
    228         rc = ui_pbutton_paint(wdecor->btn_close);
    229         if (rc != EOK)
    230                 return rc;
     175        if ((wdecor->style & ui_wds_frame) != 0) {
     176                rc = ui_paint_bevel(wdecor->res->gc, &rect,
     177                    wdecor->res->wnd_frame_hi_color,
     178                    wdecor->res->wnd_frame_sh_color, 1, &rect);
     179                if (rc != EOK)
     180                        return rc;
     181
     182                rc = ui_paint_bevel(wdecor->res->gc, &rect,
     183                    wdecor->res->wnd_highlight_color,
     184                    wdecor->res->wnd_shadow_color, 1, &rect);
     185                if (rc != EOK)
     186                        return rc;
     187
     188                rc = ui_paint_bevel(wdecor->res->gc, &rect,
     189                    wdecor->res->wnd_face_color,
     190                    wdecor->res->wnd_face_color, 2, &rect);
     191                if (rc != EOK)
     192                        return rc;
     193        }
     194
     195        if ((wdecor->style & ui_wds_titlebar) != 0) {
     196                trect = geom.title_bar_rect;
     197
     198                rc = ui_paint_bevel(wdecor->res->gc, &trect,
     199                    wdecor->res->wnd_shadow_color,
     200                    wdecor->res->wnd_highlight_color, 1, &trect);
     201                if (rc != EOK)
     202                        return rc;
     203
     204                rc = gfx_set_color(wdecor->res->gc, wdecor->active ?
     205                    wdecor->res->tbar_act_bg_color :
     206                    wdecor->res->tbar_inact_bg_color);
     207                if (rc != EOK)
     208                        return rc;
     209
     210                rc = gfx_fill_rect(wdecor->res->gc, &trect);
     211                if (rc != EOK)
     212                        return rc;
     213
     214                gfx_text_fmt_init(&fmt);
     215                fmt.halign = gfx_halign_center;
     216                fmt.valign = gfx_valign_center;
     217
     218                pos.x = (trect.p0.x + trect.p1.x) / 2;
     219                pos.y = (trect.p0.y + trect.p1.y) / 2;
     220
     221                rc = gfx_set_color(wdecor->res->gc, wdecor->active ?
     222                    wdecor->res->tbar_act_text_color :
     223                    wdecor->res->tbar_inact_text_color);
     224                if (rc != EOK)
     225                        return rc;
     226
     227                rc = gfx_puttext(wdecor->res->font, &pos, &fmt, wdecor->caption);
     228                if (rc != EOK)
     229                        return rc;
     230
     231                if ((wdecor->style & ui_wds_close_btn) != 0) {
     232                        rc = ui_pbutton_paint(wdecor->btn_close);
     233                        if (rc != EOK)
     234                                return rc;
     235                }
     236        }
    231237
    232238        return EOK;
     
    285291void ui_wdecor_get_geom(ui_wdecor_t *wdecor, ui_wdecor_geom_t *geom)
    286292{
    287         geom->interior_rect.p0.x = wdecor->rect.p0.x + 4;
    288         geom->interior_rect.p0.y = wdecor->rect.p0.y + 4;
    289         geom->interior_rect.p1.x = wdecor->rect.p1.x - 4;
    290         geom->interior_rect.p1.y = wdecor->rect.p1.y - 4;
    291 
    292         geom->title_bar_rect.p0 = geom->interior_rect.p0;
    293         geom->title_bar_rect.p1.x = geom->interior_rect.p1.x;
    294         geom->title_bar_rect.p1.y = geom->interior_rect.p0.y + 22;
    295 
    296         geom->btn_close_rect.p0.x = geom->title_bar_rect.p1.x - 1 - 20;
    297         geom->btn_close_rect.p0.y = geom->title_bar_rect.p0.y + 1;
    298         geom->btn_close_rect.p1.x = geom->title_bar_rect.p1.x - 1;
    299         geom->btn_close_rect.p1.y = geom->title_bar_rect.p0.y + 1 + 20;
    300 
    301         geom->app_area_rect.p0.x = geom->interior_rect.p0.x;
    302         geom->app_area_rect.p0.y = geom->title_bar_rect.p1.y;
    303         geom->app_area_rect.p1 = geom->interior_rect.p1;
     293        /* Does window have a frame? */
     294        if ((wdecor->style & ui_wds_frame) != 0) {
     295                geom->interior_rect.p0.x = wdecor->rect.p0.x + 4;
     296                geom->interior_rect.p0.y = wdecor->rect.p0.y + 4;
     297                geom->interior_rect.p1.x = wdecor->rect.p1.x - 4;
     298                geom->interior_rect.p1.y = wdecor->rect.p1.y - 4;
     299        } else {
     300                geom->interior_rect = wdecor->rect;
     301        }
     302
     303        /* Does window have a title bar? */
     304        if ((wdecor->style & ui_wds_titlebar) != 0) {
     305                geom->title_bar_rect.p0 = geom->interior_rect.p0;
     306                geom->title_bar_rect.p1.x = geom->interior_rect.p1.x;
     307                geom->title_bar_rect.p1.y = geom->interior_rect.p0.y + 22;
     308
     309                geom->app_area_rect.p0.x = geom->interior_rect.p0.x;
     310                geom->app_area_rect.p0.y = geom->title_bar_rect.p1.y;
     311                geom->app_area_rect.p1 = geom->interior_rect.p1;
     312        } else {
     313                geom->title_bar_rect.p0.x = 0;
     314                geom->title_bar_rect.p0.y = 0;
     315                geom->title_bar_rect.p1.x = 0;
     316                geom->title_bar_rect.p1.y = 0;
     317
     318                geom->app_area_rect = geom->interior_rect;
     319        }
     320
     321        /* Does window have a close button? */
     322        if ((wdecor->style & ui_wds_close_btn) != 0) {
     323                geom->btn_close_rect.p0.x = geom->title_bar_rect.p1.x - 1 - 20;
     324                geom->btn_close_rect.p0.y = geom->title_bar_rect.p0.y + 1;
     325                geom->btn_close_rect.p1.x = geom->title_bar_rect.p1.x - 1;
     326                geom->btn_close_rect.p1.y = geom->title_bar_rect.p0.y + 1 + 20;
     327        } else {
     328                geom->btn_close_rect.p0.x = 0;
     329                geom->btn_close_rect.p0.y = 0;
     330                geom->btn_close_rect.p1.x = 0;
     331                geom->btn_close_rect.p1.y = 0;
     332        }
    304333}
    305334
     
    310339 * and its decoration.
    311340 *
     341 * @param style Decoration style
    312342 * @param app Application area rectangle
    313343 * @param rect Place to store (outer) window decoration rectangle
    314344 */
    315 void ui_wdecor_rect_from_app(gfx_rect_t *app, gfx_rect_t *rect)
    316 {
    317         rect->p0.x = app->p0.x - 4;
    318         rect->p0.y = app->p0.y - 22 - 4;
    319         rect->p1.x = app->p1.x + 4;
    320         rect->p1.y = app->p1.y + 4;
     345void ui_wdecor_rect_from_app(ui_wdecor_style_t style, gfx_rect_t *app,
     346    gfx_rect_t *rect)
     347{
     348        *rect = *app;
     349
     350        if ((style & ui_wds_frame) != 0) {
     351                rect->p0.x -= wdecor_edge_w;
     352                rect->p0.y -= wdecor_edge_h;
     353                rect->p1.x += wdecor_edge_w;
     354                rect->p1.y += wdecor_edge_h;
     355        }
     356
     357        if ((style & ui_wds_titlebar) != 0)
     358                rect->p0.y -= 22;
    321359}
    322360
     
    471509        ui_wdecor_get_geom(wdecor, &geom);
    472510
    473         claim = ui_pbutton_pos_event(wdecor->btn_close, event);
    474         if (claim == ui_claimed)
    475                 return;
     511        if ((wdecor->style & ui_wds_close_btn) != 0) {
     512                claim = ui_pbutton_pos_event(wdecor->btn_close, event);
     513                if (claim == ui_claimed)
     514                        return;
     515        }
    476516
    477517        ui_wdecor_frame_pos_event(wdecor, event);
    478518
    479         if (event->type == POS_PRESS &&
    480             gfx_pix_inside_rect(&pos, &geom.title_bar_rect))
    481                 ui_wdecor_move(wdecor, &pos);
     519        if ((wdecor->style & ui_wds_titlebar) != 0)  {
     520                if (event->type == POS_PRESS &&
     521                    gfx_pix_inside_rect(&pos, &geom.title_bar_rect))
     522                        ui_wdecor_move(wdecor, &pos);
     523        }
    482524}
    483525
  • 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;
  • uspace/lib/ui/test/wdecor.c

    r554a5f1 r266ec54  
    360360        errno_t rc;
    361361
    362         rc = ui_wdecor_create(NULL, "Hello", ui_wds_none, &wdecor);
     362        rc = ui_wdecor_create(NULL, "Hello", ui_wds_decorated, &wdecor);
    363363        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    364364
     
    388388}
    389389
    390 /** ui_wdecor_get_geom() produces the correct geometry */
    391 PCUT_TEST(get_geom)
     390/** ui_wdecor_get_geom() with ui_wds_none produces the correct geometry */
     391PCUT_TEST(get_geom_none)
    392392{
    393393        ui_wdecor_t *wdecor;
     
    407407        ui_wdecor_get_geom(wdecor, &geom);
    408408
     409        PCUT_ASSERT_INT_EQUALS(10, geom.interior_rect.p0.x);
     410        PCUT_ASSERT_INT_EQUALS(20, geom.interior_rect.p0.y);
     411        PCUT_ASSERT_INT_EQUALS(100, geom.interior_rect.p1.x);
     412        PCUT_ASSERT_INT_EQUALS(200, geom.interior_rect.p1.y);
     413
     414        PCUT_ASSERT_INT_EQUALS(0, geom.title_bar_rect.p0.x);
     415        PCUT_ASSERT_INT_EQUALS(0, geom.title_bar_rect.p0.y);
     416        PCUT_ASSERT_INT_EQUALS(0, geom.title_bar_rect.p1.x);
     417        PCUT_ASSERT_INT_EQUALS(0, geom.title_bar_rect.p1.y);
     418
     419        PCUT_ASSERT_INT_EQUALS(0, geom.btn_close_rect.p0.x);
     420        PCUT_ASSERT_INT_EQUALS(0, geom.btn_close_rect.p0.y);
     421        PCUT_ASSERT_INT_EQUALS(0, geom.btn_close_rect.p1.x);
     422        PCUT_ASSERT_INT_EQUALS(0, geom.btn_close_rect.p1.y);
     423
     424        PCUT_ASSERT_INT_EQUALS(10, geom.app_area_rect.p0.x);
     425        PCUT_ASSERT_INT_EQUALS(20, geom.app_area_rect.p0.y);
     426        PCUT_ASSERT_INT_EQUALS(100, geom.app_area_rect.p1.x);
     427        PCUT_ASSERT_INT_EQUALS(200, geom.app_area_rect.p1.y);
     428
     429        ui_wdecor_destroy(wdecor);
     430}
     431
     432/** ui_wdecor_get_geom() with ui_wds_frame produces the correct geometry */
     433PCUT_TEST(get_geom_frame)
     434{
     435        ui_wdecor_t *wdecor;
     436        gfx_rect_t rect;
     437        ui_wdecor_geom_t geom;
     438        errno_t rc;
     439
     440        rc = ui_wdecor_create(NULL, "Hello", ui_wds_frame, &wdecor);
     441        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     442
     443        rect.p0.x = 10;
     444        rect.p0.y = 20;
     445        rect.p1.x = 100;
     446        rect.p1.y = 200;
     447
     448        ui_wdecor_set_rect(wdecor, &rect);
     449        ui_wdecor_get_geom(wdecor, &geom);
     450
    409451        PCUT_ASSERT_INT_EQUALS(14, geom.interior_rect.p0.x);
    410452        PCUT_ASSERT_INT_EQUALS(24, geom.interior_rect.p0.y);
     
    412454        PCUT_ASSERT_INT_EQUALS(196, geom.interior_rect.p1.y);
    413455
     456        PCUT_ASSERT_INT_EQUALS(0, geom.title_bar_rect.p0.x);
     457        PCUT_ASSERT_INT_EQUALS(0, geom.title_bar_rect.p0.y);
     458        PCUT_ASSERT_INT_EQUALS(0, geom.title_bar_rect.p1.x);
     459        PCUT_ASSERT_INT_EQUALS(0, geom.title_bar_rect.p1.y);
     460
     461        PCUT_ASSERT_INT_EQUALS(0, geom.btn_close_rect.p0.x);
     462        PCUT_ASSERT_INT_EQUALS(0, geom.btn_close_rect.p0.y);
     463        PCUT_ASSERT_INT_EQUALS(0, geom.btn_close_rect.p1.x);
     464        PCUT_ASSERT_INT_EQUALS(0, geom.btn_close_rect.p1.y);
     465
     466        PCUT_ASSERT_INT_EQUALS(14, geom.app_area_rect.p0.x);
     467        PCUT_ASSERT_INT_EQUALS(24, geom.app_area_rect.p0.y);
     468        PCUT_ASSERT_INT_EQUALS(96, geom.app_area_rect.p1.x);
     469        PCUT_ASSERT_INT_EQUALS(196, geom.app_area_rect.p1.y);
     470
     471        ui_wdecor_destroy(wdecor);
     472}
     473
     474/** ui_wdecor_get_geom() with ui_wds_frame | ui_wds_titlebar */
     475PCUT_TEST(get_geom_frame_titlebar)
     476{
     477        ui_wdecor_t *wdecor;
     478        gfx_rect_t rect;
     479        ui_wdecor_geom_t geom;
     480        errno_t rc;
     481
     482        rc = ui_wdecor_create(NULL, "Hello", ui_wds_frame | ui_wds_titlebar,
     483            &wdecor);
     484        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     485
     486        rect.p0.x = 10;
     487        rect.p0.y = 20;
     488        rect.p1.x = 100;
     489        rect.p1.y = 200;
     490
     491        ui_wdecor_set_rect(wdecor, &rect);
     492        ui_wdecor_get_geom(wdecor, &geom);
     493
     494        PCUT_ASSERT_INT_EQUALS(14, geom.interior_rect.p0.x);
     495        PCUT_ASSERT_INT_EQUALS(24, geom.interior_rect.p0.y);
     496        PCUT_ASSERT_INT_EQUALS(96, geom.interior_rect.p1.x);
     497        PCUT_ASSERT_INT_EQUALS(196, geom.interior_rect.p1.y);
     498
    414499        PCUT_ASSERT_INT_EQUALS(14, geom.title_bar_rect.p0.x);
    415500        PCUT_ASSERT_INT_EQUALS(24, geom.title_bar_rect.p0.y);
     
    417502        PCUT_ASSERT_INT_EQUALS(46, geom.title_bar_rect.p1.y);
    418503
     504        PCUT_ASSERT_INT_EQUALS(0, geom.btn_close_rect.p0.x);
     505        PCUT_ASSERT_INT_EQUALS(0, geom.btn_close_rect.p0.y);
     506        PCUT_ASSERT_INT_EQUALS(0, geom.btn_close_rect.p1.x);
     507        PCUT_ASSERT_INT_EQUALS(0, geom.btn_close_rect.p1.y);
     508
     509        PCUT_ASSERT_INT_EQUALS(14, geom.app_area_rect.p0.x);
     510        PCUT_ASSERT_INT_EQUALS(46, geom.app_area_rect.p0.y);
     511        PCUT_ASSERT_INT_EQUALS(96, geom.app_area_rect.p1.x);
     512        PCUT_ASSERT_INT_EQUALS(196, geom.app_area_rect.p1.y);
     513
     514        ui_wdecor_destroy(wdecor);
     515}
     516
     517/** ui_wdecor_get_geom() with ui_wds_decorated produces the correct geometry */
     518PCUT_TEST(get_geom_decorated)
     519{
     520        ui_wdecor_t *wdecor;
     521        gfx_rect_t rect;
     522        ui_wdecor_geom_t geom;
     523        errno_t rc;
     524
     525        rc = ui_wdecor_create(NULL, "Hello", ui_wds_decorated, &wdecor);
     526        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     527
     528        rect.p0.x = 10;
     529        rect.p0.y = 20;
     530        rect.p1.x = 100;
     531        rect.p1.y = 200;
     532
     533        ui_wdecor_set_rect(wdecor, &rect);
     534        ui_wdecor_get_geom(wdecor, &geom);
     535
     536        PCUT_ASSERT_INT_EQUALS(14, geom.interior_rect.p0.x);
     537        PCUT_ASSERT_INT_EQUALS(24, geom.interior_rect.p0.y);
     538        PCUT_ASSERT_INT_EQUALS(96, geom.interior_rect.p1.x);
     539        PCUT_ASSERT_INT_EQUALS(196, geom.interior_rect.p1.y);
     540
     541        PCUT_ASSERT_INT_EQUALS(14, geom.title_bar_rect.p0.x);
     542        PCUT_ASSERT_INT_EQUALS(24, geom.title_bar_rect.p0.y);
     543        PCUT_ASSERT_INT_EQUALS(96, geom.title_bar_rect.p1.x);
     544        PCUT_ASSERT_INT_EQUALS(46, geom.title_bar_rect.p1.y);
     545
    419546        PCUT_ASSERT_INT_EQUALS(75, geom.btn_close_rect.p0.x);
    420547        PCUT_ASSERT_INT_EQUALS(25, geom.btn_close_rect.p0.y);
     
    441568        arect.p1.y = 196;
    442569
    443         ui_wdecor_rect_from_app(&arect, &rect);
     570        ui_wdecor_rect_from_app(ui_wds_none, &arect, &rect);
     571
     572        PCUT_ASSERT_INT_EQUALS(14, rect.p0.x);
     573        PCUT_ASSERT_INT_EQUALS(46, rect.p0.y);
     574        PCUT_ASSERT_INT_EQUALS(96, rect.p1.x);
     575        PCUT_ASSERT_INT_EQUALS(196, rect.p1.y);
     576
     577        ui_wdecor_rect_from_app(ui_wds_frame, &arect, &rect);
     578
     579        PCUT_ASSERT_INT_EQUALS(10, rect.p0.x);
     580        PCUT_ASSERT_INT_EQUALS(42, rect.p0.y);
     581        PCUT_ASSERT_INT_EQUALS(100, rect.p1.x);
     582        PCUT_ASSERT_INT_EQUALS(200, rect.p1.y);
     583
     584        ui_wdecor_rect_from_app(ui_wds_decorated, &arect, &rect);
    444585
    445586        PCUT_ASSERT_INT_EQUALS(10, rect.p0.x);
     
    447588        PCUT_ASSERT_INT_EQUALS(100, rect.p1.x);
    448589        PCUT_ASSERT_INT_EQUALS(200, rect.p1.y);
     590
    449591}
    450592
Note: See TracChangeset for help on using the changeset viewer.