Changeset a40ae0d in mainline for uspace/srv/hid/display/seat.c
- Timestamp:
- 2020-01-09T16:44:57Z (5 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 946a666
- Parents:
- 8e9781f
- git-author:
- Jiri Svoboda <jiri@…> (2020-01-09 18:44:03)
- git-committer:
- Jiri Svoboda <jiri@…> (2020-01-09 16:44:57)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/srv/hid/display/seat.c
r8e9781f ra40ae0d 215 215 /** Post pointing device event to the seat 216 216 * 217 * Update pointer position and generate position event. 218 * 217 219 * @param seat Seat 218 220 * @param event Event … … 223 225 errno_t ds_seat_post_ptd_event(ds_seat_t *seat, ptd_event_t *event) 224 226 { 227 gfx_coord2_t npos; 225 228 ds_window_t *wnd; 226 gfx_coord2_t npos; 229 pos_event_t pevent; 230 errno_t rc; 227 231 228 232 printf("ds_seat_post_ptd_event\n"); 233 wnd = ds_display_window_by_pos(seat->display, &seat->pntpos); 234 229 235 /* Focus window on button press */ 230 if (event->type == PTD_PRESS) { 231 printf("PTD_PRESS\n"); 232 wnd = ds_display_window_by_pos(seat->display, &seat->pntpos); 236 if (event->type == PTD_PRESS && event->btn_num == 1) { 237 printf("PTD_PRESS (button = %d)\n", event->btn_num); 233 238 if (wnd != NULL) { 234 239 printf("set focus\n"); 235 240 ds_seat_set_focus(seat, wnd); 236 return EOK;237 241 } 242 } 243 244 if (event->type == PTD_PRESS || event->type == PTD_RELEASE) { 245 pevent.pos_id = 0; 246 pevent.type = (event->type == PTD_PRESS) ? 247 POS_PRESS : POS_RELEASE; 248 pevent.btn_num = event->btn_num; 249 pevent.hpos = seat->pntpos.x; 250 pevent.vpos = seat->pntpos.y; 251 252 rc = ds_seat_post_pos_event(seat, &pevent); 253 if (rc != EOK) 254 return rc; 238 255 } 239 256 240 257 if (event->type == PTD_MOVE) { 241 258 printf("PTD_MOVE\n"); 259 242 260 gfx_coord2_add(&seat->pntpos, &event->dmove, &npos); 243 261 if (npos.x < 0) … … 253 271 (void) ds_seat_draw_pointer(seat, false); 254 272 seat->pntpos = npos; 273 274 pevent.pos_id = 0; 275 pevent.type = POS_UPDATE; 276 pevent.btn_num = 0; 277 pevent.hpos = seat->pntpos.x; 278 pevent.vpos = seat->pntpos.y; 279 280 rc = ds_seat_post_pos_event(seat, &pevent); 281 if (rc != EOK) 282 return rc; 283 255 284 printf("draw pointer\n"); 256 285 (void) ds_seat_draw_pointer(seat, true); … … 260 289 } 261 290 291 /** Post position event to seat. 292 * 293 * Deliver event to relevant windows. 294 * 295 * @param seat Seat 296 * @param event Position event 297 */ 298 errno_t ds_seat_post_pos_event(ds_seat_t *seat, pos_event_t *event) 299 { 300 ds_window_t *wnd; 301 errno_t rc; 302 303 printf("ds_seat_post_pos_event\n"); 304 305 wnd = ds_display_window_by_pos(seat->display, &seat->pntpos); 306 if (wnd != NULL) { 307 printf("send event to window at pointer position\n"); 308 rc = ds_window_post_pos_event(wnd, event); 309 if (rc != EOK) 310 return rc; 311 } 312 313 if (seat->focus != wnd) { 314 printf("send event to focused window\n"); 315 316 rc = ds_window_post_pos_event(seat->focus, event); 317 if (rc != EOK) 318 return rc; 319 } 320 321 return EOK; 322 } 323 262 324 /** @} 263 325 */
Note:
See TracChangeset
for help on using the changeset viewer.