Changeset 252d03c in mainline for uspace/lib/ui/src/ui.c
- Timestamp:
- 2021-04-28T09:22:39Z (4 years ago)
- Branches:
- master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 7470d97
- Parents:
- de227aba
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/lib/ui/src/ui.c
rde227aba r252d03c 34 34 */ 35 35 36 #include <adt/list.h> 36 37 #include <ctype.h> 37 38 #include <display.h> … … 45 46 #include <ui/ui.h> 46 47 #include <ui/wdecor.h> 48 #include <ui/window.h> 47 49 #include "../private/window.h" 48 50 #include "../private/ui.h" … … 104 106 display_t *display; 105 107 console_ctrl_t *console; 108 console_gc_t *cgc; 106 109 ui_winsys_t ws; 107 110 const char *osvc; … … 131 134 return rc; 132 135 } 136 137 rc = console_gc_create(console, NULL, &cgc); 138 if (rc != EOK) { 139 ui_destroy(ui); 140 console_done(console); 141 return rc; 142 } 143 144 ui->cgc = cgc; 133 145 } else { 134 146 return EINVAL; … … 154 166 155 167 ui->console = console; 168 list_initialize(&ui->windows); 156 169 *rui = ui; 157 170 return EOK; … … 173 186 174 187 ui->display = disp; 188 list_initialize(&ui->windows); 175 189 *rui = ui; 176 190 return EOK; … … 187 201 188 202 if (ui->myoutput) { 203 if (ui->cgc != NULL) 204 console_gc_delete(ui->cgc); 189 205 if (ui->console != NULL) 190 206 console_done(ui->console); … … 198 214 static void ui_cons_event_process(ui_t *ui, cons_event_t *event) 199 215 { 200 if (ui->root_wnd == NULL) 216 ui_window_t *awnd; 217 ui_evclaim_t claim; 218 219 awnd = ui_window_get_active(ui); 220 if (awnd == NULL) 201 221 return; 202 222 203 223 switch (event->type) { 204 224 case CEV_KEY: 205 ui_window_send_kbd( ui->root_wnd, &event->ev.key);225 ui_window_send_kbd(awnd, &event->ev.key); 206 226 break; 207 227 case CEV_POS: 208 ui_wdecor_pos_event(ui->root_wnd->wdecor, &event->ev.pos); 209 ui_window_send_pos(ui->root_wnd, &event->ev.pos); 228 claim = ui_wdecor_pos_event(awnd->wdecor, &event->ev.pos); 229 /* Note: If event is claimed, awnd might not be valid anymore */ 230 if (claim == ui_unclaimed) 231 ui_window_send_pos(awnd, &event->ev.pos); 210 232 break; 211 233 } … … 248 270 } 249 271 272 /** Repaint UI (only used in fullscreen mode). 273 * 274 * This is used when an area is exposed in fullscreen mode. 275 * 276 * @param ui UI 277 * @return @c EOK on success or an error code 278 */ 279 errno_t ui_paint(ui_t *ui) 280 { 281 errno_t rc; 282 ui_window_t *awnd; 283 284 /* XXX Should repaint all windows */ 285 awnd = ui_window_get_active(ui); 286 if (awnd == NULL) 287 return EOK; 288 289 rc = ui_wdecor_paint(awnd->wdecor); 290 if (rc != EOK) 291 return rc; 292 293 return ui_window_paint(awnd); 294 } 295 250 296 /** Terminate user interface. 251 297 * … … 275 321 } 276 322 323 /** Determine if we are emulating windows. 324 * 325 * @param ui User interface 326 * @return @c true iff we are running in text mode 327 */ 328 bool ui_is_fullscreen(ui_t *ui) 329 { 330 return (ui->display == NULL); 331 } 332 277 333 /** @} 278 334 */
Note:
See TracChangeset
for help on using the changeset viewer.