Changeset 06176e1 in mainline for uspace/lib/ui/src/wdecor.c
- Timestamp:
- 2022-12-20T12:31:44Z (2 years ago)
- Branches:
- master, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 4e7b0ad
- Parents:
- d46ac73
- git-author:
- Jiri Svoboda <jiri@…> (2022-12-19 18:31:30)
- git-committer:
- Jiri Svoboda <jiri@…> (2022-12-20 12:31:44)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/lib/ui/src/wdecor.c
rd46ac73 r06176e1 49 49 #include "../private/wdecor.h" 50 50 51 static void ui_wdecor_btn_min_clicked(ui_pbutton_t *, void *); 52 static errno_t ui_wdecor_btn_min_paint(ui_pbutton_t *, void *, 53 gfx_coord2_t *); 54 51 55 static void ui_wdecor_btn_max_clicked(ui_pbutton_t *, void *); 52 56 static errno_t ui_wdecor_btn_max_paint(ui_pbutton_t *, void *, … … 56 60 static errno_t ui_wdecor_btn_close_paint(ui_pbutton_t *, void *, 57 61 gfx_coord2_t *); 62 63 static ui_pbutton_cb_t ui_wdecor_btn_min_cb = { 64 .clicked = ui_wdecor_btn_min_clicked 65 }; 66 67 static ui_pbutton_decor_ops_t ui_wdecor_btn_min_decor_ops = { 68 .paint = ui_wdecor_btn_min_paint 69 }; 58 70 59 71 static ui_pbutton_cb_t ui_wdecor_btn_max_cb = { … … 98 110 /** Close button cross pen height */ 99 111 wdecor_close_cross_h = 1, 112 /** Minimize icon width */ 113 wdecor_min_w = 10, 114 /** Minimize icon height */ 115 wdecor_min_h = 10, 100 116 /** Maximize icon width */ 101 117 wdecor_max_w = 10, … … 136 152 } 137 153 154 if ((style & ui_wds_minimize_btn) != 0) { 155 rc = ui_pbutton_create(resource, "_", &wdecor->btn_min); 156 if (rc != EOK) { 157 ui_wdecor_destroy(wdecor); 158 return rc; 159 } 160 161 ui_pbutton_set_cb(wdecor->btn_min, &ui_wdecor_btn_min_cb, 162 (void *)wdecor); 163 164 ui_pbutton_set_decor_ops(wdecor->btn_min, 165 &ui_wdecor_btn_min_decor_ops, (void *)wdecor); 166 } 167 138 168 if ((style & ui_wds_maximize_btn) != 0) { 139 169 rc = ui_pbutton_create(resource, "^", &wdecor->btn_max); … … 180 210 return; 181 211 212 ui_pbutton_destroy(wdecor->btn_min); 182 213 ui_pbutton_destroy(wdecor->btn_max); 183 214 ui_pbutton_destroy(wdecor->btn_close); … … 211 242 ui_wdecor_get_geom(wdecor, &geom); 212 243 244 if (wdecor->btn_min != NULL) 245 ui_pbutton_set_rect(wdecor->btn_min, &geom.btn_min_rect); 213 246 if (wdecor->btn_max != NULL) 214 247 ui_pbutton_set_rect(wdecor->btn_max, &geom.btn_max_rect); … … 362 395 return rc; 363 396 397 if (wdecor->btn_min != NULL) { 398 rc = ui_pbutton_paint(wdecor->btn_min); 399 if (rc != EOK) 400 return rc; 401 } 402 364 403 if (wdecor->btn_max != NULL) { 365 404 rc = ui_pbutton_paint(wdecor->btn_max); … … 380 419 381 420 return EOK; 421 } 422 423 /** Send decoration minimize event. 424 * 425 * @param wdecor Window decoration 426 */ 427 void ui_wdecor_minimize(ui_wdecor_t *wdecor) 428 { 429 if (wdecor->cb != NULL && wdecor->cb->minimize != NULL) 430 wdecor->cb->minimize(wdecor, wdecor->arg); 382 431 } 383 432 … … 554 603 } 555 604 605 /* Does window have a minimize button? */ 606 if ((wdecor->style & ui_wds_minimize_btn) != 0) { 607 if (wdecor->res->textmode == false) { 608 geom->btn_min_rect.p0.x = btn_x - 20; 609 geom->btn_min_rect.p0.y = btn_y; 610 geom->btn_min_rect.p1.x = btn_x; 611 geom->btn_min_rect.p1.y = btn_y + 20; 612 613 btn_x -= 20; 614 } else { 615 geom->btn_min_rect.p0.x = btn_x - 3; 616 geom->btn_min_rect.p0.y = btn_y; 617 geom->btn_min_rect.p1.x = btn_x; 618 geom->btn_min_rect.p1.y = btn_y + 1; 619 620 btn_x -= 3; 621 } 622 } else { 623 geom->btn_min_rect.p0.x = 0; 624 geom->btn_min_rect.p0.y = 0; 625 geom->btn_min_rect.p1.x = 0; 626 geom->btn_min_rect.p1.y = 0; 627 } 628 556 629 if (wdecor->res->textmode == false) 557 630 cap_hmargin = wdecor_cap_hmargin; … … 773 846 ui_wdecor_get_geom(wdecor, &geom); 774 847 848 if (wdecor->btn_min != NULL) { 849 claim = ui_pbutton_pos_event(wdecor->btn_min, event); 850 if (claim == ui_claimed) 851 return ui_claimed; 852 } 853 775 854 if (wdecor->btn_max != NULL) { 776 855 claim = ui_pbutton_pos_event(wdecor->btn_max, event); … … 798 877 } 799 878 879 /** Window decoration minimize button was clicked. 880 * 881 * @param pbutton Minimize button 882 * @param arg Argument (ui_wdecor_t) 883 */ 884 static void ui_wdecor_btn_min_clicked(ui_pbutton_t *pbutton, void *arg) 885 { 886 ui_wdecor_t *wdecor = (ui_wdecor_t *) arg; 887 888 (void) pbutton; 889 890 ui_wdecor_minimize(wdecor); 891 } 892 800 893 /** Window decoration (un)maximize button was clicked. 801 894 * 802 * @param pbutton Close button895 * @param pbutton (Un)maximize button 803 896 * @param arg Argument (ui_wdecor_t) 804 897 */ … … 813 906 else 814 907 ui_wdecor_maximize(wdecor); 908 } 909 910 /** Paint minimize button decoration. 911 * 912 * @param pbutton Push button 913 * @param arg Argument (ui_wdecor_t *) 914 * @param pos Center position 915 */ 916 static errno_t ui_wdecor_btn_min_paint(ui_pbutton_t *pbutton, 917 void *arg, gfx_coord2_t *pos) 918 { 919 ui_wdecor_t *wdecor = (ui_wdecor_t *)arg; 920 errno_t rc; 921 922 rc = ui_paint_minicon(wdecor->res, pos, wdecor_min_w, 923 wdecor_min_h); 924 925 return rc; 815 926 } 816 927
Note:
See TracChangeset
for help on using the changeset viewer.