Changeset 2d879f7 in mainline for uspace/lib/ui/src/window.c
- Timestamp:
- 2020-11-26T11:59:59Z (3 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 554a5f1
- Parents:
- d8ddf7a
- git-author:
- Jiri Svoboda <jiri@…> (2020-11-25 18:46:07)
- git-committer:
- Jiri Svoboda <jiri@…> (2020-11-26 11:59:59)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/lib/ui/src/window.c
rd8ddf7a r2d879f7 59 59 static void dwnd_kbd_event(void *, kbd_event_t *); 60 60 static void dwnd_pos_event(void *, pos_event_t *); 61 static void dwnd_resize_event(void *, gfx_rect_t *); 61 62 static void dwnd_unfocus_event(void *); 62 63 … … 66 67 .kbd_event = dwnd_kbd_event, 67 68 .pos_event = dwnd_pos_event, 69 .resize_event = dwnd_resize_event, 68 70 .unfocus_event = dwnd_unfocus_event 69 71 }; … … 71 73 static void wd_close(ui_wdecor_t *, void *); 72 74 static void wd_move(ui_wdecor_t *, void *, gfx_coord2_t *); 75 static void wd_resize(ui_wdecor_t *, void *, ui_wdecor_rsztype_t, 76 gfx_coord2_t *); 77 static void wd_set_cursor(ui_wdecor_t *, void *, ui_stock_cursor_t); 73 78 74 79 static ui_wdecor_cb_t wdecor_cb = { 75 80 .close = wd_close, 76 .move = wd_move 81 .move = wd_move, 82 .resize = wd_resize, 83 .set_cursor = wd_set_cursor 77 84 }; 78 85 … … 118 125 display_wnd_params_init(&dparams); 119 126 dparams.rect = params->rect; 127 /* Only allow making the window larger */ 128 gfx_rect_dims(¶ms->rect, &dparams.min_size); 120 129 121 130 if (ui->display != NULL) { … … 175 184 goto error; 176 185 177 rc = ui_wdecor_create(res, params->caption, &wdecor);186 rc = ui_wdecor_create(res, params->caption, params->style, &wdecor); 178 187 if (rc != EOK) 179 188 goto error; … … 185 194 window->ui = ui; 186 195 window->dwindow = dwindow; 196 window->rect = params->rect; 187 197 window->gc = gc; 188 198 window->res = res; 189 199 window->wdecor = wdecor; 200 window->cursor = ui_curs_arrow; 190 201 *rwindow = window; 191 202 return EOK; … … 435 446 } 436 447 448 /** Handle window resize event */ 449 static void dwnd_resize_event(void *arg, gfx_rect_t *rect) 450 { 451 ui_window_t *window = (ui_window_t *) arg; 452 453 /* Make sure we don't process events until fully initialized */ 454 if (window->wdecor == NULL) 455 return; 456 457 if ((window->wdecor->style & ui_wds_resizable) == 0) 458 return; 459 460 (void) ui_window_resize(window, rect); 461 (void) ui_window_paint(window); 462 } 463 437 464 /** Handle window unfocus event. */ 438 465 static void dwnd_unfocus_event(void *arg) … … 451 478 * 452 479 * @param wdecor Window decoration 453 * @param arg Argument ( demo)480 * @param arg Argument (window) 454 481 */ 455 482 static void wd_close(ui_wdecor_t *wdecor, void *arg) … … 463 490 * 464 491 * @param wdecor Window decoration 465 * @param arg Argument ( demo)492 * @param arg Argument (window) 466 493 * @param pos Position where the title bar was pressed 467 494 */ … … 471 498 472 499 (void) display_window_move_req(window->dwindow, pos); 500 } 501 502 /** Window decoration requested window resize. 503 * 504 * @param wdecor Window decoration 505 * @param arg Argument (window) 506 * @param rsztype Resize type 507 * @param pos Position where the button was pressed 508 */ 509 static void wd_resize(ui_wdecor_t *wdecor, void *arg, 510 ui_wdecor_rsztype_t rsztype, gfx_coord2_t *pos) 511 { 512 ui_window_t *window = (ui_window_t *) arg; 513 514 (void) display_window_resize_req(window->dwindow, rsztype, pos); 515 } 516 517 /** Window decoration requested changing cursor. 518 * 519 * @param wdecor Window decoration 520 * @param arg Argument (window) 521 * @param cursor Cursor to set 522 */ 523 static void wd_set_cursor(ui_wdecor_t *wdecor, void *arg, 524 ui_stock_cursor_t cursor) 525 { 526 ui_window_t *window = (ui_window_t *) arg; 527 display_stock_cursor_t dcursor; 528 529 if (cursor == window->cursor) 530 return; 531 532 dcursor = dcurs_arrow; 533 534 switch (cursor) { 535 case ui_curs_arrow: 536 dcursor = dcurs_arrow; 537 break; 538 case ui_curs_size_ud: 539 dcursor = dcurs_size_ud; 540 break; 541 case ui_curs_size_lr: 542 dcursor = dcurs_size_lr; 543 break; 544 case ui_curs_size_uldr: 545 dcursor = dcurs_size_uldr; 546 break; 547 case ui_curs_size_urdl: 548 dcursor = dcurs_size_urdl; 549 break; 550 } 551 552 (void) display_window_set_cursor(window->dwindow, dcursor); 553 window->cursor = cursor; 473 554 } 474 555
Note:
See TracChangeset
for help on using the changeset viewer.