Changeset dc5c303 in mainline for uspace/lib/ui/test/wdecor.c


Ignore:
Timestamp:
2023-12-28T13:59:23Z (14 months ago)
Author:
GitHub <noreply@…>
Children:
6b66de6b
Parents:
42c2e65 (diff), f87ff8e (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the (diff) links above to see all the changes relative to each parent.
git-author:
boba-buba <120932204+boba-buba@…> (2023-12-28 13:59:23)
git-committer:
GitHub <noreply@…> (2023-12-28 13:59:23)
Message:

Merge branch 'master' into topic/packet-capture

File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/lib/ui/test/wdecor.c

    r42c2e65 rdc5c303  
    6262};
    6363
     64static void test_wdecor_sysmenu_open(ui_wdecor_t *, void *, sysarg_t);
     65static void test_wdecor_sysmenu_left(ui_wdecor_t *, void *, sysarg_t);
     66static void test_wdecor_sysmenu_right(ui_wdecor_t *, void *, sysarg_t);
     67static void test_wdecor_sysmenu_accel(ui_wdecor_t *, void *, char32_t,
     68    sysarg_t);
    6469static void test_wdecor_minimize(ui_wdecor_t *, void *);
    6570static void test_wdecor_maximize(ui_wdecor_t *, void *);
     
    7277
    7378static ui_wdecor_cb_t test_wdecor_cb = {
     79        .sysmenu_open = test_wdecor_sysmenu_open,
     80        .sysmenu_left = test_wdecor_sysmenu_left,
     81        .sysmenu_right = test_wdecor_sysmenu_right,
     82        .sysmenu_accel = test_wdecor_sysmenu_accel,
    7483        .minimize = test_wdecor_minimize,
    7584        .maximize = test_wdecor_maximize,
     
    102111
    103112typedef struct {
     113        bool sysmenu_open;
     114        bool sysmenu_left;
     115        bool sysmenu_right;
     116        bool sysmenu_accel;
    104117        bool minimize;
    105118        bool maximize;
     
    109122        gfx_coord2_t pos;
    110123        sysarg_t pos_id;
     124        sysarg_t idev_id;
     125        char32_t accel;
    111126        bool resize;
    112127        ui_wdecor_rsztype_t rsztype;
     
    115130} test_cb_resp_t;
    116131
    117 /** Create and destroy button */
     132/** Create and destroy window decoration */
    118133PCUT_TEST(create_destroy)
    119134{
     
    213228}
    214229
    215 /** Paint button */
    216 PCUT_TEST(paint)
     230/** Setting system menu handle as active/inactive */
     231PCUT_TEST(sysmenu_hdl_set_active)
    217232{
    218233        errno_t rc;
     
    230245        PCUT_ASSERT_NOT_NULL(resource);
    231246
    232         rc = ui_wdecor_create(resource, "Hello", ui_wds_none, &wdecor);
     247        rc = ui_wdecor_create(resource, "Hello", ui_wds_decorated, &wdecor);
     248        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     249
     250        PCUT_ASSERT_FALSE(wdecor->sysmenu_hdl_active);
     251        ui_wdecor_sysmenu_hdl_set_active(wdecor, true);
     252        PCUT_ASSERT_TRUE(wdecor->sysmenu_hdl_active);
     253        ui_wdecor_sysmenu_hdl_set_active(wdecor, false);
     254        PCUT_ASSERT_FALSE(wdecor->sysmenu_hdl_active);
     255
     256        ui_wdecor_destroy(wdecor);
     257        ui_resource_destroy(resource);
     258
     259        rc = gfx_context_delete(gc);
     260        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     261}
     262
     263/** Paint system menu handle */
     264PCUT_TEST(sysmenu_hdl_paint)
     265{
     266        errno_t rc;
     267        gfx_context_t *gc = NULL;
     268        test_gc_t tgc;
     269        ui_resource_t *resource = NULL;
     270        ui_wdecor_t *wdecor;
     271        ui_wdecor_geom_t geom;
     272
     273        memset(&tgc, 0, sizeof(tgc));
     274        rc = gfx_context_new(&ops, &tgc, &gc);
     275        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     276
     277        rc = ui_resource_create(gc, false, &resource);
     278        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     279        PCUT_ASSERT_NOT_NULL(resource);
     280
     281        rc = ui_wdecor_create(resource, "Hello", ui_wds_decorated, &wdecor);
     282        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     283
     284        ui_wdecor_get_geom(wdecor, &geom);
     285        rc = ui_wdecor_sysmenu_hdl_paint(wdecor, &geom.sysmenu_hdl_rect);
     286        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     287
     288        ui_wdecor_destroy(wdecor);
     289        ui_resource_destroy(resource);
     290
     291        rc = gfx_context_delete(gc);
     292        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     293}
     294
     295/** Paint window decoration */
     296PCUT_TEST(paint)
     297{
     298        errno_t rc;
     299        gfx_context_t *gc = NULL;
     300        test_gc_t tgc;
     301        ui_resource_t *resource = NULL;
     302        ui_wdecor_t *wdecor;
     303
     304        memset(&tgc, 0, sizeof(tgc));
     305        rc = gfx_context_new(&ops, &tgc, &gc);
     306        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     307
     308        rc = ui_resource_create(gc, false, &resource);
     309        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     310        PCUT_ASSERT_NOT_NULL(resource);
     311
     312        rc = ui_wdecor_create(resource, "Hello", ui_wds_decorated, &wdecor);
    233313        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    234314
     
    241321        rc = gfx_context_delete(gc);
    242322        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     323}
     324
     325/** Test ui_wdecor_sysmenu_open() */
     326PCUT_TEST(sysmenu_open)
     327{
     328        errno_t rc;
     329        ui_wdecor_t *wdecor;
     330        test_cb_resp_t resp;
     331
     332        rc = ui_wdecor_create(NULL, "Hello", ui_wds_none, &wdecor);
     333        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     334
     335        /* Sysmenu open callback with no callbacks set */
     336        ui_wdecor_sysmenu_open(wdecor, 42);
     337
     338        /* Sysmenu open callback with sysmenu callback not implemented */
     339        ui_wdecor_set_cb(wdecor, &dummy_wdecor_cb, NULL);
     340        ui_wdecor_sysmenu_open(wdecor, 42);
     341
     342        /* Sysmenu open callback with real callback set */
     343        resp.sysmenu_open = false;
     344        resp.idev_id = 0;
     345        ui_wdecor_set_cb(wdecor, &test_wdecor_cb, &resp);
     346        ui_wdecor_sysmenu_open(wdecor, 42);
     347        PCUT_ASSERT_TRUE(resp.sysmenu_open);
     348        PCUT_ASSERT_INT_EQUALS(42, resp.idev_id);
     349
     350        ui_wdecor_destroy(wdecor);
     351}
     352
     353/** Test ui_wdecor_sysmenu_left() */
     354PCUT_TEST(sysmenu_left)
     355{
     356        errno_t rc;
     357        ui_wdecor_t *wdecor;
     358        test_cb_resp_t resp;
     359
     360        rc = ui_wdecor_create(NULL, "Hello", ui_wds_none, &wdecor);
     361        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     362
     363        /* Sysmenu left callback with no callbacks set */
     364        ui_wdecor_sysmenu_left(wdecor, 42);
     365
     366        /* Sysmenu left callback with sysmenu callback not implemented */
     367        ui_wdecor_set_cb(wdecor, &dummy_wdecor_cb, NULL);
     368        ui_wdecor_sysmenu_left(wdecor, 42);
     369
     370        /* Sysmenu left callback with real callback set */
     371        resp.sysmenu_left = false;
     372        resp.idev_id = 0;
     373        ui_wdecor_set_cb(wdecor, &test_wdecor_cb, &resp);
     374        ui_wdecor_sysmenu_left(wdecor, 42);
     375        PCUT_ASSERT_TRUE(resp.sysmenu_left);
     376        PCUT_ASSERT_INT_EQUALS(42, resp.idev_id);
     377
     378        ui_wdecor_destroy(wdecor);
     379}
     380
     381/** Test ui_wdecor_sysmenu_right() */
     382PCUT_TEST(sysmenu_right)
     383{
     384        errno_t rc;
     385        ui_wdecor_t *wdecor;
     386        test_cb_resp_t resp;
     387
     388        rc = ui_wdecor_create(NULL, "Hello", ui_wds_none, &wdecor);
     389        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     390
     391        /* Sysmenu right callback with no callbacks set */
     392        ui_wdecor_sysmenu_right(wdecor, 42);
     393
     394        /* Sysmenu right callback with sysmenu callback not implemented */
     395        ui_wdecor_set_cb(wdecor, &dummy_wdecor_cb, NULL);
     396        ui_wdecor_sysmenu_right(wdecor, 42);
     397
     398        /* Sysmenu right callback with real callback set */
     399        resp.sysmenu_right = false;
     400        resp.idev_id = 0;
     401        ui_wdecor_set_cb(wdecor, &test_wdecor_cb, &resp);
     402        ui_wdecor_sysmenu_right(wdecor, 42);
     403        PCUT_ASSERT_TRUE(resp.sysmenu_right);
     404        PCUT_ASSERT_INT_EQUALS(42, resp.idev_id);
     405
     406        ui_wdecor_destroy(wdecor);
     407}
     408
     409/** Test ui_wdecor_sysmenu_accel() */
     410PCUT_TEST(sysmenu_accel)
     411{
     412        errno_t rc;
     413        ui_wdecor_t *wdecor;
     414        test_cb_resp_t resp;
     415
     416        rc = ui_wdecor_create(NULL, "Hello", ui_wds_none, &wdecor);
     417        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     418
     419        /* Sysmenu accelerator callback with no callbacks set */
     420        ui_wdecor_sysmenu_accel(wdecor, 'a', 42);
     421
     422        /* Sysmenu accelerator callback with sysmenu callback not implemented */
     423        ui_wdecor_set_cb(wdecor, &dummy_wdecor_cb, NULL);
     424        ui_wdecor_sysmenu_accel(wdecor, 'a', 42);
     425
     426        /* Sysmenu accelerator callback with real callback set */
     427        resp.sysmenu_accel = false;
     428        resp.idev_id = 0;
     429        ui_wdecor_set_cb(wdecor, &test_wdecor_cb, &resp);
     430        ui_wdecor_sysmenu_accel(wdecor, 'a', 42);
     431        PCUT_ASSERT_TRUE(resp.sysmenu_accel);
     432        PCUT_ASSERT_INT_EQUALS('a', resp.accel);
     433        PCUT_ASSERT_INT_EQUALS(42, resp.idev_id);
     434
     435        ui_wdecor_destroy(wdecor);
    243436}
    244437
     
    552745}
    553746
    554 /** ui_wdecor_get_geom() with ui_wds_none produces the correct geometry */
    555 PCUT_TEST(get_geom_none)
    556 {
     747/** Pressing F10 generates sysmenu event.
     748 *
     749 * Note that in a window with menu bar the menu bar would claim F10
     750 * so it would never be delivered to window decoration.
     751 */
     752PCUT_TEST(kbd_f10_sysmenu)
     753{
     754        errno_t rc;
     755        gfx_rect_t rect;
     756        kbd_event_t event;
    557757        gfx_context_t *gc = NULL;
    558758        test_gc_t tgc;
     759        test_cb_resp_t resp;
    559760        ui_resource_t *resource = NULL;
    560761        ui_wdecor_t *wdecor;
    561         gfx_rect_t rect;
    562         ui_wdecor_geom_t geom;
    563         errno_t rc;
    564762
    565763        memset(&tgc, 0, sizeof(tgc));
     
    571769        PCUT_ASSERT_NOT_NULL(resource);
    572770
    573         rc = ui_wdecor_create(resource, "Hello", ui_wds_none, &wdecor);
     771        rc = ui_wdecor_create(resource, "Hello", ui_wds_decorated, &wdecor);
    574772        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    575773
     
    580778
    581779        ui_wdecor_set_rect(wdecor, &rect);
     780
     781        ui_wdecor_set_cb(wdecor, &test_wdecor_cb, (void *) &resp);
     782
     783        resp.sysmenu_open = false;
     784
     785        event.type = KEY_PRESS;
     786        event.mods = 0;
     787        event.key = KC_F10;
     788        event.kbd_id = 42;
     789        ui_wdecor_kbd_event(wdecor, &event);
     790
     791        PCUT_ASSERT_TRUE(resp.sysmenu_open);
     792        PCUT_ASSERT_INT_EQUALS(event.kbd_id, resp.idev_id);
     793
     794        ui_wdecor_destroy(wdecor);
     795        ui_resource_destroy(resource);
     796
     797        rc = gfx_context_delete(gc);
     798        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     799}
     800
     801/** Down key with active sysmenu handle generates sysmenu open event */
     802PCUT_TEST(kbd_down_sysmenu)
     803{
     804        errno_t rc;
     805        gfx_rect_t rect;
     806        kbd_event_t event;
     807        gfx_context_t *gc = NULL;
     808        test_gc_t tgc;
     809        test_cb_resp_t resp;
     810        ui_resource_t *resource = NULL;
     811        ui_wdecor_t *wdecor;
     812
     813        memset(&tgc, 0, sizeof(tgc));
     814        rc = gfx_context_new(&ops, &tgc, &gc);
     815        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     816
     817        rc = ui_resource_create(gc, false, &resource);
     818        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     819        PCUT_ASSERT_NOT_NULL(resource);
     820
     821        rc = ui_wdecor_create(resource, "Hello", ui_wds_decorated, &wdecor);
     822        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     823
     824        rect.p0.x = 10;
     825        rect.p0.y = 20;
     826        rect.p1.x = 100;
     827        rect.p1.y = 200;
     828
     829        ui_wdecor_set_rect(wdecor, &rect);
     830
     831        ui_wdecor_set_cb(wdecor, &test_wdecor_cb, (void *) &resp);
     832
     833        ui_wdecor_sysmenu_hdl_set_active(wdecor, true);
     834
     835        resp.sysmenu_open = false;
     836
     837        event.type = KEY_PRESS;
     838        event.mods = 0;
     839        event.key = KC_DOWN;
     840        event.kbd_id = 42;
     841        ui_wdecor_kbd_event(wdecor, &event);
     842
     843        PCUT_ASSERT_TRUE(resp.sysmenu_open);
     844        PCUT_ASSERT_INT_EQUALS(event.kbd_id, resp.idev_id);
     845
     846        ui_wdecor_destroy(wdecor);
     847        ui_resource_destroy(resource);
     848
     849        rc = gfx_context_delete(gc);
     850        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     851}
     852
     853/** Left key with active sysmenu handle generates sysmenu left event */
     854PCUT_TEST(kbd_left_sysmenu)
     855{
     856        errno_t rc;
     857        gfx_rect_t rect;
     858        kbd_event_t event;
     859        gfx_context_t *gc = NULL;
     860        test_gc_t tgc;
     861        test_cb_resp_t resp;
     862        ui_resource_t *resource = NULL;
     863        ui_wdecor_t *wdecor;
     864
     865        memset(&tgc, 0, sizeof(tgc));
     866        rc = gfx_context_new(&ops, &tgc, &gc);
     867        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     868
     869        rc = ui_resource_create(gc, false, &resource);
     870        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     871        PCUT_ASSERT_NOT_NULL(resource);
     872
     873        rc = ui_wdecor_create(resource, "Hello", ui_wds_decorated, &wdecor);
     874        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     875
     876        rect.p0.x = 10;
     877        rect.p0.y = 20;
     878        rect.p1.x = 100;
     879        rect.p1.y = 200;
     880
     881        ui_wdecor_set_rect(wdecor, &rect);
     882
     883        ui_wdecor_set_cb(wdecor, &test_wdecor_cb, (void *) &resp);
     884
     885        ui_wdecor_sysmenu_hdl_set_active(wdecor, true);
     886
     887        resp.sysmenu_left = false;
     888
     889        event.type = KEY_PRESS;
     890        event.mods = 0;
     891        event.key = KC_LEFT;
     892        event.kbd_id = 42;
     893        ui_wdecor_kbd_event(wdecor, &event);
     894
     895        PCUT_ASSERT_TRUE(resp.sysmenu_left);
     896        PCUT_ASSERT_INT_EQUALS(event.kbd_id, resp.idev_id);
     897
     898        ui_wdecor_destroy(wdecor);
     899        ui_resource_destroy(resource);
     900
     901        rc = gfx_context_delete(gc);
     902        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     903}
     904
     905/** Right key with active sysmenu handle generates sysmenu right event */
     906PCUT_TEST(kbd_right_sysmenu)
     907{
     908        errno_t rc;
     909        gfx_rect_t rect;
     910        kbd_event_t event;
     911        gfx_context_t *gc = NULL;
     912        test_gc_t tgc;
     913        test_cb_resp_t resp;
     914        ui_resource_t *resource = NULL;
     915        ui_wdecor_t *wdecor;
     916
     917        memset(&tgc, 0, sizeof(tgc));
     918        rc = gfx_context_new(&ops, &tgc, &gc);
     919        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     920
     921        rc = ui_resource_create(gc, false, &resource);
     922        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     923        PCUT_ASSERT_NOT_NULL(resource);
     924
     925        rc = ui_wdecor_create(resource, "Hello", ui_wds_decorated, &wdecor);
     926        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     927
     928        rect.p0.x = 10;
     929        rect.p0.y = 20;
     930        rect.p1.x = 100;
     931        rect.p1.y = 200;
     932
     933        ui_wdecor_set_rect(wdecor, &rect);
     934
     935        ui_wdecor_set_cb(wdecor, &test_wdecor_cb, (void *) &resp);
     936
     937        ui_wdecor_sysmenu_hdl_set_active(wdecor, true);
     938
     939        resp.sysmenu_right = false;
     940
     941        event.type = KEY_PRESS;
     942        event.mods = 0;
     943        event.key = KC_RIGHT;
     944        event.kbd_id = 42;
     945        ui_wdecor_kbd_event(wdecor, &event);
     946
     947        PCUT_ASSERT_TRUE(resp.sysmenu_right);
     948        PCUT_ASSERT_INT_EQUALS(event.kbd_id, resp.idev_id);
     949
     950        ui_wdecor_destroy(wdecor);
     951        ui_resource_destroy(resource);
     952
     953        rc = gfx_context_delete(gc);
     954        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     955}
     956
     957/** Character key with active sysmenu handle generates sysmenu accel event */
     958PCUT_TEST(kbd_accel_sysmenu)
     959{
     960        errno_t rc;
     961        gfx_rect_t rect;
     962        kbd_event_t event;
     963        gfx_context_t *gc = NULL;
     964        test_gc_t tgc;
     965        test_cb_resp_t resp;
     966        ui_resource_t *resource = NULL;
     967        ui_wdecor_t *wdecor;
     968
     969        memset(&tgc, 0, sizeof(tgc));
     970        rc = gfx_context_new(&ops, &tgc, &gc);
     971        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     972
     973        rc = ui_resource_create(gc, false, &resource);
     974        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     975        PCUT_ASSERT_NOT_NULL(resource);
     976
     977        rc = ui_wdecor_create(resource, "Hello", ui_wds_decorated, &wdecor);
     978        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     979
     980        rect.p0.x = 10;
     981        rect.p0.y = 20;
     982        rect.p1.x = 100;
     983        rect.p1.y = 200;
     984
     985        ui_wdecor_set_rect(wdecor, &rect);
     986
     987        ui_wdecor_set_cb(wdecor, &test_wdecor_cb, (void *) &resp);
     988
     989        ui_wdecor_sysmenu_hdl_set_active(wdecor, true);
     990
     991        resp.sysmenu_accel = false;
     992
     993        event.type = KEY_PRESS;
     994        event.mods = 0;
     995        event.key = KC_A;
     996        event.c = 'a';
     997        event.kbd_id = 42;
     998        ui_wdecor_kbd_event(wdecor, &event);
     999
     1000        PCUT_ASSERT_TRUE(resp.sysmenu_accel);
     1001        PCUT_ASSERT_INT_EQUALS(event.c, resp.accel);
     1002        PCUT_ASSERT_INT_EQUALS(event.kbd_id, resp.idev_id);
     1003
     1004        ui_wdecor_destroy(wdecor);
     1005        ui_resource_destroy(resource);
     1006
     1007        rc = gfx_context_delete(gc);
     1008        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     1009}
     1010
     1011/** ui_wdecor_get_geom() with ui_wds_none produces the correct geometry */
     1012PCUT_TEST(get_geom_none)
     1013{
     1014        gfx_context_t *gc = NULL;
     1015        test_gc_t tgc;
     1016        ui_resource_t *resource = NULL;
     1017        ui_wdecor_t *wdecor;
     1018        gfx_rect_t rect;
     1019        ui_wdecor_geom_t geom;
     1020        errno_t rc;
     1021
     1022        memset(&tgc, 0, sizeof(tgc));
     1023        rc = gfx_context_new(&ops, &tgc, &gc);
     1024        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     1025
     1026        rc = ui_resource_create(gc, false, &resource);
     1027        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     1028        PCUT_ASSERT_NOT_NULL(resource);
     1029
     1030        rc = ui_wdecor_create(resource, "Hello", ui_wds_none, &wdecor);
     1031        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     1032
     1033        rect.p0.x = 10;
     1034        rect.p0.y = 20;
     1035        rect.p1.x = 100;
     1036        rect.p1.y = 200;
     1037
     1038        ui_wdecor_set_rect(wdecor, &rect);
    5821039        ui_wdecor_get_geom(wdecor, &geom);
    5831040
     
    5921049        PCUT_ASSERT_INT_EQUALS(0, geom.title_bar_rect.p1.y);
    5931050
     1051        PCUT_ASSERT_INT_EQUALS(0, geom.sysmenu_hdl_rect.p0.x);
     1052        PCUT_ASSERT_INT_EQUALS(0, geom.sysmenu_hdl_rect.p0.y);
     1053        PCUT_ASSERT_INT_EQUALS(0, geom.sysmenu_hdl_rect.p1.x);
     1054        PCUT_ASSERT_INT_EQUALS(0, geom.sysmenu_hdl_rect.p1.y);
     1055
     1056        PCUT_ASSERT_INT_EQUALS(0, geom.caption_rect.p0.x);
     1057        PCUT_ASSERT_INT_EQUALS(0, geom.caption_rect.p0.y);
     1058        PCUT_ASSERT_INT_EQUALS(0, geom.caption_rect.p1.x);
     1059        PCUT_ASSERT_INT_EQUALS(0, geom.caption_rect.p1.y);
     1060
     1061        PCUT_ASSERT_INT_EQUALS(0, geom.btn_min_rect.p0.x);
     1062        PCUT_ASSERT_INT_EQUALS(0, geom.btn_min_rect.p0.y);
     1063        PCUT_ASSERT_INT_EQUALS(0, geom.btn_min_rect.p1.x);
     1064        PCUT_ASSERT_INT_EQUALS(0, geom.btn_min_rect.p1.y);
     1065
     1066        PCUT_ASSERT_INT_EQUALS(0, geom.btn_max_rect.p0.x);
     1067        PCUT_ASSERT_INT_EQUALS(0, geom.btn_max_rect.p0.y);
     1068        PCUT_ASSERT_INT_EQUALS(0, geom.btn_max_rect.p1.x);
     1069        PCUT_ASSERT_INT_EQUALS(0, geom.btn_max_rect.p1.y);
     1070
    5941071        PCUT_ASSERT_INT_EQUALS(0, geom.btn_close_rect.p0.x);
    5951072        PCUT_ASSERT_INT_EQUALS(0, geom.btn_close_rect.p0.y);
     
    6491126        PCUT_ASSERT_INT_EQUALS(0, geom.title_bar_rect.p1.y);
    6501127
     1128        PCUT_ASSERT_INT_EQUALS(0, geom.sysmenu_hdl_rect.p0.x);
     1129        PCUT_ASSERT_INT_EQUALS(0, geom.sysmenu_hdl_rect.p0.y);
     1130        PCUT_ASSERT_INT_EQUALS(0, geom.sysmenu_hdl_rect.p1.x);
     1131        PCUT_ASSERT_INT_EQUALS(0, geom.sysmenu_hdl_rect.p1.y);
     1132
     1133        PCUT_ASSERT_INT_EQUALS(0, geom.caption_rect.p0.x);
     1134        PCUT_ASSERT_INT_EQUALS(0, geom.caption_rect.p0.y);
     1135        PCUT_ASSERT_INT_EQUALS(0, geom.caption_rect.p1.x);
     1136        PCUT_ASSERT_INT_EQUALS(0, geom.caption_rect.p1.y);
     1137
     1138        PCUT_ASSERT_INT_EQUALS(0, geom.btn_min_rect.p0.x);
     1139        PCUT_ASSERT_INT_EQUALS(0, geom.btn_min_rect.p0.y);
     1140        PCUT_ASSERT_INT_EQUALS(0, geom.btn_min_rect.p1.x);
     1141        PCUT_ASSERT_INT_EQUALS(0, geom.btn_min_rect.p1.y);
     1142
     1143        PCUT_ASSERT_INT_EQUALS(0, geom.btn_max_rect.p0.x);
     1144        PCUT_ASSERT_INT_EQUALS(0, geom.btn_max_rect.p0.y);
     1145        PCUT_ASSERT_INT_EQUALS(0, geom.btn_max_rect.p1.x);
     1146        PCUT_ASSERT_INT_EQUALS(0, geom.btn_max_rect.p1.y);
     1147
    6511148        PCUT_ASSERT_INT_EQUALS(0, geom.btn_close_rect.p0.x);
    6521149        PCUT_ASSERT_INT_EQUALS(0, geom.btn_close_rect.p0.y);
     
    7071204        PCUT_ASSERT_INT_EQUALS(46, geom.title_bar_rect.p1.y);
    7081205
     1206        PCUT_ASSERT_INT_EQUALS(0, geom.sysmenu_hdl_rect.p0.x);
     1207        PCUT_ASSERT_INT_EQUALS(0, geom.sysmenu_hdl_rect.p0.y);
     1208        PCUT_ASSERT_INT_EQUALS(0, geom.sysmenu_hdl_rect.p1.x);
     1209        PCUT_ASSERT_INT_EQUALS(0, geom.sysmenu_hdl_rect.p1.y);
     1210
     1211        PCUT_ASSERT_INT_EQUALS(18, geom.caption_rect.p0.x);
     1212        PCUT_ASSERT_INT_EQUALS(24, geom.caption_rect.p0.y);
     1213        PCUT_ASSERT_INT_EQUALS(91, geom.caption_rect.p1.x);
     1214        PCUT_ASSERT_INT_EQUALS(46, geom.caption_rect.p1.y);
     1215
     1216        PCUT_ASSERT_INT_EQUALS(0, geom.btn_min_rect.p0.x);
     1217        PCUT_ASSERT_INT_EQUALS(0, geom.btn_min_rect.p0.y);
     1218        PCUT_ASSERT_INT_EQUALS(0, geom.btn_min_rect.p1.x);
     1219        PCUT_ASSERT_INT_EQUALS(0, geom.btn_min_rect.p1.y);
     1220
     1221        PCUT_ASSERT_INT_EQUALS(0, geom.btn_max_rect.p0.x);
     1222        PCUT_ASSERT_INT_EQUALS(0, geom.btn_max_rect.p0.y);
     1223        PCUT_ASSERT_INT_EQUALS(0, geom.btn_max_rect.p1.x);
     1224        PCUT_ASSERT_INT_EQUALS(0, geom.btn_max_rect.p1.y);
     1225
    7091226        PCUT_ASSERT_INT_EQUALS(0, geom.btn_close_rect.p0.x);
    7101227        PCUT_ASSERT_INT_EQUALS(0, geom.btn_close_rect.p0.y);
     
    7631280        PCUT_ASSERT_INT_EQUALS(96, geom.title_bar_rect.p1.x);
    7641281        PCUT_ASSERT_INT_EQUALS(46, geom.title_bar_rect.p1.y);
     1282
     1283        PCUT_ASSERT_INT_EQUALS(15, geom.sysmenu_hdl_rect.p0.x);
     1284        PCUT_ASSERT_INT_EQUALS(25, geom.sysmenu_hdl_rect.p0.y);
     1285        PCUT_ASSERT_INT_EQUALS(35, geom.sysmenu_hdl_rect.p1.x);
     1286        PCUT_ASSERT_INT_EQUALS(45, geom.sysmenu_hdl_rect.p1.y);
     1287
     1288        PCUT_ASSERT_INT_EQUALS(38, geom.caption_rect.p0.x);
     1289        PCUT_ASSERT_INT_EQUALS(24, geom.caption_rect.p0.y);
     1290        PCUT_ASSERT_INT_EQUALS(51, geom.caption_rect.p1.x);
     1291        PCUT_ASSERT_INT_EQUALS(46, geom.caption_rect.p1.y);
     1292
     1293        PCUT_ASSERT_INT_EQUALS(55, geom.btn_min_rect.p0.x);
     1294        PCUT_ASSERT_INT_EQUALS(25, geom.btn_min_rect.p0.y);
     1295        PCUT_ASSERT_INT_EQUALS(75, geom.btn_min_rect.p1.x);
     1296        PCUT_ASSERT_INT_EQUALS(45, geom.btn_min_rect.p1.y);
     1297
     1298        /* Maximize button is not in ui_wds_decorated */
     1299        PCUT_ASSERT_INT_EQUALS(0, geom.btn_max_rect.p0.x);
     1300        PCUT_ASSERT_INT_EQUALS(0, geom.btn_max_rect.p0.y);
     1301        PCUT_ASSERT_INT_EQUALS(0, geom.btn_max_rect.p1.x);
     1302        PCUT_ASSERT_INT_EQUALS(0, geom.btn_max_rect.p1.y);
    7651303
    7661304        PCUT_ASSERT_INT_EQUALS(75, geom.btn_close_rect.p0.x);
     
    11111649}
    11121650
     1651static void test_wdecor_sysmenu_open(ui_wdecor_t *wdecor, void *arg,
     1652    sysarg_t idev_id)
     1653{
     1654        test_cb_resp_t *resp = (test_cb_resp_t *) arg;
     1655
     1656        resp->sysmenu_open = true;
     1657        resp->idev_id = idev_id;
     1658}
     1659
     1660static void test_wdecor_sysmenu_left(ui_wdecor_t *wdecor, void *arg,
     1661    sysarg_t idev_id)
     1662{
     1663        test_cb_resp_t *resp = (test_cb_resp_t *) arg;
     1664
     1665        resp->sysmenu_left = true;
     1666        resp->idev_id = idev_id;
     1667}
     1668
     1669static void test_wdecor_sysmenu_right(ui_wdecor_t *wdecor, void *arg,
     1670    sysarg_t idev_id)
     1671{
     1672        test_cb_resp_t *resp = (test_cb_resp_t *) arg;
     1673
     1674        resp->sysmenu_right = true;
     1675        resp->idev_id = idev_id;
     1676}
     1677
     1678static void test_wdecor_sysmenu_accel(ui_wdecor_t *wdecor, void *arg,
     1679    char32_t accel, sysarg_t idev_id)
     1680{
     1681        test_cb_resp_t *resp = (test_cb_resp_t *) arg;
     1682
     1683        resp->sysmenu_accel = true;
     1684        resp->accel = accel;
     1685        resp->idev_id = idev_id;
     1686}
     1687
    11131688static void test_wdecor_minimize(ui_wdecor_t *wdecor, void *arg)
    11141689{
Note: See TracChangeset for help on using the changeset viewer.