mirror of
				https://github.com/labwc/labwc.git
				synced 2025-11-03 09:01:51 -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