Changeset c9927c66 in mainline for uspace/lib/ui/src/window.c
- Timestamp:
- 2021-06-10T13:22:33Z (4 years ago)
- Branches:
- master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 9e84d2c
- Parents:
- c68c18b9
- git-author:
- Jiri Svoboda <jiri@…> (2021-05-27 17:00:30)
- git-committer:
- jxsvoboda <5887334+jxsvoboda@…> (2021-06-10 13:22:33)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/lib/ui/src/window.c
rc68c18b9 rc9927c66 109 109 } 110 110 111 static errno_t ui_window_place(ui_window_t *window, display_t *display, 112 display_info_t *info, ui_wnd_params_t *params) 113 { 114 gfx_coord2_t pos; 115 errno_t rc; 116 117 assert(params->placement != ui_wnd_place_default); 118 119 pos.x = 0; 120 pos.y = 0; 121 switch (params->placement) { 122 case ui_wnd_place_default: 123 assert(false); 124 case ui_wnd_place_top_left: 125 case ui_wnd_place_full_screen: 126 pos.x = info->rect.p0.x - params->rect.p0.x; 127 pos.y = info->rect.p0.y - params->rect.p0.y; 128 break; 129 case ui_wnd_place_top_right: 130 pos.x = info->rect.p1.x - params->rect.p1.x; 131 pos.y = info->rect.p0.y - params->rect.p0.y; 132 break; 133 case ui_wnd_place_bottom_left: 134 pos.x = info->rect.p0.x - params->rect.p0.x; 135 pos.y = info->rect.p1.y - params->rect.p1.y; 136 break; 137 case ui_wnd_place_bottom_right: 138 pos.x = info->rect.p1.x - params->rect.p1.x; 139 pos.y = info->rect.p1.y - params->rect.p1.y; 140 break; 141 case ui_wnd_place_popup: 142 /* Place popup window below parent rectangle */ 143 pos.x = params->prect.p0.x; 144 pos.y = params->prect.p1.y; 145 break; 146 } 147 148 rc = display_window_move(window->dwindow, &pos); 149 if (rc != EOK) 150 goto error; 151 152 return EOK; 153 error: 154 return rc; 155 } 156 111 157 /** Create new window. 112 158 * … … 121 167 ui_window_t *window; 122 168 display_info_t info; 123 gfx_coord2_t pos;124 169 gfx_coord2_t scr_dims; 125 170 display_wnd_params_t dparams; 126 display_window_t *dwindow = NULL;127 171 gfx_context_t *gc = NULL; 128 172 ui_resource_t *res = NULL; … … 159 203 160 204 rc = display_window_create(ui->display, &dparams, &dwnd_cb, 161 (void *) window, & dwindow);205 (void *) window, &window->dwindow); 162 206 if (rc != EOK) 163 207 goto error; 164 208 165 209 if (params->placement != ui_wnd_place_default) { 166 pos.x = 0; 167 pos.y = 0; 168 169 switch (params->placement) { 170 case ui_wnd_place_default: 171 assert(false); 172 case ui_wnd_place_top_left: 173 case ui_wnd_place_full_screen: 174 pos.x = info.rect.p0.x - params->rect.p0.x; 175 pos.y = info.rect.p0.y - params->rect.p0.y; 176 break; 177 case ui_wnd_place_top_right: 178 pos.x = info.rect.p1.x - params->rect.p1.x; 179 pos.y = info.rect.p0.y - params->rect.p0.y; 180 break; 181 case ui_wnd_place_bottom_left: 182 pos.x = info.rect.p0.x - params->rect.p0.x; 183 pos.y = info.rect.p1.y - params->rect.p1.y; 184 break; 185 case ui_wnd_place_bottom_right: 186 pos.x = info.rect.p1.x - params->rect.p1.x; 187 pos.y = info.rect.p1.y - params->rect.p1.y; 188 break; 189 } 190 191 rc = display_window_move(dwindow, &pos); 210 rc = ui_window_place(window, ui->display, &info, 211 params); 192 212 if (rc != EOK) 193 213 goto error; 194 214 } 195 215 196 rc = display_window_get_gc( dwindow, &gc);216 rc = display_window_get_gc(window->dwindow, &gc); 197 217 if (rc != EOK) 198 218 goto error; … … 265 285 266 286 window->ui = ui; 267 window->dwindow = dwindow;268 287 window->rect = dparams.rect; 269 288 … … 286 305 if (dgc != NULL) 287 306 dummygc_destroy(dgc); 288 if (dwindow != NULL)289 display_window_destroy(dwindow);290 307 free(window); 291 308 return rc; … … 536 553 { 537 554 return window->gc; 555 } 556 557 /** Get window position. 558 * 559 * @param window Window 560 * @param pos Place to store position 561 * @return EOK on success or an error code 562 */ 563 errno_t ui_window_get_pos(ui_window_t *window, gfx_coord2_t *pos) 564 { 565 errno_t rc; 566 567 if (window->dwindow != NULL) { 568 rc = display_window_get_pos(window->dwindow, pos); 569 if (rc != EOK) 570 return rc; 571 } else { 572 pos->x = 0; 573 pos->y = 0; 574 } 575 576 return EOK; 538 577 } 539 578
Note:
See TracChangeset
for help on using the changeset viewer.