Пример #1
0
// Find a menu by userdata ID
struct MenuItem *find_menu_item(
	struct Menu *menu,
	UWORD id)
{
	// Go through all menus
	for (;menu;menu=menu->NextMenu)
	{
		struct MenuItem *item;

		// Is this what we're looking for?
		if (id==(UWORD)GTMENU_USERDATA(menu)) return (struct MenuItem *)menu;

		// Go through items
		for (item=menu->FirstItem;item;item=item->NextItem)
		{
			struct MenuItem *sub;

			// Is this what we're looking for?
			if (id==(UWORD)GTMENUITEM_USERDATA(item)) return item;

			// Go through sub items
			for (sub=item->SubItem;sub;sub=sub->NextItem)
			{
				// Is this what we're looking for?
				if (id==(UWORD)GTMENUITEM_USERDATA(sub)) return sub;
			}
		}
	}

	// Not found
	return 0;
}
Пример #2
0
struct Menu * makemenutitle(struct NewMenu * newmenu,
                            struct TagItem * taglist)
{
    struct Menu	* menu = NULL;
    ULONG	* p;

    p = (ULONG *)AllocMem(sizeof(ULONG)+sizeof(struct Menu)+sizeof(APTR), MEMF_CLEAR);

    if (NULL != p)
    {
	*p = 0;
	menu = (struct Menu *)(p + 1);
	menu->Flags    	      = (newmenu->nm_Flags & NM_MENUDISABLED) ^ MENUENABLED;
	menu->MenuName 	      = newmenu->nm_Label;
	GTMENU_USERDATA(menu) = newmenu->nm_UserData;
    }

    return menu;
}
Пример #3
0
struct Menu * makemenutitle(struct NewMenu * newmenu,
                            UBYTE		**MyMenuMemPtr,
                            struct TagItem * taglist)
{
    struct Menu	* menu = NULL;
    ULONG	* p;

    p =(ULONG*) *MyMenuMemPtr;
    memset(p,0,sizeof(ULONG)+sizeof(struct Menu)+sizeof(APTR));
    *MyMenuMemPtr += sizeof(ULONG)+sizeof(struct Menu)+sizeof(APTR);

    *p = 0;
    menu = (struct Menu *)(p + 1);
    menu->Flags    	      = (newmenu->nm_Flags & NM_MENUDISABLED) ^ MENUENABLED;
    menu->MenuName 	      = newmenu->nm_Label;
    GTMENU_USERDATA(menu) = newmenu->nm_UserData;

    return menu;
}