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 { }