Changeset fa01c05 in mainline for uspace/lib/ui/test/window.c


Ignore:
Timestamp:
2020-11-03T18:46:35Z (5 years ago)
Author:
Jiri Svoboda <jiri@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
b71c0fc
Parents:
4ac11ff
Message:

UI window should fill the application are background

Except for applications that want to do their own drawing without the
use of UI control hierarchy. We solve this by doing it in a default
paint callback that the application can override with its own
paint routine.

File:
1 edited

Legend:

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

    r4ac11ff rfa01c05  
    4646static void test_window_focus(ui_window_t *, void *);
    4747static void test_window_kbd(ui_window_t *, void *, kbd_event_t *);
     48static errno_t test_window_paint(ui_window_t *, void *);
    4849static void test_window_pos(ui_window_t *, void *, pos_event_t *);
    4950static void test_window_unfocus(ui_window_t *, void *);
     
    5354        .focus = test_window_focus,
    5455        .kbd = test_window_kbd,
     56        .paint = test_window_paint,
    5557        .pos = test_window_pos,
    5658        .unfocus = test_window_unfocus
     
    6163
    6264typedef struct {
     65        errno_t rc;
    6366        bool close;
    6467        bool focus;
    6568        bool kbd;
    6669        kbd_event_t kbd_event;
     70        bool paint;
    6771        bool pos;
    6872        pos_event_t pos_event;
     
    131135}
    132136
    133 /** ui_window_close() calls close callback set via ui_window_set_cb() */
    134 PCUT_TEST(close)
     137/** Test ui_window_paint() */
     138PCUT_TEST(paint)
     139{
     140        errno_t rc;
     141        ui_t *ui = NULL;
     142        ui_wnd_params_t params;
     143        ui_window_t *window = NULL;
     144
     145        rc = ui_create_disp(NULL, &ui);
     146        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     147
     148        ui_wnd_params_init(&params);
     149        params.caption = "Hello";
     150
     151        rc = ui_window_create(ui, &params, &window);
     152        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     153        PCUT_ASSERT_NOT_NULL(window);
     154
     155        ui_window_paint(window);
     156
     157        ui_window_destroy(window);
     158        ui_destroy(ui);
     159}
     160
     161/** Test ui_window_def_paint() */
     162PCUT_TEST(def_paint)
     163{
     164        errno_t rc;
     165        ui_t *ui = NULL;
     166        ui_wnd_params_t params;
     167        ui_window_t *window = NULL;
     168
     169        rc = ui_create_disp(NULL, &ui);
     170        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     171
     172        ui_wnd_params_init(&params);
     173        params.caption = "Hello";
     174
     175        rc = ui_window_create(ui, &params, &window);
     176        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     177        PCUT_ASSERT_NOT_NULL(window);
     178
     179        ui_window_def_paint(window);
     180
     181        ui_window_destroy(window);
     182        ui_destroy(ui);
     183}
     184
     185/** ui_window_send_close() calls close callback set via ui_window_set_cb() */
     186PCUT_TEST(send_close)
    135187{
    136188        errno_t rc;
     
    151203
    152204        /* Close callback with no callbacks set */
    153         ui_window_close(window);
     205        ui_window_send_close(window);
    154206
    155207        /* Close callback with close callback not implemented */
    156208        ui_window_set_cb(window, &dummy_window_cb, NULL);
    157         ui_window_close(window);
     209        ui_window_send_close(window);
    158210
    159211        /* Close callback with real callback set */
    160212        resp.close = false;
    161213        ui_window_set_cb(window, &test_window_cb, &resp);
    162         ui_window_close(window);
     214        ui_window_send_close(window);
    163215        PCUT_ASSERT_TRUE(resp.close);
    164216
     
    167219}
    168220
    169 /** ui_window_focus() calls focus callback set via ui_window_set_cb() */
    170 PCUT_TEST(focus)
     221/** ui_window_send_focus() calls focus callback set via ui_window_set_cb() */
     222PCUT_TEST(send_focus)
    171223{
    172224        errno_t rc;
     
    187239
    188240        /* Focus callback with no callbacks set */
    189         ui_window_focus(window);
     241        ui_window_send_focus(window);
    190242
    191243        /* Focus callback with focus callback not implemented */
    192244        ui_window_set_cb(window, &dummy_window_cb, NULL);
    193         ui_window_focus(window);
     245        ui_window_send_focus(window);
    194246
    195247        /* Focus callback with real callback set */
    196         resp.close = false;
    197         ui_window_set_cb(window, &test_window_cb, &resp);
    198         ui_window_focus(window);
     248        resp.focus = false;
     249        ui_window_set_cb(window, &test_window_cb, &resp);
     250        ui_window_send_focus(window);
    199251        PCUT_ASSERT_TRUE(resp.focus);
    200252
     
    203255}
    204256
    205 /** ui_window_kbd() calls kbd callback set via ui_window_set_cb() */
    206 PCUT_TEST(kbd)
     257/** ui_window_send_kbd() calls kbd callback set via ui_window_set_cb() */
     258PCUT_TEST(send_kbd)
    207259{
    208260        errno_t rc;
     
    229281
    230282        /* Kbd callback with no callbacks set */
    231         ui_window_kbd(window, &kbd_event);
     283        ui_window_send_kbd(window, &kbd_event);
    232284
    233285        /* Kbd callback with kbd callback not implemented */
    234286        ui_window_set_cb(window, &dummy_window_cb, NULL);
    235         ui_window_kbd(window, &kbd_event);
     287        ui_window_send_kbd(window, &kbd_event);
    236288
    237289        /* Kbd callback with real callback set */
    238290        resp.kbd = false;
    239291        ui_window_set_cb(window, &test_window_cb, &resp);
    240         ui_window_kbd(window, &kbd_event);
     292        ui_window_send_kbd(window, &kbd_event);
    241293        PCUT_ASSERT_TRUE(resp.kbd);
    242294        PCUT_ASSERT_EQUALS(kbd_event.type, resp.kbd_event.type);
     
    249301}
    250302
    251 /** ui_window_pos() calls pos callback set via ui_window_set_cb() */
    252 PCUT_TEST(pos)
     303/** ui_window_send_paint() calls paint callback set via ui_window_set_cb() */
     304PCUT_TEST(send_paint)
     305{
     306        errno_t rc;
     307        ui_t *ui = NULL;
     308        ui_wnd_params_t params;
     309        ui_window_t *window = NULL;
     310        test_cb_resp_t resp;
     311
     312        rc = ui_create_disp(NULL, &ui);
     313        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     314
     315        ui_wnd_params_init(&params);
     316        params.caption = "Hello";
     317
     318        rc = ui_window_create(ui, &params, &window);
     319        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     320        PCUT_ASSERT_NOT_NULL(window);
     321
     322        /* Paint callback with no callbacks set */
     323        ui_window_send_paint(window);
     324
     325        /* Paint callback with paint callback not implemented */
     326        ui_window_set_cb(window, &dummy_window_cb, NULL);
     327        ui_window_send_paint(window);
     328
     329        /* Paint callback with real callback set */
     330        resp.paint = false;
     331        resp.rc = EOK;
     332        ui_window_set_cb(window, &test_window_cb, &resp);
     333        rc = ui_window_send_paint(window);
     334        PCUT_ASSERT_ERRNO_VAL(resp.rc, rc);
     335        PCUT_ASSERT_TRUE(resp.paint);
     336
     337        ui_window_destroy(window);
     338        ui_destroy(ui);
     339}
     340
     341/** ui_window_send_pos() calls pos callback set via ui_window_set_cb() */
     342PCUT_TEST(send_pos)
    253343{
    254344        errno_t rc;
     
    276366
    277367        /* Pos callback with no callbacks set */
    278         ui_window_pos(window, &pos_event);
     368        ui_window_send_pos(window, &pos_event);
    279369
    280370        /* Pos callback with pos callback not implemented */
    281371        ui_window_set_cb(window, &dummy_window_cb, NULL);
    282         ui_window_pos(window, &pos_event);
     372        ui_window_send_pos(window, &pos_event);
    283373
    284374        /* Pos callback with real callback set */
    285375        resp.pos = false;
    286376        ui_window_set_cb(window, &test_window_cb, &resp);
    287         ui_window_pos(window, &pos_event);
     377        ui_window_send_pos(window, &pos_event);
    288378        PCUT_ASSERT_TRUE(resp.pos);
    289379        PCUT_ASSERT_INT_EQUALS(pos_event.pos_id, resp.pos_event.pos_id);
     
    297387}
    298388
    299 /** ui_window_unfocus() calls unfocus callback set via ui_window_set_cb() */
    300 PCUT_TEST(unfocus)
     389/** ui_window_send_unfocus() calls unfocus callback set via ui_window_set_cb() */
     390PCUT_TEST(send_unfocus)
    301391{
    302392        errno_t rc;
     
    317407
    318408        /* Unfocus callback with no callbacks set */
    319         ui_window_unfocus(window);
     409        ui_window_send_unfocus(window);
    320410
    321411        /* Unfocus callback with unfocus callback not implemented */
    322412        ui_window_set_cb(window, &dummy_window_cb, NULL);
    323         ui_window_unfocus(window);
     413        ui_window_send_unfocus(window);
    324414
    325415        /* Unfocus callback with real callback set */
    326416        resp.close = false;
    327417        ui_window_set_cb(window, &test_window_cb, &resp);
    328         ui_window_unfocus(window);
     418        ui_window_send_unfocus(window);
    329419        PCUT_ASSERT_TRUE(resp.unfocus);
    330420
     
    356446}
    357447
     448static errno_t test_window_paint(ui_window_t *window, void *arg)
     449{
     450        test_cb_resp_t *resp = (test_cb_resp_t *) arg;
     451
     452        resp->paint = true;
     453        return resp->rc;
     454}
     455
    358456static void test_window_pos(ui_window_t *window, void *arg,
    359457    pos_event_t *event)
Note: See TracChangeset for help on using the changeset viewer.