Ignore:
File:
1 edited

Legend:

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

    r211fd68 r7470d97  
    11/*
    2  * Copyright (c) 2024 Jiri Svoboda
     2 * Copyright (c) 2021 Jiri Svoboda
    33 * All rights reserved.
    44 *
     
    3434#include <ui/pbutton.h>
    3535#include <ui/resource.h>
    36 #include <ui/ui.h>
    3736#include <ui/wdecor.h>
    3837#include "../private/wdecor.h"
     
    6362};
    6463
    65 static void test_wdecor_sysmenu_open(ui_wdecor_t *, void *, sysarg_t);
    66 static void test_wdecor_sysmenu_left(ui_wdecor_t *, void *, sysarg_t);
    67 static void test_wdecor_sysmenu_right(ui_wdecor_t *, void *, sysarg_t);
    68 static void test_wdecor_sysmenu_accel(ui_wdecor_t *, void *, char32_t,
    69     sysarg_t);
    70 static void test_wdecor_minimize(ui_wdecor_t *, void *);
    71 static void test_wdecor_maximize(ui_wdecor_t *, void *);
    72 static void test_wdecor_unmaximize(ui_wdecor_t *, void *);
    7364static void test_wdecor_close(ui_wdecor_t *, void *);
    74 static void test_wdecor_move(ui_wdecor_t *, void *, gfx_coord2_t *, sysarg_t);
     65static void test_wdecor_move(ui_wdecor_t *, void *, gfx_coord2_t *);
    7566static void test_wdecor_resize(ui_wdecor_t *, void *, ui_wdecor_rsztype_t,
    76     gfx_coord2_t *, sysarg_t);
     67    gfx_coord2_t *);
    7768static void test_wdecor_set_cursor(ui_wdecor_t *, void *, ui_stock_cursor_t);
    7869
    7970static ui_wdecor_cb_t test_wdecor_cb = {
    80         .sysmenu_open = test_wdecor_sysmenu_open,
    81         .sysmenu_left = test_wdecor_sysmenu_left,
    82         .sysmenu_right = test_wdecor_sysmenu_right,
    83         .sysmenu_accel = test_wdecor_sysmenu_accel,
    84         .minimize = test_wdecor_minimize,
    85         .maximize = test_wdecor_maximize,
    86         .unmaximize = test_wdecor_unmaximize,
    8771        .close = test_wdecor_close,
    8872        .move = test_wdecor_move,
     
    11296
    11397typedef struct {
    114         bool sysmenu_open;
    115         bool sysmenu_left;
    116         bool sysmenu_right;
    117         bool sysmenu_accel;
    118         bool minimize;
    119         bool maximize;
    120         bool unmaximize;
    12198        bool close;
    12299        bool move;
    123100        gfx_coord2_t pos;
    124         sysarg_t pos_id;
    125         sysarg_t idev_id;
    126         char32_t accel;
    127101        bool resize;
    128102        ui_wdecor_rsztype_t rsztype;
     
    131105} test_cb_resp_t;
    132106
    133 /** Create and destroy window decoration */
     107/** Create and destroy button */
    134108PCUT_TEST(create_destroy)
    135109{
     
    153127PCUT_TEST(set_rect)
    154128{
    155         gfx_context_t *gc = NULL;
    156         test_gc_t tgc;
    157         ui_resource_t *resource = NULL;
    158129        ui_wdecor_t *wdecor;
    159130        gfx_rect_t rect;
    160131        errno_t rc;
    161132
    162         memset(&tgc, 0, sizeof(tgc));
    163         rc = gfx_context_new(&ops, &tgc, &gc);
    164         PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    165 
    166         rc = ui_resource_create(gc, false, &resource);
    167         PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    168         PCUT_ASSERT_NOT_NULL(resource);
    169 
    170         rc = ui_wdecor_create(resource, "Hello", ui_wds_none, &wdecor);
     133        rc = ui_wdecor_create(NULL, "Hello", ui_wds_none, &wdecor);
    171134        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    172135
     
    183146
    184147        ui_wdecor_destroy(wdecor);
    185         ui_resource_destroy(resource);
    186 
    187         rc = gfx_context_delete(gc);
    188         PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    189148}
    190149
     
    209168}
    210169
    211 /** Set window decoration maximized sets internal field */
    212 PCUT_TEST(set_maximized)
    213 {
    214         ui_wdecor_t *wdecor;
    215         errno_t rc;
    216 
    217         rc = ui_wdecor_create(NULL, "Hello", ui_wds_none, &wdecor);
    218         PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    219 
    220         PCUT_ASSERT_TRUE(wdecor->active);
    221 
    222         ui_wdecor_set_maximized(wdecor, false);
    223         PCUT_ASSERT_FALSE(wdecor->maximized);
    224 
    225         ui_wdecor_set_maximized(wdecor, true);
    226         PCUT_ASSERT_TRUE(wdecor->maximized);
    227 
    228         ui_wdecor_destroy(wdecor);
    229 }
    230 
    231 /** Setting system menu handle as active/inactive */
    232 PCUT_TEST(sysmenu_hdl_set_active)
     170/** Paint button */
     171PCUT_TEST(paint)
    233172{
    234173        errno_t rc;
     
    246185        PCUT_ASSERT_NOT_NULL(resource);
    247186
    248         rc = ui_wdecor_create(resource, "Hello", ui_wds_decorated, &wdecor);
    249         PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    250 
    251         PCUT_ASSERT_FALSE(wdecor->sysmenu_hdl_active);
    252         ui_wdecor_sysmenu_hdl_set_active(wdecor, true);
    253         PCUT_ASSERT_TRUE(wdecor->sysmenu_hdl_active);
    254         ui_wdecor_sysmenu_hdl_set_active(wdecor, false);
    255         PCUT_ASSERT_FALSE(wdecor->sysmenu_hdl_active);
     187        rc = ui_wdecor_create(resource, "Hello", ui_wds_none, &wdecor);
     188        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     189
     190        rc = ui_wdecor_paint(wdecor);
     191        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    256192
    257193        ui_wdecor_destroy(wdecor);
     
    260196        rc = gfx_context_delete(gc);
    261197        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    262 }
    263 
    264 /** Paint system menu handle */
    265 PCUT_TEST(sysmenu_hdl_paint)
    266 {
    267         errno_t rc;
    268         gfx_context_t *gc = NULL;
    269         test_gc_t tgc;
    270         ui_resource_t *resource = NULL;
    271         ui_wdecor_t *wdecor;
    272         ui_wdecor_geom_t geom;
    273 
    274         memset(&tgc, 0, sizeof(tgc));
    275         rc = gfx_context_new(&ops, &tgc, &gc);
    276         PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    277 
    278         rc = ui_resource_create(gc, false, &resource);
    279         PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    280         PCUT_ASSERT_NOT_NULL(resource);
    281 
    282         rc = ui_wdecor_create(resource, "Hello", ui_wds_decorated, &wdecor);
    283         PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    284 
    285         ui_wdecor_get_geom(wdecor, &geom);
    286         rc = ui_wdecor_sysmenu_hdl_paint(wdecor, &geom.sysmenu_hdl_rect);
    287         PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    288 
    289         ui_wdecor_destroy(wdecor);
    290         ui_resource_destroy(resource);
    291 
    292         rc = gfx_context_delete(gc);
    293         PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    294 }
    295 
    296 /** Paint window decoration */
    297 PCUT_TEST(paint)
    298 {
    299         errno_t rc;
    300         gfx_context_t *gc = NULL;
    301         test_gc_t tgc;
    302         ui_resource_t *resource = NULL;
    303         ui_wdecor_t *wdecor;
    304 
    305         memset(&tgc, 0, sizeof(tgc));
    306         rc = gfx_context_new(&ops, &tgc, &gc);
    307         PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    308 
    309         rc = ui_resource_create(gc, false, &resource);
    310         PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    311         PCUT_ASSERT_NOT_NULL(resource);
    312 
    313         rc = ui_wdecor_create(resource, "Hello", ui_wds_decorated, &wdecor);
    314         PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    315 
    316         rc = ui_wdecor_paint(wdecor);
    317         PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    318 
    319         ui_wdecor_destroy(wdecor);
    320         ui_resource_destroy(resource);
    321 
    322         rc = gfx_context_delete(gc);
    323         PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    324 }
    325 
    326 /** Test ui_wdecor_sysmenu_open() */
    327 PCUT_TEST(sysmenu_open)
    328 {
    329         errno_t rc;
    330         ui_wdecor_t *wdecor;
    331         test_cb_resp_t resp;
    332 
    333         rc = ui_wdecor_create(NULL, "Hello", ui_wds_none, &wdecor);
    334         PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    335 
    336         /* Sysmenu open callback with no callbacks set */
    337         ui_wdecor_sysmenu_open(wdecor, 42);
    338 
    339         /* Sysmenu open callback with sysmenu callback not implemented */
    340         ui_wdecor_set_cb(wdecor, &dummy_wdecor_cb, NULL);
    341         ui_wdecor_sysmenu_open(wdecor, 42);
    342 
    343         /* Sysmenu open callback with real callback set */
    344         resp.sysmenu_open = false;
    345         resp.idev_id = 0;
    346         ui_wdecor_set_cb(wdecor, &test_wdecor_cb, &resp);
    347         ui_wdecor_sysmenu_open(wdecor, 42);
    348         PCUT_ASSERT_TRUE(resp.sysmenu_open);
    349         PCUT_ASSERT_INT_EQUALS(42, resp.idev_id);
    350 
    351         ui_wdecor_destroy(wdecor);
    352 }
    353 
    354 /** Test ui_wdecor_sysmenu_left() */
    355 PCUT_TEST(sysmenu_left)
    356 {
    357         errno_t rc;
    358         ui_wdecor_t *wdecor;
    359         test_cb_resp_t resp;
    360 
    361         rc = ui_wdecor_create(NULL, "Hello", ui_wds_none, &wdecor);
    362         PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    363 
    364         /* Sysmenu left callback with no callbacks set */
    365         ui_wdecor_sysmenu_left(wdecor, 42);
    366 
    367         /* Sysmenu left callback with sysmenu callback not implemented */
    368         ui_wdecor_set_cb(wdecor, &dummy_wdecor_cb, NULL);
    369         ui_wdecor_sysmenu_left(wdecor, 42);
    370 
    371         /* Sysmenu left callback with real callback set */
    372         resp.sysmenu_left = false;
    373         resp.idev_id = 0;
    374         ui_wdecor_set_cb(wdecor, &test_wdecor_cb, &resp);
    375         ui_wdecor_sysmenu_left(wdecor, 42);
    376         PCUT_ASSERT_TRUE(resp.sysmenu_left);
    377         PCUT_ASSERT_INT_EQUALS(42, resp.idev_id);
    378 
    379         ui_wdecor_destroy(wdecor);
    380 }
    381 
    382 /** Test ui_wdecor_sysmenu_right() */
    383 PCUT_TEST(sysmenu_right)
    384 {
    385         errno_t rc;
    386         ui_wdecor_t *wdecor;
    387         test_cb_resp_t resp;
    388 
    389         rc = ui_wdecor_create(NULL, "Hello", ui_wds_none, &wdecor);
    390         PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    391 
    392         /* Sysmenu right callback with no callbacks set */
    393         ui_wdecor_sysmenu_right(wdecor, 42);
    394 
    395         /* Sysmenu right callback with sysmenu callback not implemented */
    396         ui_wdecor_set_cb(wdecor, &dummy_wdecor_cb, NULL);
    397         ui_wdecor_sysmenu_right(wdecor, 42);
    398 
    399         /* Sysmenu right callback with real callback set */
    400         resp.sysmenu_right = false;
    401         resp.idev_id = 0;
    402         ui_wdecor_set_cb(wdecor, &test_wdecor_cb, &resp);
    403         ui_wdecor_sysmenu_right(wdecor, 42);
    404         PCUT_ASSERT_TRUE(resp.sysmenu_right);
    405         PCUT_ASSERT_INT_EQUALS(42, resp.idev_id);
    406 
    407         ui_wdecor_destroy(wdecor);
    408 }
    409 
    410 /** Test ui_wdecor_sysmenu_accel() */
    411 PCUT_TEST(sysmenu_accel)
    412 {
    413         errno_t rc;
    414         ui_wdecor_t *wdecor;
    415         test_cb_resp_t resp;
    416 
    417         rc = ui_wdecor_create(NULL, "Hello", ui_wds_none, &wdecor);
    418         PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    419 
    420         /* Sysmenu accelerator callback with no callbacks set */
    421         ui_wdecor_sysmenu_accel(wdecor, 'a', 42);
    422 
    423         /* Sysmenu accelerator callback with sysmenu callback not implemented */
    424         ui_wdecor_set_cb(wdecor, &dummy_wdecor_cb, NULL);
    425         ui_wdecor_sysmenu_accel(wdecor, 'a', 42);
    426 
    427         /* Sysmenu accelerator callback with real callback set */
    428         resp.sysmenu_accel = false;
    429         resp.idev_id = 0;
    430         ui_wdecor_set_cb(wdecor, &test_wdecor_cb, &resp);
    431         ui_wdecor_sysmenu_accel(wdecor, 'a', 42);
    432         PCUT_ASSERT_TRUE(resp.sysmenu_accel);
    433         PCUT_ASSERT_INT_EQUALS('a', resp.accel);
    434         PCUT_ASSERT_INT_EQUALS(42, resp.idev_id);
    435 
    436         ui_wdecor_destroy(wdecor);
    437 }
    438 
    439 /** Test ui_wdecor_minimize() */
    440 PCUT_TEST(minimize)
    441 {
    442         errno_t rc;
    443         ui_wdecor_t *wdecor;
    444         test_cb_resp_t resp;
    445 
    446         rc = ui_wdecor_create(NULL, "Hello", ui_wds_none, &wdecor);
    447         PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    448 
    449         /* Minimize callback with no callbacks set */
    450         ui_wdecor_minimize(wdecor);
    451 
    452         /* Minimize callback with minimize callback not implemented */
    453         ui_wdecor_set_cb(wdecor, &dummy_wdecor_cb, NULL);
    454         ui_wdecor_minimize(wdecor);
    455 
    456         /* Minimize callback with real callback set */
    457         resp.minimize = false;
    458         ui_wdecor_set_cb(wdecor, &test_wdecor_cb, &resp);
    459         ui_wdecor_minimize(wdecor);
    460         PCUT_ASSERT_TRUE(resp.minimize);
    461 
    462         ui_wdecor_destroy(wdecor);
    463 }
    464 
    465 /** Test ui_wdecor_maximize() */
    466 PCUT_TEST(maximize)
    467 {
    468         errno_t rc;
    469         ui_wdecor_t *wdecor;
    470         test_cb_resp_t resp;
    471 
    472         rc = ui_wdecor_create(NULL, "Hello", ui_wds_none, &wdecor);
    473         PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    474 
    475         /* Maximize callback with no callbacks set */
    476         ui_wdecor_maximize(wdecor);
    477 
    478         /* Maxmimize callback with maximize callback not implemented */
    479         ui_wdecor_set_cb(wdecor, &dummy_wdecor_cb, NULL);
    480         ui_wdecor_maximize(wdecor);
    481 
    482         /* Maximize callback with real callback set */
    483         resp.maximize = false;
    484         ui_wdecor_set_cb(wdecor, &test_wdecor_cb, &resp);
    485         ui_wdecor_maximize(wdecor);
    486         PCUT_ASSERT_TRUE(resp.maximize);
    487 
    488         ui_wdecor_destroy(wdecor);
    489 }
    490 
    491 /** Test ui_wdecor_unmaximize() */
    492 PCUT_TEST(unmaximize)
    493 {
    494         errno_t rc;
    495         ui_wdecor_t *wdecor;
    496         test_cb_resp_t resp;
    497 
    498         rc = ui_wdecor_create(NULL, "Hello", ui_wds_none, &wdecor);
    499         PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    500 
    501         /* Unmaximize callback with no callbacks set */
    502         ui_wdecor_unmaximize(wdecor);
    503 
    504         /* Unmaximize callback with unmaximize callback not implemented */
    505         ui_wdecor_set_cb(wdecor, &dummy_wdecor_cb, NULL);
    506         ui_wdecor_unmaximize(wdecor);
    507 
    508         /* Unmaximize callback with real callback set */
    509         resp.unmaximize = false;
    510         ui_wdecor_set_cb(wdecor, &test_wdecor_cb, &resp);
    511         ui_wdecor_unmaximize(wdecor);
    512         PCUT_ASSERT_TRUE(resp.unmaximize);
    513 
    514         ui_wdecor_destroy(wdecor);
    515198}
    516199
     
    548231        test_cb_resp_t resp;
    549232        gfx_coord2_t pos;
    550         sysarg_t pos_id;
    551233
    552234        rc = ui_wdecor_create(NULL, "Hello", ui_wds_none, &wdecor);
     
    555237        pos.x = 3;
    556238        pos.y = 4;
    557         pos_id = 5;
    558239
    559240        /* Move callback with no callbacks set */
    560         ui_wdecor_move(wdecor, &pos, pos_id);
     241        ui_wdecor_move(wdecor, &pos);
    561242
    562243        /* Move callback with move callback not implemented */
    563244        ui_wdecor_set_cb(wdecor, &dummy_wdecor_cb, NULL);
    564         ui_wdecor_move(wdecor, &pos, pos_id);
     245        ui_wdecor_move(wdecor, &pos);
    565246
    566247        /* Move callback with real callback set */
     
    568249        resp.pos.x = 0;
    569250        resp.pos.y = 0;
    570         resp.pos_id = 0;
    571251        ui_wdecor_set_cb(wdecor, &test_wdecor_cb, &resp);
    572         ui_wdecor_move(wdecor, &pos, pos_id);
     252        ui_wdecor_move(wdecor, &pos);
    573253        PCUT_ASSERT_TRUE(resp.move);
    574254        PCUT_ASSERT_INT_EQUALS(pos.x, resp.pos.x);
    575255        PCUT_ASSERT_INT_EQUALS(pos.y, resp.pos.y);
    576         PCUT_ASSERT_INT_EQUALS(pos_id, resp.pos_id);
    577256
    578257        ui_wdecor_destroy(wdecor);
     
    587266        ui_wdecor_rsztype_t rsztype;
    588267        gfx_coord2_t pos;
    589         sysarg_t pos_id;
    590268
    591269        rc = ui_wdecor_create(NULL, "Hello", ui_wds_none, &wdecor);
     
    595273        pos.x = 3;
    596274        pos.y = 4;
    597         pos_id = 5;
    598275
    599276        /* Resize callback with no callbacks set */
    600         ui_wdecor_resize(wdecor, rsztype, &pos, pos_id);
     277        ui_wdecor_resize(wdecor, rsztype, &pos);
    601278
    602279        /* Resize callback with move callback not implemented */
    603280        ui_wdecor_set_cb(wdecor, &dummy_wdecor_cb, NULL);
    604         ui_wdecor_resize(wdecor, rsztype, &pos, pos_id);
     281        ui_wdecor_resize(wdecor, rsztype, &pos);
    605282
    606283        /* Resize callback with real callback set */
     
    610287        resp.pos.y = 0;
    611288        ui_wdecor_set_cb(wdecor, &test_wdecor_cb, &resp);
    612         ui_wdecor_resize(wdecor, rsztype, &pos, pos_id);
     289        ui_wdecor_resize(wdecor, rsztype, &pos);
    613290        PCUT_ASSERT_TRUE(resp.resize);
    614291        PCUT_ASSERT_INT_EQUALS(rsztype, resp.rsztype);
    615292        PCUT_ASSERT_INT_EQUALS(pos.x, resp.pos.x);
    616293        PCUT_ASSERT_INT_EQUALS(pos.y, resp.pos.y);
    617         PCUT_ASSERT_INT_EQUALS(pos_id, resp.pos_id);
    618294
    619295        ui_wdecor_destroy(wdecor);
     
    654330PCUT_TEST(close_btn_clicked)
    655331{
    656         gfx_context_t *gc = NULL;
    657         test_gc_t tgc;
    658         ui_resource_t *resource = NULL;
    659332        ui_wdecor_t *wdecor;
    660333        gfx_rect_t rect;
     
    662335        errno_t rc;
    663336
    664         memset(&tgc, 0, sizeof(tgc));
    665         rc = gfx_context_new(&ops, &tgc, &gc);
    666         PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    667 
    668         rc = ui_resource_create(gc, false, &resource);
    669         PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    670         PCUT_ASSERT_NOT_NULL(resource);
    671 
    672         rc = ui_wdecor_create(resource, "Hello", ui_wds_decorated, &wdecor);
     337        rc = ui_wdecor_create(NULL, "Hello", ui_wds_none, &wdecor);
    673338        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    674339
     
    688353
    689354        ui_wdecor_destroy(wdecor);
    690         ui_resource_destroy(resource);
    691 
    692         rc = gfx_context_delete(gc);
    693         PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    694355}
    695356
     
    746407}
    747408
    748 /** Pressing F10 generates sysmenu event.
    749  *
    750  * Note that in a window with menu bar the menu bar would claim F10
    751  * so it would never be delivered to window decoration.
    752  */
    753 PCUT_TEST(kbd_f10_sysmenu)
    754 {
    755         errno_t rc;
    756         gfx_rect_t rect;
    757         kbd_event_t event;
     409/** ui_wdecor_get_geom() with ui_wds_none produces the correct geometry */
     410PCUT_TEST(get_geom_none)
     411{
    758412        gfx_context_t *gc = NULL;
    759413        test_gc_t tgc;
    760         test_cb_resp_t resp;
    761414        ui_resource_t *resource = NULL;
    762415        ui_wdecor_t *wdecor;
     416        gfx_rect_t rect;
     417        ui_wdecor_geom_t geom;
     418        errno_t rc;
    763419
    764420        memset(&tgc, 0, sizeof(tgc));
     
    770426        PCUT_ASSERT_NOT_NULL(resource);
    771427
    772         rc = ui_wdecor_create(resource, "Hello", ui_wds_decorated, &wdecor);
     428        rc = ui_wdecor_create(resource, "Hello", ui_wds_none, &wdecor);
    773429        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    774430
     
    779435
    780436        ui_wdecor_set_rect(wdecor, &rect);
    781 
    782         ui_wdecor_set_cb(wdecor, &test_wdecor_cb, (void *) &resp);
    783 
    784         resp.sysmenu_open = false;
    785 
    786         event.type = KEY_PRESS;
    787         event.mods = 0;
    788         event.key = KC_F10;
    789         event.kbd_id = 42;
    790         ui_wdecor_kbd_event(wdecor, &event);
    791 
    792         PCUT_ASSERT_TRUE(resp.sysmenu_open);
    793         PCUT_ASSERT_INT_EQUALS(event.kbd_id, resp.idev_id);
     437        ui_wdecor_get_geom(wdecor, &geom);
     438
     439        PCUT_ASSERT_INT_EQUALS(10, geom.interior_rect.p0.x);
     440        PCUT_ASSERT_INT_EQUALS(20, geom.interior_rect.p0.y);
     441        PCUT_ASSERT_INT_EQUALS(100, geom.interior_rect.p1.x);
     442        PCUT_ASSERT_INT_EQUALS(200, geom.interior_rect.p1.y);
     443
     444        PCUT_ASSERT_INT_EQUALS(0, geom.title_bar_rect.p0.x);
     445        PCUT_ASSERT_INT_EQUALS(0, geom.title_bar_rect.p0.y);
     446        PCUT_ASSERT_INT_EQUALS(0, geom.title_bar_rect.p1.x);
     447        PCUT_ASSERT_INT_EQUALS(0, geom.title_bar_rect.p1.y);
     448
     449        PCUT_ASSERT_INT_EQUALS(0, geom.btn_close_rect.p0.x);
     450        PCUT_ASSERT_INT_EQUALS(0, geom.btn_close_rect.p0.y);
     451        PCUT_ASSERT_INT_EQUALS(0, geom.btn_close_rect.p1.x);
     452        PCUT_ASSERT_INT_EQUALS(0, geom.btn_close_rect.p1.y);
     453
     454        PCUT_ASSERT_INT_EQUALS(10, geom.app_area_rect.p0.x);
     455        PCUT_ASSERT_INT_EQUALS(20, geom.app_area_rect.p0.y);
     456        PCUT_ASSERT_INT_EQUALS(100, geom.app_area_rect.p1.x);
     457        PCUT_ASSERT_INT_EQUALS(200, geom.app_area_rect.p1.y);
    794458
    795459        ui_wdecor_destroy(wdecor);
     
    800464}
    801465
    802 /** Down key with active sysmenu handle generates sysmenu open event */
    803 PCUT_TEST(kbd_down_sysmenu)
    804 {
    805         errno_t rc;
    806         gfx_rect_t rect;
    807         kbd_event_t event;
     466/** ui_wdecor_get_geom() with ui_wds_frame produces the correct geometry */
     467PCUT_TEST(get_geom_frame)
     468{
    808469        gfx_context_t *gc = NULL;
    809470        test_gc_t tgc;
    810         test_cb_resp_t resp;
    811471        ui_resource_t *resource = NULL;
    812472        ui_wdecor_t *wdecor;
     473        gfx_rect_t rect;
     474        ui_wdecor_geom_t geom;
     475        errno_t rc;
    813476
    814477        memset(&tgc, 0, sizeof(tgc));
     
    820483        PCUT_ASSERT_NOT_NULL(resource);
    821484
    822         rc = ui_wdecor_create(resource, "Hello", ui_wds_decorated, &wdecor);
     485        rc = ui_wdecor_create(resource, "Hello", ui_wds_frame, &wdecor);
    823486        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    824487
     
    829492
    830493        ui_wdecor_set_rect(wdecor, &rect);
    831 
    832         ui_wdecor_set_cb(wdecor, &test_wdecor_cb, (void *) &resp);
    833 
    834         ui_wdecor_sysmenu_hdl_set_active(wdecor, true);
    835 
    836         resp.sysmenu_open = false;
    837 
    838         event.type = KEY_PRESS;
    839         event.mods = 0;
    840         event.key = KC_DOWN;
    841         event.kbd_id = 42;
    842         ui_wdecor_kbd_event(wdecor, &event);
    843 
    844         PCUT_ASSERT_TRUE(resp.sysmenu_open);
    845         PCUT_ASSERT_INT_EQUALS(event.kbd_id, resp.idev_id);
     494        ui_wdecor_get_geom(wdecor, &geom);
     495
     496        PCUT_ASSERT_INT_EQUALS(14, geom.interior_rect.p0.x);
     497        PCUT_ASSERT_INT_EQUALS(24, geom.interior_rect.p0.y);
     498        PCUT_ASSERT_INT_EQUALS(96, geom.interior_rect.p1.x);
     499        PCUT_ASSERT_INT_EQUALS(196, geom.interior_rect.p1.y);
     500
     501        PCUT_ASSERT_INT_EQUALS(0, geom.title_bar_rect.p0.x);
     502        PCUT_ASSERT_INT_EQUALS(0, geom.title_bar_rect.p0.y);
     503        PCUT_ASSERT_INT_EQUALS(0, geom.title_bar_rect.p1.x);
     504        PCUT_ASSERT_INT_EQUALS(0, geom.title_bar_rect.p1.y);
     505
     506        PCUT_ASSERT_INT_EQUALS(0, geom.btn_close_rect.p0.x);
     507        PCUT_ASSERT_INT_EQUALS(0, geom.btn_close_rect.p0.y);
     508        PCUT_ASSERT_INT_EQUALS(0, geom.btn_close_rect.p1.x);
     509        PCUT_ASSERT_INT_EQUALS(0, geom.btn_close_rect.p1.y);
     510
     511        PCUT_ASSERT_INT_EQUALS(14, geom.app_area_rect.p0.x);
     512        PCUT_ASSERT_INT_EQUALS(24, geom.app_area_rect.p0.y);
     513        PCUT_ASSERT_INT_EQUALS(96, geom.app_area_rect.p1.x);
     514        PCUT_ASSERT_INT_EQUALS(196, geom.app_area_rect.p1.y);
    846515
    847516        ui_wdecor_destroy(wdecor);
     
    852521}
    853522
    854 /** Left key with active sysmenu handle generates sysmenu left event */
    855 PCUT_TEST(kbd_left_sysmenu)
    856 {
    857         errno_t rc;
    858         gfx_rect_t rect;
    859         kbd_event_t event;
     523/** ui_wdecor_get_geom() with ui_wds_frame | ui_wds_titlebar */
     524PCUT_TEST(get_geom_frame_titlebar)
     525{
    860526        gfx_context_t *gc = NULL;
    861527        test_gc_t tgc;
    862         test_cb_resp_t resp;
    863528        ui_resource_t *resource = NULL;
    864529        ui_wdecor_t *wdecor;
     530        gfx_rect_t rect;
     531        ui_wdecor_geom_t geom;
     532        errno_t rc;
    865533
    866534        memset(&tgc, 0, sizeof(tgc));
     
    872540        PCUT_ASSERT_NOT_NULL(resource);
    873541
    874         rc = ui_wdecor_create(resource, "Hello", ui_wds_decorated, &wdecor);
     542        rc = ui_wdecor_create(resource, "Hello", ui_wds_frame | ui_wds_titlebar,
     543            &wdecor);
    875544        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    876545
     
    881550
    882551        ui_wdecor_set_rect(wdecor, &rect);
    883 
    884         ui_wdecor_set_cb(wdecor, &test_wdecor_cb, (void *) &resp);
    885 
    886         ui_wdecor_sysmenu_hdl_set_active(wdecor, true);
    887 
    888         resp.sysmenu_left = false;
    889 
    890         event.type = KEY_PRESS;
    891         event.mods = 0;
    892         event.key = KC_LEFT;
    893         event.kbd_id = 42;
    894         ui_wdecor_kbd_event(wdecor, &event);
    895 
    896         PCUT_ASSERT_TRUE(resp.sysmenu_left);
    897         PCUT_ASSERT_INT_EQUALS(event.kbd_id, resp.idev_id);
     552        ui_wdecor_get_geom(wdecor, &geom);
     553
     554        PCUT_ASSERT_INT_EQUALS(14, geom.interior_rect.p0.x);
     555        PCUT_ASSERT_INT_EQUALS(24, geom.interior_rect.p0.y);
     556        PCUT_ASSERT_INT_EQUALS(96, geom.interior_rect.p1.x);
     557        PCUT_ASSERT_INT_EQUALS(196, geom.interior_rect.p1.y);
     558
     559        PCUT_ASSERT_INT_EQUALS(14, geom.title_bar_rect.p0.x);
     560        PCUT_ASSERT_INT_EQUALS(24, geom.title_bar_rect.p0.y);
     561        PCUT_ASSERT_INT_EQUALS(96, geom.title_bar_rect.p1.x);
     562        PCUT_ASSERT_INT_EQUALS(46, geom.title_bar_rect.p1.y);
     563
     564        PCUT_ASSERT_INT_EQUALS(0, geom.btn_close_rect.p0.x);
     565        PCUT_ASSERT_INT_EQUALS(0, geom.btn_close_rect.p0.y);
     566        PCUT_ASSERT_INT_EQUALS(0, geom.btn_close_rect.p1.x);
     567        PCUT_ASSERT_INT_EQUALS(0, geom.btn_close_rect.p1.y);
     568
     569        PCUT_ASSERT_INT_EQUALS(14, geom.app_area_rect.p0.x);
     570        PCUT_ASSERT_INT_EQUALS(46, geom.app_area_rect.p0.y);
     571        PCUT_ASSERT_INT_EQUALS(96, geom.app_area_rect.p1.x);
     572        PCUT_ASSERT_INT_EQUALS(196, geom.app_area_rect.p1.y);
    898573
    899574        ui_wdecor_destroy(wdecor);
     
    904579}
    905580
    906 /** Right key with active sysmenu handle generates sysmenu right event */
    907 PCUT_TEST(kbd_right_sysmenu)
    908 {
    909         errno_t rc;
    910         gfx_rect_t rect;
    911         kbd_event_t event;
     581/** ui_wdecor_get_geom() with ui_wds_decorated produces the correct geometry */
     582PCUT_TEST(get_geom_decorated)
     583{
    912584        gfx_context_t *gc = NULL;
    913585        test_gc_t tgc;
    914         test_cb_resp_t resp;
    915586        ui_resource_t *resource = NULL;
    916587        ui_wdecor_t *wdecor;
     588        gfx_rect_t rect;
     589        ui_wdecor_geom_t geom;
     590        errno_t rc;
    917591
    918592        memset(&tgc, 0, sizeof(tgc));
     
    933607
    934608        ui_wdecor_set_rect(wdecor, &rect);
    935 
    936         ui_wdecor_set_cb(wdecor, &test_wdecor_cb, (void *) &resp);
    937 
    938         ui_wdecor_sysmenu_hdl_set_active(wdecor, true);
    939 
    940         resp.sysmenu_right = false;
    941 
    942         event.type = KEY_PRESS;
    943         event.mods = 0;
    944         event.key = KC_RIGHT;
    945         event.kbd_id = 42;
    946         ui_wdecor_kbd_event(wdecor, &event);
    947 
    948         PCUT_ASSERT_TRUE(resp.sysmenu_right);
    949         PCUT_ASSERT_INT_EQUALS(event.kbd_id, resp.idev_id);
     609        ui_wdecor_get_geom(wdecor, &geom);
     610
     611        PCUT_ASSERT_INT_EQUALS(14, geom.interior_rect.p0.x);
     612        PCUT_ASSERT_INT_EQUALS(24, geom.interior_rect.p0.y);
     613        PCUT_ASSERT_INT_EQUALS(96, geom.interior_rect.p1.x);
     614        PCUT_ASSERT_INT_EQUALS(196, geom.interior_rect.p1.y);
     615
     616        PCUT_ASSERT_INT_EQUALS(14, geom.title_bar_rect.p0.x);
     617        PCUT_ASSERT_INT_EQUALS(24, geom.title_bar_rect.p0.y);
     618        PCUT_ASSERT_INT_EQUALS(96, geom.title_bar_rect.p1.x);
     619        PCUT_ASSERT_INT_EQUALS(46, geom.title_bar_rect.p1.y);
     620
     621        PCUT_ASSERT_INT_EQUALS(75, geom.btn_close_rect.p0.x);
     622        PCUT_ASSERT_INT_EQUALS(25, geom.btn_close_rect.p0.y);
     623        PCUT_ASSERT_INT_EQUALS(95, geom.btn_close_rect.p1.x);
     624        PCUT_ASSERT_INT_EQUALS(45, geom.btn_close_rect.p1.y);
     625
     626        PCUT_ASSERT_INT_EQUALS(14, geom.app_area_rect.p0.x);
     627        PCUT_ASSERT_INT_EQUALS(46, geom.app_area_rect.p0.y);
     628        PCUT_ASSERT_INT_EQUALS(96, geom.app_area_rect.p1.x);
     629        PCUT_ASSERT_INT_EQUALS(196, geom.app_area_rect.p1.y);
    950630
    951631        ui_wdecor_destroy(wdecor);
     
    956636}
    957637
    958 /** Character key with active sysmenu handle generates sysmenu accel event */
    959 PCUT_TEST(kbd_accel_sysmenu)
    960 {
    961         errno_t rc;
     638/** ui_wdecor_rect_from_app() correctly converts application to window rect */
     639PCUT_TEST(rect_from_app)
     640{
     641        gfx_rect_t arect;
    962642        gfx_rect_t rect;
    963         kbd_event_t event;
    964         gfx_context_t *gc = NULL;
    965         test_gc_t tgc;
    966         test_cb_resp_t resp;
    967         ui_resource_t *resource = NULL;
    968         ui_wdecor_t *wdecor;
    969 
    970         memset(&tgc, 0, sizeof(tgc));
    971         rc = gfx_context_new(&ops, &tgc, &gc);
    972         PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    973 
    974         rc = ui_resource_create(gc, false, &resource);
    975         PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    976         PCUT_ASSERT_NOT_NULL(resource);
    977 
    978         rc = ui_wdecor_create(resource, "Hello", ui_wds_decorated, &wdecor);
     643
     644        arect.p0.x = 14;
     645        arect.p0.y = 46;
     646        arect.p1.x = 96;
     647        arect.p1.y = 196;
     648
     649        ui_wdecor_rect_from_app(ui_wds_none, &arect, &rect);
     650
     651        PCUT_ASSERT_INT_EQUALS(14, rect.p0.x);
     652        PCUT_ASSERT_INT_EQUALS(46, rect.p0.y);
     653        PCUT_ASSERT_INT_EQUALS(96, rect.p1.x);
     654        PCUT_ASSERT_INT_EQUALS(196, rect.p1.y);
     655
     656        ui_wdecor_rect_from_app(ui_wds_frame, &arect, &rect);
     657
     658        PCUT_ASSERT_INT_EQUALS(10, rect.p0.x);
     659        PCUT_ASSERT_INT_EQUALS(42, rect.p0.y);
     660        PCUT_ASSERT_INT_EQUALS(100, rect.p1.x);
     661        PCUT_ASSERT_INT_EQUALS(200, rect.p1.y);
     662
     663        ui_wdecor_rect_from_app(ui_wds_decorated, &arect, &rect);
     664
     665        PCUT_ASSERT_INT_EQUALS(10, rect.p0.x);
     666        PCUT_ASSERT_INT_EQUALS(20, rect.p0.y);
     667        PCUT_ASSERT_INT_EQUALS(100, rect.p1.x);
     668        PCUT_ASSERT_INT_EQUALS(200, rect.p1.y);
     669
     670}
     671
     672/** Test ui_wdecor_get_rsztype() */
     673PCUT_TEST(get_rsztype)
     674{
     675        ui_wdecor_t *wdecor;
     676        gfx_rect_t rect;
     677        ui_wdecor_rsztype_t rsztype;
     678        gfx_coord2_t pos;
     679        errno_t rc;
     680
     681        rc = ui_wdecor_create(NULL, "Hello", ui_wds_resizable, &wdecor);
    979682        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    980683
     
    986689        ui_wdecor_set_rect(wdecor, &rect);
    987690
    988         ui_wdecor_set_cb(wdecor, &test_wdecor_cb, (void *) &resp);
    989 
    990         ui_wdecor_sysmenu_hdl_set_active(wdecor, true);
    991 
    992         resp.sysmenu_accel = false;
    993 
    994         event.type = KEY_PRESS;
    995         event.mods = 0;
    996         event.key = KC_A;
    997         event.c = 'a';
    998         event.kbd_id = 42;
    999         ui_wdecor_kbd_event(wdecor, &event);
    1000 
    1001         PCUT_ASSERT_TRUE(resp.sysmenu_accel);
    1002         PCUT_ASSERT_INT_EQUALS(event.c, resp.accel);
    1003         PCUT_ASSERT_INT_EQUALS(event.kbd_id, resp.idev_id);
    1004 
    1005         ui_wdecor_destroy(wdecor);
    1006         ui_resource_destroy(resource);
    1007 
    1008         rc = gfx_context_delete(gc);
    1009         PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    1010 }
    1011 
    1012 /** ui_wdecor_get_geom() with ui_wds_none produces the correct geometry */
    1013 PCUT_TEST(get_geom_none)
    1014 {
    1015         gfx_context_t *gc = NULL;
    1016         test_gc_t tgc;
    1017         ui_resource_t *resource = NULL;
    1018         ui_wdecor_t *wdecor;
    1019         gfx_rect_t rect;
    1020         ui_wdecor_geom_t geom;
    1021         errno_t rc;
    1022 
    1023         memset(&tgc, 0, sizeof(tgc));
    1024         rc = gfx_context_new(&ops, &tgc, &gc);
    1025         PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    1026 
    1027         rc = ui_resource_create(gc, false, &resource);
    1028         PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    1029         PCUT_ASSERT_NOT_NULL(resource);
    1030 
    1031         rc = ui_wdecor_create(resource, "Hello", ui_wds_none, &wdecor);
     691        /* Outside of the window */
     692        pos.x = 0;
     693        pos.y = -1;
     694        rsztype = ui_wdecor_get_rsztype(wdecor, &pos);
     695        PCUT_ASSERT_EQUALS(ui_wr_none, rsztype);
     696
     697        /* Middle of the window */
     698        pos.x = 50;
     699        pos.y = 100;
     700        rsztype = ui_wdecor_get_rsztype(wdecor, &pos);
     701        PCUT_ASSERT_EQUALS(ui_wr_none, rsztype);
     702
     703        /* Top-left corner, but not on edge */
     704        pos.x = 20;
     705        pos.y = 30;
     706        rsztype = ui_wdecor_get_rsztype(wdecor, &pos);
     707        PCUT_ASSERT_EQUALS(ui_wr_none, rsztype);
     708
     709        /* Top-left corner on top edge */
     710        pos.x = 20;
     711        pos.y = 20;
     712        rsztype = ui_wdecor_get_rsztype(wdecor, &pos);
     713        PCUT_ASSERT_EQUALS(ui_wr_top_left, rsztype);
     714
     715        /* Top-left corner on left edge */
     716        pos.x = 10;
     717        pos.y = 30;
     718        rsztype = ui_wdecor_get_rsztype(wdecor, &pos);
     719        PCUT_ASSERT_EQUALS(ui_wr_top_left, rsztype);
     720
     721        /* Top-right corner on top edge */
     722        pos.x = 90;
     723        pos.y = 20;
     724        rsztype = ui_wdecor_get_rsztype(wdecor, &pos);
     725        PCUT_ASSERT_EQUALS(ui_wr_top_right, rsztype);
     726
     727        /* Top-right corner on right edge */
     728        pos.x = 99;
     729        pos.y = 30;
     730        rsztype = ui_wdecor_get_rsztype(wdecor, &pos);
     731        PCUT_ASSERT_EQUALS(ui_wr_top_right, rsztype);
     732
     733        /* Top edge */
     734        pos.x = 50;
     735        pos.y = 20;
     736        rsztype = ui_wdecor_get_rsztype(wdecor, &pos);
     737        PCUT_ASSERT_EQUALS(ui_wr_top, rsztype);
     738
     739        /* Bottom edge */
     740        pos.x = 50;
     741        pos.y = 199;
     742        rsztype = ui_wdecor_get_rsztype(wdecor, &pos);
     743        PCUT_ASSERT_EQUALS(ui_wr_bottom, rsztype);
     744
     745        /* Left edge */
     746        pos.x = 10;
     747        pos.y = 100;
     748        rsztype = ui_wdecor_get_rsztype(wdecor, &pos);
     749        PCUT_ASSERT_EQUALS(ui_wr_left, rsztype);
     750
     751        /* Right edge */
     752        pos.x = 99;
     753        pos.y = 100;
     754        rsztype = ui_wdecor_get_rsztype(wdecor, &pos);
     755        PCUT_ASSERT_EQUALS(ui_wr_right, rsztype);
     756
     757        ui_wdecor_destroy(wdecor);
     758
     759        /* Non-resizable window */
     760
     761        rc = ui_wdecor_create(NULL, "Hello", ui_wds_none, &wdecor);
    1032762        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    1033763
     
    1038768
    1039769        ui_wdecor_set_rect(wdecor, &rect);
    1040         ui_wdecor_get_geom(wdecor, &geom);
    1041 
    1042         PCUT_ASSERT_INT_EQUALS(10, geom.interior_rect.p0.x);
    1043         PCUT_ASSERT_INT_EQUALS(20, geom.interior_rect.p0.y);
    1044         PCUT_ASSERT_INT_EQUALS(100, geom.interior_rect.p1.x);
    1045         PCUT_ASSERT_INT_EQUALS(200, geom.interior_rect.p1.y);
    1046 
    1047         PCUT_ASSERT_INT_EQUALS(0, geom.title_bar_rect.p0.x);
    1048         PCUT_ASSERT_INT_EQUALS(0, geom.title_bar_rect.p0.y);
    1049         PCUT_ASSERT_INT_EQUALS(0, geom.title_bar_rect.p1.x);
    1050         PCUT_ASSERT_INT_EQUALS(0, geom.title_bar_rect.p1.y);
    1051 
    1052         PCUT_ASSERT_INT_EQUALS(0, geom.sysmenu_hdl_rect.p0.x);
    1053         PCUT_ASSERT_INT_EQUALS(0, geom.sysmenu_hdl_rect.p0.y);
    1054         PCUT_ASSERT_INT_EQUALS(0, geom.sysmenu_hdl_rect.p1.x);
    1055         PCUT_ASSERT_INT_EQUALS(0, geom.sysmenu_hdl_rect.p1.y);
    1056 
    1057         PCUT_ASSERT_INT_EQUALS(0, geom.caption_rect.p0.x);
    1058         PCUT_ASSERT_INT_EQUALS(0, geom.caption_rect.p0.y);
    1059         PCUT_ASSERT_INT_EQUALS(0, geom.caption_rect.p1.x);
    1060         PCUT_ASSERT_INT_EQUALS(0, geom.caption_rect.p1.y);
    1061 
    1062         PCUT_ASSERT_INT_EQUALS(0, geom.btn_min_rect.p0.x);
    1063         PCUT_ASSERT_INT_EQUALS(0, geom.btn_min_rect.p0.y);
    1064         PCUT_ASSERT_INT_EQUALS(0, geom.btn_min_rect.p1.x);
    1065         PCUT_ASSERT_INT_EQUALS(0, geom.btn_min_rect.p1.y);
    1066 
    1067         PCUT_ASSERT_INT_EQUALS(0, geom.btn_max_rect.p0.x);
    1068         PCUT_ASSERT_INT_EQUALS(0, geom.btn_max_rect.p0.y);
    1069         PCUT_ASSERT_INT_EQUALS(0, geom.btn_max_rect.p1.x);
    1070         PCUT_ASSERT_INT_EQUALS(0, geom.btn_max_rect.p1.y);
    1071 
    1072         PCUT_ASSERT_INT_EQUALS(0, geom.btn_close_rect.p0.x);
    1073         PCUT_ASSERT_INT_EQUALS(0, geom.btn_close_rect.p0.y);
    1074         PCUT_ASSERT_INT_EQUALS(0, geom.btn_close_rect.p1.x);
    1075         PCUT_ASSERT_INT_EQUALS(0, geom.btn_close_rect.p1.y);
    1076 
    1077         PCUT_ASSERT_INT_EQUALS(10, geom.app_area_rect.p0.x);
    1078         PCUT_ASSERT_INT_EQUALS(20, geom.app_area_rect.p0.y);
    1079         PCUT_ASSERT_INT_EQUALS(100, geom.app_area_rect.p1.x);
    1080         PCUT_ASSERT_INT_EQUALS(200, geom.app_area_rect.p1.y);
    1081 
    1082         ui_wdecor_destroy(wdecor);
    1083         ui_resource_destroy(resource);
    1084 
    1085         rc = gfx_context_delete(gc);
    1086         PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    1087 }
    1088 
    1089 /** ui_wdecor_get_geom() with ui_wds_frame produces the correct geometry */
    1090 PCUT_TEST(get_geom_frame)
    1091 {
    1092         gfx_context_t *gc = NULL;
    1093         test_gc_t tgc;
    1094         ui_resource_t *resource = NULL;
    1095         ui_wdecor_t *wdecor;
    1096         gfx_rect_t rect;
    1097         ui_wdecor_geom_t geom;
    1098         errno_t rc;
    1099 
    1100         memset(&tgc, 0, sizeof(tgc));
    1101         rc = gfx_context_new(&ops, &tgc, &gc);
    1102         PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    1103 
    1104         rc = ui_resource_create(gc, false, &resource);
    1105         PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    1106         PCUT_ASSERT_NOT_NULL(resource);
    1107 
    1108         rc = ui_wdecor_create(resource, "Hello", ui_wds_frame, &wdecor);
    1109         PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    1110 
    1111         rect.p0.x = 10;
    1112         rect.p0.y = 20;
    1113         rect.p1.x = 100;
    1114         rect.p1.y = 200;
    1115 
    1116         ui_wdecor_set_rect(wdecor, &rect);
    1117         ui_wdecor_get_geom(wdecor, &geom);
    1118 
    1119         PCUT_ASSERT_INT_EQUALS(14, geom.interior_rect.p0.x);
    1120         PCUT_ASSERT_INT_EQUALS(24, geom.interior_rect.p0.y);
    1121         PCUT_ASSERT_INT_EQUALS(96, geom.interior_rect.p1.x);
    1122         PCUT_ASSERT_INT_EQUALS(196, geom.interior_rect.p1.y);
    1123 
    1124         PCUT_ASSERT_INT_EQUALS(0, geom.title_bar_rect.p0.x);
    1125         PCUT_ASSERT_INT_EQUALS(0, geom.title_bar_rect.p0.y);
    1126         PCUT_ASSERT_INT_EQUALS(0, geom.title_bar_rect.p1.x);
    1127         PCUT_ASSERT_INT_EQUALS(0, geom.title_bar_rect.p1.y);
    1128 
    1129         PCUT_ASSERT_INT_EQUALS(0, geom.sysmenu_hdl_rect.p0.x);
    1130         PCUT_ASSERT_INT_EQUALS(0, geom.sysmenu_hdl_rect.p0.y);
    1131         PCUT_ASSERT_INT_EQUALS(0, geom.sysmenu_hdl_rect.p1.x);
    1132         PCUT_ASSERT_INT_EQUALS(0, geom.sysmenu_hdl_rect.p1.y);
    1133 
    1134         PCUT_ASSERT_INT_EQUALS(0, geom.caption_rect.p0.x);
    1135         PCUT_ASSERT_INT_EQUALS(0, geom.caption_rect.p0.y);
    1136         PCUT_ASSERT_INT_EQUALS(0, geom.caption_rect.p1.x);
    1137         PCUT_ASSERT_INT_EQUALS(0, geom.caption_rect.p1.y);
    1138 
    1139         PCUT_ASSERT_INT_EQUALS(0, geom.btn_min_rect.p0.x);
    1140         PCUT_ASSERT_INT_EQUALS(0, geom.btn_min_rect.p0.y);
    1141         PCUT_ASSERT_INT_EQUALS(0, geom.btn_min_rect.p1.x);
    1142         PCUT_ASSERT_INT_EQUALS(0, geom.btn_min_rect.p1.y);
    1143 
    1144         PCUT_ASSERT_INT_EQUALS(0, geom.btn_max_rect.p0.x);
    1145         PCUT_ASSERT_INT_EQUALS(0, geom.btn_max_rect.p0.y);
    1146         PCUT_ASSERT_INT_EQUALS(0, geom.btn_max_rect.p1.x);
    1147         PCUT_ASSERT_INT_EQUALS(0, geom.btn_max_rect.p1.y);
    1148 
    1149         PCUT_ASSERT_INT_EQUALS(0, geom.btn_close_rect.p0.x);
    1150         PCUT_ASSERT_INT_EQUALS(0, geom.btn_close_rect.p0.y);
    1151         PCUT_ASSERT_INT_EQUALS(0, geom.btn_close_rect.p1.x);
    1152         PCUT_ASSERT_INT_EQUALS(0, geom.btn_close_rect.p1.y);
    1153 
    1154         PCUT_ASSERT_INT_EQUALS(14, geom.app_area_rect.p0.x);
    1155         PCUT_ASSERT_INT_EQUALS(24, geom.app_area_rect.p0.y);
    1156         PCUT_ASSERT_INT_EQUALS(96, geom.app_area_rect.p1.x);
    1157         PCUT_ASSERT_INT_EQUALS(196, geom.app_area_rect.p1.y);
    1158 
    1159         ui_wdecor_destroy(wdecor);
    1160         ui_resource_destroy(resource);
    1161 
    1162         rc = gfx_context_delete(gc);
    1163         PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    1164 }
    1165 
    1166 /** ui_wdecor_get_geom() with ui_wds_frame | ui_wds_titlebar */
    1167 PCUT_TEST(get_geom_frame_titlebar)
    1168 {
    1169         gfx_context_t *gc = NULL;
    1170         test_gc_t tgc;
    1171         ui_resource_t *resource = NULL;
    1172         ui_wdecor_t *wdecor;
    1173         gfx_rect_t rect;
    1174         ui_wdecor_geom_t geom;
    1175         errno_t rc;
    1176 
    1177         memset(&tgc, 0, sizeof(tgc));
    1178         rc = gfx_context_new(&ops, &tgc, &gc);
    1179         PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    1180 
    1181         rc = ui_resource_create(gc, false, &resource);
    1182         PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    1183         PCUT_ASSERT_NOT_NULL(resource);
    1184 
    1185         rc = ui_wdecor_create(resource, "Hello", ui_wds_frame | ui_wds_titlebar,
    1186             &wdecor);
    1187         PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    1188 
    1189         rect.p0.x = 10;
    1190         rect.p0.y = 20;
    1191         rect.p1.x = 100;
    1192         rect.p1.y = 200;
    1193 
    1194         ui_wdecor_set_rect(wdecor, &rect);
    1195         ui_wdecor_get_geom(wdecor, &geom);
    1196 
    1197         PCUT_ASSERT_INT_EQUALS(14, geom.interior_rect.p0.x);
    1198         PCUT_ASSERT_INT_EQUALS(24, geom.interior_rect.p0.y);
    1199         PCUT_ASSERT_INT_EQUALS(96, geom.interior_rect.p1.x);
    1200         PCUT_ASSERT_INT_EQUALS(196, geom.interior_rect.p1.y);
    1201 
    1202         PCUT_ASSERT_INT_EQUALS(14, geom.title_bar_rect.p0.x);
    1203         PCUT_ASSERT_INT_EQUALS(24, geom.title_bar_rect.p0.y);
    1204         PCUT_ASSERT_INT_EQUALS(96, geom.title_bar_rect.p1.x);
    1205         PCUT_ASSERT_INT_EQUALS(46, geom.title_bar_rect.p1.y);
    1206 
    1207         PCUT_ASSERT_INT_EQUALS(0, geom.sysmenu_hdl_rect.p0.x);
    1208         PCUT_ASSERT_INT_EQUALS(0, geom.sysmenu_hdl_rect.p0.y);
    1209         PCUT_ASSERT_INT_EQUALS(0, geom.sysmenu_hdl_rect.p1.x);
    1210         PCUT_ASSERT_INT_EQUALS(0, geom.sysmenu_hdl_rect.p1.y);
    1211 
    1212         PCUT_ASSERT_INT_EQUALS(18, geom.caption_rect.p0.x);
    1213         PCUT_ASSERT_INT_EQUALS(24, geom.caption_rect.p0.y);
    1214         PCUT_ASSERT_INT_EQUALS(91, geom.caption_rect.p1.x);
    1215         PCUT_ASSERT_INT_EQUALS(46, geom.caption_rect.p1.y);
    1216 
    1217         PCUT_ASSERT_INT_EQUALS(0, geom.btn_min_rect.p0.x);
    1218         PCUT_ASSERT_INT_EQUALS(0, geom.btn_min_rect.p0.y);
    1219         PCUT_ASSERT_INT_EQUALS(0, geom.btn_min_rect.p1.x);
    1220         PCUT_ASSERT_INT_EQUALS(0, geom.btn_min_rect.p1.y);
    1221 
    1222         PCUT_ASSERT_INT_EQUALS(0, geom.btn_max_rect.p0.x);
    1223         PCUT_ASSERT_INT_EQUALS(0, geom.btn_max_rect.p0.y);
    1224         PCUT_ASSERT_INT_EQUALS(0, geom.btn_max_rect.p1.x);
    1225         PCUT_ASSERT_INT_EQUALS(0, geom.btn_max_rect.p1.y);
    1226 
    1227         PCUT_ASSERT_INT_EQUALS(0, geom.btn_close_rect.p0.x);
    1228         PCUT_ASSERT_INT_EQUALS(0, geom.btn_close_rect.p0.y);
    1229         PCUT_ASSERT_INT_EQUALS(0, geom.btn_close_rect.p1.x);
    1230         PCUT_ASSERT_INT_EQUALS(0, geom.btn_close_rect.p1.y);
    1231 
    1232         PCUT_ASSERT_INT_EQUALS(14, geom.app_area_rect.p0.x);
    1233         PCUT_ASSERT_INT_EQUALS(46, geom.app_area_rect.p0.y);
    1234         PCUT_ASSERT_INT_EQUALS(96, geom.app_area_rect.p1.x);
    1235         PCUT_ASSERT_INT_EQUALS(196, geom.app_area_rect.p1.y);
    1236 
    1237         ui_wdecor_destroy(wdecor);
    1238         ui_resource_destroy(resource);
    1239 
    1240         rc = gfx_context_delete(gc);
    1241         PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    1242 }
    1243 
    1244 /** ui_wdecor_get_geom() with ui_wds_decorated produces the correct geometry */
    1245 PCUT_TEST(get_geom_decorated)
    1246 {
    1247         gfx_context_t *gc = NULL;
    1248         test_gc_t tgc;
    1249         ui_resource_t *resource = NULL;
    1250         ui_wdecor_t *wdecor;
    1251         gfx_rect_t rect;
    1252         ui_wdecor_geom_t geom;
    1253         errno_t rc;
    1254 
    1255         memset(&tgc, 0, sizeof(tgc));
    1256         rc = gfx_context_new(&ops, &tgc, &gc);
    1257         PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    1258 
    1259         rc = ui_resource_create(gc, false, &resource);
    1260         PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    1261         PCUT_ASSERT_NOT_NULL(resource);
    1262 
    1263         rc = ui_wdecor_create(resource, "Hello", ui_wds_decorated, &wdecor);
    1264         PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    1265 
    1266         rect.p0.x = 10;
    1267         rect.p0.y = 20;
    1268         rect.p1.x = 100;
    1269         rect.p1.y = 200;
    1270 
    1271         ui_wdecor_set_rect(wdecor, &rect);
    1272         ui_wdecor_get_geom(wdecor, &geom);
    1273 
    1274         PCUT_ASSERT_INT_EQUALS(14, geom.interior_rect.p0.x);
    1275         PCUT_ASSERT_INT_EQUALS(24, geom.interior_rect.p0.y);
    1276         PCUT_ASSERT_INT_EQUALS(96, geom.interior_rect.p1.x);
    1277         PCUT_ASSERT_INT_EQUALS(196, geom.interior_rect.p1.y);
    1278 
    1279         PCUT_ASSERT_INT_EQUALS(14, geom.title_bar_rect.p0.x);
    1280         PCUT_ASSERT_INT_EQUALS(24, geom.title_bar_rect.p0.y);
    1281         PCUT_ASSERT_INT_EQUALS(96, geom.title_bar_rect.p1.x);
    1282         PCUT_ASSERT_INT_EQUALS(46, geom.title_bar_rect.p1.y);
    1283 
    1284         PCUT_ASSERT_INT_EQUALS(15, geom.sysmenu_hdl_rect.p0.x);
    1285         PCUT_ASSERT_INT_EQUALS(25, geom.sysmenu_hdl_rect.p0.y);
    1286         PCUT_ASSERT_INT_EQUALS(35, geom.sysmenu_hdl_rect.p1.x);
    1287         PCUT_ASSERT_INT_EQUALS(45, geom.sysmenu_hdl_rect.p1.y);
    1288 
    1289         PCUT_ASSERT_INT_EQUALS(38, geom.caption_rect.p0.x);
    1290         PCUT_ASSERT_INT_EQUALS(24, geom.caption_rect.p0.y);
    1291         PCUT_ASSERT_INT_EQUALS(51, geom.caption_rect.p1.x);
    1292         PCUT_ASSERT_INT_EQUALS(46, geom.caption_rect.p1.y);
    1293 
    1294         PCUT_ASSERT_INT_EQUALS(55, geom.btn_min_rect.p0.x);
    1295         PCUT_ASSERT_INT_EQUALS(25, geom.btn_min_rect.p0.y);
    1296         PCUT_ASSERT_INT_EQUALS(75, geom.btn_min_rect.p1.x);
    1297         PCUT_ASSERT_INT_EQUALS(45, geom.btn_min_rect.p1.y);
    1298 
    1299         /* Maximize button is not in ui_wds_decorated */
    1300         PCUT_ASSERT_INT_EQUALS(0, geom.btn_max_rect.p0.x);
    1301         PCUT_ASSERT_INT_EQUALS(0, geom.btn_max_rect.p0.y);
    1302         PCUT_ASSERT_INT_EQUALS(0, geom.btn_max_rect.p1.x);
    1303         PCUT_ASSERT_INT_EQUALS(0, geom.btn_max_rect.p1.y);
    1304 
    1305         PCUT_ASSERT_INT_EQUALS(75, geom.btn_close_rect.p0.x);
    1306         PCUT_ASSERT_INT_EQUALS(25, geom.btn_close_rect.p0.y);
    1307         PCUT_ASSERT_INT_EQUALS(95, geom.btn_close_rect.p1.x);
    1308         PCUT_ASSERT_INT_EQUALS(45, geom.btn_close_rect.p1.y);
    1309 
    1310         PCUT_ASSERT_INT_EQUALS(14, geom.app_area_rect.p0.x);
    1311         PCUT_ASSERT_INT_EQUALS(46, geom.app_area_rect.p0.y);
    1312         PCUT_ASSERT_INT_EQUALS(96, geom.app_area_rect.p1.x);
    1313         PCUT_ASSERT_INT_EQUALS(196, geom.app_area_rect.p1.y);
    1314 
    1315         ui_wdecor_destroy(wdecor);
    1316         ui_resource_destroy(resource);
    1317 
    1318         rc = gfx_context_delete(gc);
    1319         PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    1320 }
    1321 
    1322 /** ui_wdecor_rect_from_app() correctly converts application to window rect */
    1323 PCUT_TEST(rect_from_app)
    1324 {
    1325         errno_t rc;
    1326         ui_t *ui = NULL;
    1327         gfx_rect_t arect;
    1328         gfx_rect_t rect;
    1329 
    1330         rc = ui_create_disp(NULL, &ui);
    1331         PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    1332 
    1333         arect.p0.x = 14;
    1334         arect.p0.y = 46;
    1335         arect.p1.x = 96;
    1336         arect.p1.y = 196;
    1337 
    1338         ui_wdecor_rect_from_app(ui, ui_wds_none, &arect, &rect);
    1339 
    1340         PCUT_ASSERT_INT_EQUALS(14, rect.p0.x);
    1341         PCUT_ASSERT_INT_EQUALS(46, rect.p0.y);
    1342         PCUT_ASSERT_INT_EQUALS(96, rect.p1.x);
    1343         PCUT_ASSERT_INT_EQUALS(196, rect.p1.y);
    1344 
    1345         ui_wdecor_rect_from_app(ui, ui_wds_frame, &arect, &rect);
    1346 
    1347         PCUT_ASSERT_INT_EQUALS(10, rect.p0.x);
    1348         PCUT_ASSERT_INT_EQUALS(42, rect.p0.y);
    1349         PCUT_ASSERT_INT_EQUALS(100, rect.p1.x);
    1350         PCUT_ASSERT_INT_EQUALS(200, rect.p1.y);
    1351 
    1352         ui_wdecor_rect_from_app(ui, ui_wds_decorated, &arect, &rect);
    1353 
    1354         PCUT_ASSERT_INT_EQUALS(10, rect.p0.x);
    1355         PCUT_ASSERT_INT_EQUALS(20, rect.p0.y);
    1356         PCUT_ASSERT_INT_EQUALS(100, rect.p1.x);
    1357         PCUT_ASSERT_INT_EQUALS(200, rect.p1.y);
    1358 
    1359         ui_destroy(ui);
    1360 }
    1361 
    1362 /** Test ui_wdecor_get_rsztype() */
    1363 PCUT_TEST(get_rsztype)
    1364 {
    1365         gfx_context_t *gc = NULL;
    1366         test_gc_t tgc;
    1367         ui_resource_t *resource = NULL;
    1368         ui_wdecor_t *wdecor;
    1369         gfx_rect_t rect;
    1370         ui_wdecor_rsztype_t rsztype;
    1371         gfx_coord2_t pos;
    1372         errno_t rc;
    1373 
    1374         memset(&tgc, 0, sizeof(tgc));
    1375         rc = gfx_context_new(&ops, &tgc, &gc);
    1376         PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    1377 
    1378         rc = ui_resource_create(gc, false, &resource);
    1379         PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    1380         PCUT_ASSERT_NOT_NULL(resource);
    1381 
    1382         rc = ui_wdecor_create(resource, "Hello", ui_wds_resizable, &wdecor);
    1383         PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    1384 
    1385         rect.p0.x = 10;
    1386         rect.p0.y = 20;
    1387         rect.p1.x = 100;
    1388         rect.p1.y = 200;
    1389 
    1390         ui_wdecor_set_rect(wdecor, &rect);
    1391 
    1392         /* Outside of the window */
    1393         pos.x = 0;
    1394         pos.y = -1;
    1395         rsztype = ui_wdecor_get_rsztype(wdecor, &pos);
    1396         PCUT_ASSERT_EQUALS(ui_wr_none, rsztype);
    1397 
    1398         /* Middle of the window */
    1399         pos.x = 50;
    1400         pos.y = 100;
    1401         rsztype = ui_wdecor_get_rsztype(wdecor, &pos);
    1402         PCUT_ASSERT_EQUALS(ui_wr_none, rsztype);
    1403 
    1404         /* Top-left corner, but not on edge */
    1405         pos.x = 20;
    1406         pos.y = 30;
    1407         rsztype = ui_wdecor_get_rsztype(wdecor, &pos);
    1408         PCUT_ASSERT_EQUALS(ui_wr_none, rsztype);
    1409 
    1410         /* Top-left corner on top edge */
    1411         pos.x = 20;
    1412         pos.y = 20;
    1413         rsztype = ui_wdecor_get_rsztype(wdecor, &pos);
    1414         PCUT_ASSERT_EQUALS(ui_wr_top_left, rsztype);
    1415 
    1416         /* Top-left corner on left edge */
    1417         pos.x = 10;
    1418         pos.y = 30;
    1419         rsztype = ui_wdecor_get_rsztype(wdecor, &pos);
    1420         PCUT_ASSERT_EQUALS(ui_wr_top_left, rsztype);
    1421 
    1422         /* Top-right corner on top edge */
    1423         pos.x = 90;
    1424         pos.y = 20;
    1425         rsztype = ui_wdecor_get_rsztype(wdecor, &pos);
    1426         PCUT_ASSERT_EQUALS(ui_wr_top_right, rsztype);
    1427 
    1428         /* Top-right corner on right edge */
    1429         pos.x = 99;
    1430         pos.y = 30;
    1431         rsztype = ui_wdecor_get_rsztype(wdecor, &pos);
    1432         PCUT_ASSERT_EQUALS(ui_wr_top_right, rsztype);
    1433 
    1434         /* Top edge */
    1435         pos.x = 50;
    1436         pos.y = 20;
    1437         rsztype = ui_wdecor_get_rsztype(wdecor, &pos);
    1438         PCUT_ASSERT_EQUALS(ui_wr_top, rsztype);
    1439 
    1440         /* Bottom edge */
    1441         pos.x = 50;
    1442         pos.y = 199;
    1443         rsztype = ui_wdecor_get_rsztype(wdecor, &pos);
    1444         PCUT_ASSERT_EQUALS(ui_wr_bottom, rsztype);
    1445 
    1446         /* Left edge */
    1447         pos.x = 10;
    1448         pos.y = 100;
    1449         rsztype = ui_wdecor_get_rsztype(wdecor, &pos);
    1450         PCUT_ASSERT_EQUALS(ui_wr_left, rsztype);
    1451 
    1452         /* Right edge */
    1453         pos.x = 99;
    1454         pos.y = 100;
    1455         rsztype = ui_wdecor_get_rsztype(wdecor, &pos);
    1456         PCUT_ASSERT_EQUALS(ui_wr_right, rsztype);
    1457 
    1458         ui_wdecor_destroy(wdecor);
    1459 
    1460         /* Non-resizable window */
    1461 
    1462         rc = ui_wdecor_create(resource, "Hello", ui_wds_none, &wdecor);
    1463         PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    1464 
    1465         rect.p0.x = 10;
    1466         rect.p0.y = 20;
    1467         rect.p1.x = 100;
    1468         rect.p1.y = 200;
    1469 
    1470         ui_wdecor_set_rect(wdecor, &rect);
    1471770
    1472771        pos.x = 10;
     
    1476775
    1477776        ui_wdecor_destroy(wdecor);
    1478         ui_resource_destroy(resource);
    1479 
    1480         rc = gfx_context_delete(gc);
    1481         PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    1482777}
    1483778
     
    1508803PCUT_TEST(frame_pos_event)
    1509804{
    1510         gfx_context_t *gc = NULL;
    1511         test_gc_t tgc;
    1512         ui_resource_t *resource = NULL;
    1513805        ui_wdecor_t *wdecor;
    1514806        gfx_rect_t rect;
     
    1517809        errno_t rc;
    1518810
    1519         memset(&tgc, 0, sizeof(tgc));
    1520         rc = gfx_context_new(&ops, &tgc, &gc);
    1521         PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    1522 
    1523         rc = ui_resource_create(gc, false, &resource);
    1524         PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    1525         PCUT_ASSERT_NOT_NULL(resource);
    1526 
    1527         rc = ui_wdecor_create(resource, "Hello", ui_wds_resizable, &wdecor);
     811        rc = ui_wdecor_create(NULL, "Hello", ui_wds_resizable, &wdecor);
    1528812        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    1529813
     
    1561845
    1562846        ui_wdecor_destroy(wdecor);
    1563         ui_resource_destroy(resource);
    1564 
    1565         rc = gfx_context_delete(gc);
    1566         PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    1567847}
    1568848
     
    1656936}
    1657937
    1658 static void test_wdecor_sysmenu_open(ui_wdecor_t *wdecor, void *arg,
    1659     sysarg_t idev_id)
     938static void test_wdecor_close(ui_wdecor_t *wdecor, void *arg)
    1660939{
    1661940        test_cb_resp_t *resp = (test_cb_resp_t *) arg;
    1662941
    1663         resp->sysmenu_open = true;
    1664         resp->idev_id = idev_id;
    1665 }
    1666 
    1667 static void test_wdecor_sysmenu_left(ui_wdecor_t *wdecor, void *arg,
    1668     sysarg_t idev_id)
    1669 {
    1670         test_cb_resp_t *resp = (test_cb_resp_t *) arg;
    1671 
    1672         resp->sysmenu_left = true;
    1673         resp->idev_id = idev_id;
    1674 }
    1675 
    1676 static void test_wdecor_sysmenu_right(ui_wdecor_t *wdecor, void *arg,
    1677     sysarg_t idev_id)
    1678 {
    1679         test_cb_resp_t *resp = (test_cb_resp_t *) arg;
    1680 
    1681         resp->sysmenu_right = true;
    1682         resp->idev_id = idev_id;
    1683 }
    1684 
    1685 static void test_wdecor_sysmenu_accel(ui_wdecor_t *wdecor, void *arg,
    1686     char32_t accel, sysarg_t idev_id)
    1687 {
    1688         test_cb_resp_t *resp = (test_cb_resp_t *) arg;
    1689 
    1690         resp->sysmenu_accel = true;
    1691         resp->accel = accel;
    1692         resp->idev_id = idev_id;
    1693 }
    1694 
    1695 static void test_wdecor_minimize(ui_wdecor_t *wdecor, void *arg)
    1696 {
    1697         test_cb_resp_t *resp = (test_cb_resp_t *) arg;
    1698 
    1699         resp->minimize = true;
    1700 }
    1701 
    1702 static void test_wdecor_maximize(ui_wdecor_t *wdecor, void *arg)
    1703 {
    1704         test_cb_resp_t *resp = (test_cb_resp_t *) arg;
    1705 
    1706         resp->maximize = true;
    1707 }
    1708 
    1709 static void test_wdecor_unmaximize(ui_wdecor_t *wdecor, void *arg)
    1710 {
    1711         test_cb_resp_t *resp = (test_cb_resp_t *) arg;
    1712 
    1713         resp->unmaximize = true;
    1714 }
    1715 
    1716 static void test_wdecor_close(ui_wdecor_t *wdecor, void *arg)
    1717 {
    1718         test_cb_resp_t *resp = (test_cb_resp_t *) arg;
    1719 
    1720942        resp->close = true;
    1721943}
    1722944
    1723 static void test_wdecor_move(ui_wdecor_t *wdecor, void *arg, gfx_coord2_t *pos,
    1724     sysarg_t pos_id)
     945static void test_wdecor_move(ui_wdecor_t *wdecor, void *arg, gfx_coord2_t *pos)
    1725946{
    1726947        test_cb_resp_t *resp = (test_cb_resp_t *) arg;
     
    1728949        resp->move = true;
    1729950        resp->pos = *pos;
    1730         resp->pos_id = pos_id;
    1731951}
    1732952
    1733953static void test_wdecor_resize(ui_wdecor_t *wdecor, void *arg,
    1734     ui_wdecor_rsztype_t rsztype, gfx_coord2_t *pos, sysarg_t pos_id)
     954    ui_wdecor_rsztype_t rsztype, gfx_coord2_t *pos)
    1735955{
    1736956        test_cb_resp_t *resp = (test_cb_resp_t *) arg;
     
    1739959        resp->rsztype = rsztype;
    1740960        resp->pos = *pos;
    1741         resp->pos_id = pos_id;
    1742961}
    1743962
Note: See TracChangeset for help on using the changeset viewer.