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

#include "gtlayout_global.h"

ULONG __asm __saveds
LTP_DefaultHistoryHook(register __a0 struct Hook *Hook,register __a1 STRPTR NewString,register __a2 struct Gadget *Gadget)
{
	ObjectNode		*Node	= (ObjectNode *)Gadget -> UserData;
	struct LayoutHandle	*Handle = Node -> Special . String . LayoutHandle;
	struct MinList		*List	= (struct MinList *)Hook -> h_Data;

	if(NewString)
	{
		ULONG *Data;

		if(Data = (ULONG *)LTP_Alloc(Handle,sizeof(ULONG) + sizeof(struct Node) + strlen(NewString) + 1))
		{
			struct Node *NewNode;

			*Data++ = sizeof(ULONG) + sizeof(struct Node) + strlen(NewString) + 1;

			NewNode = (struct Node *)Data;

			NewNode -> ln_Name = (STRPTR)(NewNode + 1);

			strcpy(NewNode -> ln_Name,NewString);

			AddTail((struct List *)List,NewNode);
		}
		else
			return(FALSE);
	}
	else
	{
		if(List -> mlh_Head -> mln_Succ)
		{
			ULONG *Data = (ULONG *)RemHead((struct List *)List);

			LTP_Free(Handle,&Data[-1],Data[-1]);
		}
	}

	return(TRUE);
}
