/*  GadTools layout toolkit
**
**  Copyright © 1993-1995 by Olaf `Olsen' Barthel
**  Freely distributable.
**
**  :ts=4
*/

#include "gtlayout_global.h"

#ifdef DO_MENUS

	/* LTP_FillSub(struct MenuItem *Item):
	 *
	 *	Fill in the submenu item IDs.
	 */

VOID __regargs
LTP_FillSub(struct MenuItem *Item)
{
	ULONG		 Count = 0;
	ItemNode	*Node;

	do
	{
		Node = (ItemNode *)((ULONG)Item - sizeof(struct MinNode));

		Node -> MenuCode = NOMENU | NOITEM | SHIFTSUB(Count);

		Count++;
	}
	while(Item = Item -> NextItem);
}

	/* FillItem(struct MenuItem *Item):
	 *
	 *	Fill in the menu item IDs.
	 */

VOID __regargs
LTP_FillItem(struct MenuItem *Item)
{
	ULONG		 Count = 0;
	ItemNode	*Node;

	do
	{
		Node = (ItemNode *)((ULONG)Item - sizeof(struct MinNode));

		Node -> MenuCode = NOMENU | SHIFTITEM(Count) | NOSUB;

		if(Item -> SubItem)
			LTP_FillSub(Item -> SubItem);

		Count++;
	}
	while(Item = Item -> NextItem);
}

	/* LTP_FillMenu(struct Menu *Menu):
	 *
	 *	Fill in the menu IDs.
	 */

VOID __regargs
LTP_FillMenu(struct Menu *Menu)
{
	ULONG		 Count = 0;
	MenuNode	*Node;

	do
	{
		Node = (MenuNode *)((ULONG)Menu - sizeof(struct MinNode));

		Node -> MenuCode = SHIFTMENU(Count) | NOITEM | NOSUB;

		if(Menu -> FirstItem)
			LTP_FillItem(Menu -> FirstItem);

		Count++;
	}
	while(Menu = Menu -> NextMenu);
}

#endif	/* DO_MENUS */
