Changeset 5d380b6 in mainline for uspace/lib/ui/src
- Timestamp:
- 2023-01-20T11:50:41Z (3 years ago)
- Branches:
- master, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- b1f0a14
- Parents:
- 6828a56
- git-author:
- Jiri Svoboda <jiri@…> (2023-01-20 19:50:21)
- git-committer:
- Jiri Svoboda <jiri@…> (2023-01-20 11:50:41)
- Location:
- uspace/lib/ui/src
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/lib/ui/src/menu.c
r6828a56 r5d380b6 1 1 /* 2 * Copyright (c) 202 2Jiri Svoboda2 * Copyright (c) 2023 Jiri Svoboda 3 3 * All rights reserved. 4 4 * … … 280 280 * @param menu Menu 281 281 * @param prect Parent rectangle around which the menu should be placed 282 */ 283 errno_t ui_menu_open(ui_menu_t *menu, gfx_rect_t *prect) 282 * @param idev_id Input device associated with the menu's seat 283 */ 284 errno_t ui_menu_open(ui_menu_t *menu, gfx_rect_t *prect, sysarg_t idev_id) 284 285 { 285 286 ui_popup_t *popup = NULL; … … 301 302 params.rect = geom.outer_rect; 302 303 params.place = *prect; 304 params.idev_id = idev_id; 303 305 304 306 rc = ui_popup_create(menu->mbar->ui, menu->mbar->window, ¶ms, … … 522 524 if (event->type == KEY_PRESS && (event->mods & KM_ALT) != 0 && 523 525 (event->mods & (KM_CTRL | KM_SHIFT)) == 0 && event->c != '\0') 524 ui_menu_bar_press_accel(menu->mbar, event->c );526 ui_menu_bar_press_accel(menu->mbar, event->c, event->kbd_id); 525 527 526 528 return ui_claimed; … … 616 618 break; 617 619 case KC_LEFT: 618 ui_menu_bar_left(menu->mbar );620 ui_menu_bar_left(menu->mbar, event->kbd_id); 619 621 break; 620 622 case KC_RIGHT: 621 ui_menu_bar_right(menu->mbar );623 ui_menu_bar_right(menu->mbar, event->kbd_id); 622 624 break; 623 625 case KC_UP: -
uspace/lib/ui/src/menubar.c
r6828a56 r5d380b6 1 1 /* 2 * Copyright (c) 202 2Jiri Svoboda2 * Copyright (c) 2023 Jiri Svoboda 3 3 * All rights reserved. 4 4 * … … 243 243 * @param menu Menu to select (or deselect if selected) or @c NULL 244 244 * @param openup Open menu even if not currently open 245 */ 246 void ui_menu_bar_select(ui_menu_bar_t *mbar, ui_menu_t *menu, bool openup) 245 * @param idev_id Input device ID associated with the selecting seat 246 */ 247 void ui_menu_bar_select(ui_menu_bar_t *mbar, ui_menu_t *menu, bool openup, 248 sysarg_t idev_id) 247 249 { 248 250 ui_menu_t *old_menu; … … 272 274 * specified. 273 275 */ 274 (void) ui_menu_open(mbar->selected, &rect );276 (void) ui_menu_open(mbar->selected, &rect, idev_id); 275 277 } 276 278 } … … 283 285 * 284 286 * @param mbar Menu bar 285 */ 286 void ui_menu_bar_left(ui_menu_bar_t *mbar) 287 * @param idev_id Input device ID 288 */ 289 void ui_menu_bar_left(ui_menu_bar_t *mbar, sysarg_t idev_id) 287 290 { 288 291 ui_menu_t *nmenu; … … 296 299 297 300 if (nmenu != mbar->selected) 298 ui_menu_bar_select(mbar, nmenu, false );301 ui_menu_bar_select(mbar, nmenu, false, idev_id); 299 302 } 300 303 … … 305 308 * 306 309 * @param mbar Menu bar 307 */ 308 void ui_menu_bar_right(ui_menu_bar_t *mbar) 310 * @param idev_id Input device ID 311 */ 312 void ui_menu_bar_right(ui_menu_bar_t *mbar, sysarg_t idev_id) 309 313 { 310 314 ui_menu_t *nmenu; … … 318 322 319 323 if (nmenu != mbar->selected) 320 ui_menu_bar_select(mbar, nmenu, false );324 ui_menu_bar_select(mbar, nmenu, false, idev_id); 321 325 } 322 326 … … 345 349 346 350 if (event->key == KC_LEFT) 347 ui_menu_bar_left(mbar );351 ui_menu_bar_left(mbar, event->kbd_id); 348 352 349 353 if (event->key == KC_RIGHT) 350 ui_menu_bar_right(mbar );354 ui_menu_bar_right(mbar, event->kbd_id); 351 355 352 356 if (event->key == KC_ENTER || event->key == KC_DOWN) { … … 354 358 ui_menu_bar_entry_rect(mbar, mbar->selected, 355 359 &rect); 356 ui_menu_open(mbar->selected, &rect );360 ui_menu_open(mbar->selected, &rect, event->kbd_id); 357 361 } 358 362 … … 362 366 if (event->c != '\0' && !ui_menu_is_open(mbar->selected)) { 363 367 /* Check if it is an accelerator. */ 364 ui_menu_bar_press_accel(mbar, event->c );368 ui_menu_bar_press_accel(mbar, event->c, event->kbd_id); 365 369 } 366 370 … … 379 383 (event->mods & (KM_CTRL | KM_SHIFT)) == 0 && event->c != '\0') { 380 384 /* Check if it is an accelerator. */ 381 ui_menu_bar_press_accel(mbar, event->c );385 ui_menu_bar_press_accel(mbar, event->c, event->kbd_id); 382 386 } 383 387 … … 399 403 * @param mbar Menu bar 400 404 * @param c Character 401 */ 402 void ui_menu_bar_press_accel(ui_menu_bar_t *mbar, char32_t c) 405 * @param kbd_id Keyboard ID 406 */ 407 void ui_menu_bar_press_accel(ui_menu_bar_t *mbar, char32_t c, sysarg_t kbd_id) 403 408 { 404 409 ui_menu_t *menu; … … 409 414 maccel = ui_menu_get_accel(menu); 410 415 if (c == maccel) { 411 ui_menu_bar_select(mbar, menu, true );416 ui_menu_bar_select(mbar, menu, true, kbd_id); 412 417 return; 413 418 } … … 433 438 gfx_coord_t hpad; 434 439 gfx_coord2_t ppos; 440 sysarg_t pos_id; 435 441 436 442 res = ui_window_get_res(mbar->window); … … 446 452 447 453 pos = mbar->rect.p0; 454 pos_id = event->pos_id; 448 455 449 456 menu = ui_menu_first(mbar); … … 463 470 /* Open the menu, close if already open. */ 464 471 if (menu == mbar->selected) 465 ui_menu_bar_select(mbar, NULL, false );472 ui_menu_bar_select(mbar, NULL, false, pos_id); 466 473 else 467 ui_menu_bar_select(mbar, menu, true );474 ui_menu_bar_select(mbar, menu, true, pos_id); 468 475 469 476 return ui_claimed; … … 544 551 void ui_menu_bar_deactivate(ui_menu_bar_t *mbar) 545 552 { 546 ui_menu_bar_select(mbar, NULL, false );553 ui_menu_bar_select(mbar, NULL, false, 0); 547 554 mbar->active = false; 548 555 } -
uspace/lib/ui/src/popup.c
r6828a56 r5d380b6 1 1 /* 2 * Copyright (c) 202 2Jiri Svoboda2 * Copyright (c) 2023 Jiri Svoboda 3 3 * All rights reserved. 4 4 * … … 99 99 wparams.placement = ui_wnd_place_popup; 100 100 wparams.flags |= ui_wndf_popup; 101 wparams.idev_id = params->idev_id; 101 102 102 103 /* Compute position of parent rectangle relative to the screen */ -
uspace/lib/ui/src/window.c
r6828a56 r5d380b6 227 227 /* Only allow making the window larger */ 228 228 gfx_rect_dims(¶ms->rect, &dparams.min_size); 229 dparams.idev_id = params->idev_id; 229 230 230 231 if ((params->flags & ui_wndf_popup) != 0)
Note:
See TracChangeset
for help on using the changeset viewer.