Changeset ec50d65e in mainline for uspace/lib
- Timestamp:
- 2024-06-22T09:13:30Z (16 months ago)
- Branches:
- master
- Children:
- 49aaa0e
- Parents:
- 743f2cdd
- git-author:
- Jiri Svoboda <jiri@…> (2024-06-22 09:12:48)
- git-committer:
- Jiri Svoboda <jiri@…> (2024-06-22 09:13:30)
- Location:
- uspace/lib/ui
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/lib/ui/include/types/ui/menubar.h
r743f2cdd rec50d65e 1 1 /* 2 * Copyright (c) 202 1Jiri Svoboda2 * Copyright (c) 2024 Jiri Svoboda 3 3 * All rights reserved. 4 4 * … … 40 40 typedef struct ui_menu_bar ui_menu_bar_t; 41 41 42 /** Menu bar callbacks */ 43 typedef struct ui_menu_bar_cb { 44 /** Activated */ 45 void (*activate)(ui_menu_bar_t *, void *); 46 /** Deactivated */ 47 void (*deactivate)(ui_menu_bar_t *, void *); 48 } ui_menu_bar_cb_t; 49 42 50 #endif 43 51 -
uspace/lib/ui/include/ui/menubar.h
r743f2cdd rec50d65e 1 1 /* 2 * Copyright (c) 202 3Jiri Svoboda2 * Copyright (c) 2024 Jiri Svoboda 3 3 * All rights reserved. 4 4 * … … 52 52 ui_menu_bar_t **); 53 53 extern void ui_menu_bar_destroy(ui_menu_bar_t *); 54 extern void ui_menu_bar_set_cb(ui_menu_bar_t *, ui_menu_bar_cb_t *, void *); 54 55 extern ui_control_t *ui_menu_bar_ctl(ui_menu_bar_t *); 55 56 extern void ui_menu_bar_set_rect(ui_menu_bar_t *, gfx_rect_t *); -
uspace/lib/ui/private/menubar.h
r743f2cdd rec50d65e 1 1 /* 2 * Copyright (c) 202 3Jiri Svoboda2 * Copyright (c) 2024 Jiri Svoboda 3 3 * All rights reserved. 4 4 * … … 64 64 /** List of menu drop-downs (ui_menu_dd_t) */ 65 65 list_t menudds; 66 /** Callbacks */ 67 struct ui_menu_bar_cb *cb; 68 /** Callback argument */ 69 void *arg; 66 70 }; 67 71 -
uspace/lib/ui/src/menubar.c
r743f2cdd rec50d65e 1 1 /* 2 * Copyright (c) 202 3Jiri Svoboda2 * Copyright (c) 2024 Jiri Svoboda 3 3 * All rights reserved. 4 4 * … … 66 66 static ui_evclaim_t ui_menu_bar_ctl_kbd_event(void *, kbd_event_t *); 67 67 static ui_evclaim_t ui_menu_bar_ctl_pos_event(void *, pos_event_t *); 68 static void ui_menu_bar_activate_ev(ui_menu_bar_t *); 69 static void ui_menu_bar_deactivate_ev(ui_menu_bar_t *); 68 70 69 71 /** Menu bar control ops */ … … 131 133 ui_control_delete(mbar->control); 132 134 free(mbar); 135 } 136 137 /** Set menu bar callbacks. 138 * 139 * @param mbar Menu bar 140 * @param cb Callbacks 141 * @param arg Callback argument 142 */ 143 void ui_menu_bar_set_cb(ui_menu_bar_t *mbar, ui_menu_bar_cb_t *cb, void *arg) 144 { 145 mbar->cb = cb; 146 mbar->arg = arg; 133 147 } 134 148 … … 288 302 } 289 303 304 if (!mbar->active) 305 ui_menu_bar_activate_ev(mbar); 290 306 mbar->active = true; 291 307 } else { 308 if (mbar->active) 309 ui_menu_bar_deactivate_ev(mbar); 292 310 mbar->active = false; 293 311 } … … 640 658 641 659 (void) ui_menu_bar_paint(mbar); 660 ui_menu_bar_activate_ev(mbar); 642 661 } 643 662 … … 649 668 { 650 669 ui_menu_bar_select(mbar, NULL, false, 0); 670 ui_menu_bar_deactivate_ev(mbar); 651 671 } 652 672 … … 700 720 } 701 721 722 /** Send menu bar activate event. 723 * 724 * @param mbar Menu bar 725 */ 726 static void ui_menu_bar_activate_ev(ui_menu_bar_t *mbar) 727 { 728 if (mbar->cb != NULL && mbar->cb->activate != NULL) 729 mbar->cb->activate(mbar, mbar->arg); 730 } 731 732 /** Send menu bar deactivate event. 733 * 734 * @param mbar Menu bar 735 */ 736 static void ui_menu_bar_deactivate_ev(ui_menu_bar_t *mbar) 737 { 738 if (mbar->cb != NULL && mbar->cb->deactivate != NULL) 739 mbar->cb->deactivate(mbar, mbar->arg); 740 } 741 702 742 /** @} 703 743 */ -
uspace/lib/ui/src/window.c
r743f2cdd rec50d65e 1 1 /* 2 * Copyright (c) 202 3Jiri Svoboda2 * Copyright (c) 2024 Jiri Svoboda 3 3 * All rights reserved. 4 4 * … … 318 318 { 319 319 ui_window_t *window; 320 ui_window_t *pwindow = NULL; 320 321 display_info_t info; 321 322 gfx_coord2_t scr_dims; … … 505 506 *rwindow = window; 506 507 508 if (ui_is_fullscreen(ui)) 509 pwindow = ui_window_get_active(ui); 510 507 511 list_append(&window->lwindows, &ui->windows); 512 513 if (ui_is_fullscreen(ui)) { 514 /* Send unfocus event to previously active window */ 515 if (pwindow != NULL) 516 ui_window_send_unfocus(pwindow, 0); 517 } 518 508 519 return EOK; 509 520 error: … … 531 542 { 532 543 ui_t *ui; 544 ui_window_t *nwindow; 533 545 534 546 if (window == NULL) … … 558 570 if (ui_is_fullscreen(ui)) { 559 571 ui_paint(ui); 572 /* Send focus event to newly active window */ 573 nwindow = ui_window_get_active(ui); 574 if (nwindow != NULL) 575 ui_window_send_focus(nwindow, 0); 560 576 } 561 577
Note:
See TracChangeset
for help on using the changeset viewer.