Class KFGUI_FloatingWindow extends KFGUI_Page
	abstract;

var() string WindowTitle; // Title of this window.
var float DragOffset[2];
var KFGUI_FloatingWindowHeader HeaderComp;
var bool bDragWindow;

function InitMenu()
{
	Super.InitMenu();
	HeaderComp = new (Self) class'KFGUI_FloatingWindowHeader';
	AddComponent(HeaderComp);
}

function DrawMenu()
{
	Owner.CurrentStyle.RenderFramedWindow(Self);
	
	if (HeaderComp!=None)
	{
		HeaderComp.CompPos[3] = Owner.CurrentStyle.DefaultHeight;
		HeaderComp.YSize = HeaderComp.CompPos[3] / CompPos[3]; // Keep header height fit the window height.
	}
}

function SetWindowDrag(bool bDrag)
{
	bDragWindow = bDrag;
	if (bDrag)
	{
		DragOffset[0] = Owner.MousePosition.X-CompPos[0];
		DragOffset[1] = Owner.MousePosition.Y-CompPos[1];
	}
}

function bool CaptureMouse()
{
	if (bDragWindow && HeaderComp!=None) // Always keep focus on window frame now!
	{
		MouseArea = HeaderComp;
		return true;
	}
	return Super.CaptureMouse();
}

function PreDraw()
{
	if (bDragWindow)
	{
		XPosition = FClamp(Owner.MousePosition.X-DragOffset[0],0,InputPos[2]-CompPos[2]) / InputPos[2];
		YPosition = FClamp(Owner.MousePosition.Y-DragOffset[1],0,InputPos[3]-CompPos[3]) / InputPos[3];
	}
	Super.PreDraw();
}

defaultproperties
{
}