mirror of
https://github.com/labwc/labwc.git
synced 2025-11-04 13:30:07 -05:00
menu: assert no menu is opened in menu_open_root()
66a3beb added an early-return when the menu is opened, so we can guarantee
that no menu is opened there.
This commit is contained in:
parent
4072a80eba
commit
8f5217c98b
1 changed files with 4 additions and 21 deletions
|
|
@ -1327,20 +1327,6 @@ menu_set_selection(struct menu *menu, struct menuitem *item)
|
||||||
menu->selection.item = item;
|
menu->selection.item = item;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
|
||||||
close_all_submenus(struct menu *menu)
|
|
||||||
{
|
|
||||||
struct menuitem *item;
|
|
||||||
wl_list_for_each(item, &menu->menuitems, link) {
|
|
||||||
if (item->submenu) {
|
|
||||||
wlr_scene_node_set_enabled(
|
|
||||||
&item->submenu->scene_tree->node, false);
|
|
||||||
close_all_submenus(item->submenu);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
menu->selection.menu = NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* We only destroy pipemenus when closing the entire menu-tree so that pipemenu
|
* We only destroy pipemenus when closing the entire menu-tree so that pipemenu
|
||||||
* are cached (for as long as the menu is open). This drastically improves the
|
* are cached (for as long as the menu is open). This drastically improves the
|
||||||
|
|
@ -1388,17 +1374,14 @@ menu_close(struct menu *menu)
|
||||||
void
|
void
|
||||||
menu_open_root(struct menu *menu, int x, int y)
|
menu_open_root(struct menu *menu, int x, int y)
|
||||||
{
|
{
|
||||||
|
assert(menu);
|
||||||
|
|
||||||
if (menu->server->input_mode != LAB_INPUT_STATE_PASSTHROUGH) {
|
if (menu->server->input_mode != LAB_INPUT_STATE_PASSTHROUGH) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
assert(menu);
|
assert(!menu->server->menu_current);
|
||||||
if (menu->server->menu_current) {
|
|
||||||
menu_close(menu->server->menu_current);
|
|
||||||
destroy_pipemenus(menu->server);
|
|
||||||
}
|
|
||||||
close_all_submenus(menu);
|
|
||||||
menu_set_selection(menu, NULL);
|
|
||||||
menu_configure(menu, (struct wlr_box){.x = x, .y = y});
|
menu_configure(menu, (struct wlr_box){.x = x, .y = y});
|
||||||
wlr_scene_node_set_enabled(&menu->scene_tree->node, true);
|
wlr_scene_node_set_enabled(&menu->scene_tree->node, true);
|
||||||
menu->server->menu_current = menu;
|
menu->server->menu_current = menu;
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue