Changeset 8d1bcd7 in mainline for uspace/lib/ui/src/menubar.c
- Timestamp:
- 2023-09-26T20:26:55Z (22 months ago)
- Branches:
- master, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 5afc1aa
- Parents:
- ed1a948
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/lib/ui/src/menubar.c
red1a948 r8d1bcd7 48 48 #include <ui/menubar.h> 49 49 #include <ui/menudd.h> 50 #include <ui/wdecor.h> 50 51 #include <ui/window.h> 51 52 #include "../private/menubar.h" 52 53 #include "../private/resource.h" 54 #include "../private/wdecor.h" 55 #include "../private/window.h" 53 56 54 57 enum { … … 97 100 mbar->window = window; 98 101 list_initialize(&mbar->menudds); 102 103 if (window->mbar == NULL) 104 window->mbar = mbar; 105 99 106 *rmbar = mbar; 100 107 return EOK; … … 111 118 if (mbar == NULL) 112 119 return; 120 121 if (mbar->window->mbar == mbar) 122 mbar->window->mbar = NULL; 113 123 114 124 /* Destroy menu drop-downs */ … … 277 287 (void) ui_menu_dd_open(mbar->selected, &rect, idev_id); 278 288 } 279 } 289 290 mbar->active = true; 291 } else { 292 mbar->active = false; 293 } 294 } 295 296 void ui_menu_bar_select_first(ui_menu_bar_t *mbar, bool openup, 297 sysarg_t idev_id) 298 { 299 ui_menu_dd_t *mdd; 300 301 mdd = ui_menu_dd_first(mbar); 302 ui_menu_bar_select(mbar, mdd, openup, idev_id); 303 } 304 305 void ui_menu_bar_select_last(ui_menu_bar_t *mbar, bool openup, 306 sysarg_t idev_id) 307 { 308 ui_menu_dd_t *mdd; 309 310 mdd = ui_menu_dd_last(mbar); 311 ui_menu_bar_select(mbar, mdd, openup, idev_id); 312 } 313 314 void ui_menu_bar_select_sysmenu(ui_menu_bar_t *mbar, sysarg_t idev_id) 315 { 316 bool was_open; 317 318 ui_wdecor_sysmenu_hdl_set_active(mbar->window->wdecor, true); 319 was_open = mbar->selected != NULL && 320 ui_menu_dd_is_open(mbar->selected); 321 322 if (was_open) 323 ui_window_send_sysmenu(mbar->window, idev_id); 280 324 } 281 325 … … 296 340 297 341 nmdd = ui_menu_dd_prev(mbar->selected); 298 if (nmdd == NULL) 299 nmdd = ui_menu_dd_last(mbar); 342 if (nmdd == NULL) { 343 if ((mbar->window->wdecor->style & ui_wds_sysmenu_hdl) != 0) { 344 ui_menu_bar_select_sysmenu(mbar, idev_id); 345 } else { 346 nmdd = ui_menu_dd_last(mbar); 347 } 348 } 300 349 301 350 if (nmdd != mbar->selected) … … 319 368 320 369 nmdd = ui_menu_dd_next(mbar->selected); 321 if (nmdd == NULL) 322 nmdd = ui_menu_dd_first(mbar); 370 if (nmdd == NULL) { 371 if ((mbar->window->wdecor->style & ui_wds_sysmenu_hdl) != 0) { 372 ui_menu_bar_select_sysmenu(mbar, idev_id); 373 } else { 374 nmdd = ui_menu_dd_first(mbar); 375 } 376 } 323 377 324 378 if (nmdd != mbar->selected) … … 551 605 } 552 606 607 /** Deactivate menu bar. 608 * 609 * @param mbar Menu bar 610 */ 553 611 void ui_menu_bar_deactivate(ui_menu_bar_t *mbar) 554 612 { 555 613 ui_menu_bar_select(mbar, NULL, false, 0); 556 mbar->active = false;557 614 } 558 615
Note:
See TracChangeset
for help on using the changeset viewer.