//===============================================================================
// Xe UI toolkit
//
// XeManager
//  Private header file
//
// AUTHOR:  Gabor Nagy
// DATE:    2026-Jun-07 19:17:18
//
// Copyright (C) 1996-2026 by Gabor Nagy. All rights reserved.
//===============================================================================

#ifndef _XeManagerP_h
#define _XeManagerP_h

#include <Xe/BaseP.h>
#include <Xe/CompositeP.h>
#include <Xe/Manager.h>


#if defined (__cplusplus) && (!(defined (__CPLUSLIBS)))
extern "C" {
#endif


//================================
// Class definition
//================================
// Class part
//================================
typedef struct _XeManagerClassPart
{
	EPointer  Extension;
} XeManagerClassPart;


//================================
// Class record
//================================
typedef struct _XeManagerClassRec
{
	XeCompositeClassCore;
	XeConstraintClassPart  Constraint;
	XeManagerClassPart     Manager;
} XeManagerClassRec;

extern XeManagerClassRec  _XeManagerWidget_class;


typedef struct
{
	XeWidget  ClipW;     // XeManagerWidget for clipping the header if tha parent (XeScrolledWindow) has inward shadows etc.
	EList_s(, XeWidget, Buttons);
	XeCoord2  Position, Size, MarginSize;
	int       Spacing;
	int       MarginLeft, MarginRight,  MarginTop, MarginBottom;
} XeRowColHeader;




//================================
// Instance definition
//================================
// Instance part
//================================
typedef struct
{
// Resources
//


// Private variables
//
	EList(, XeWidget, ManagedChildren);              // List of managed Widget children. This makes our life easier...
	XeWidget        ChildWithFocus;

	XeRowColHeader  TopHeader;

	XeCoord2        MinSize,  MaxSize;
} XeManagerPart;


//================================
// Instance record
//================================
typedef struct _XeManagerRec
{
	XeCompositeWidgetCore;

	XeBasePart     Base;
	XeManagerPart  Manager;
} XeManagerRec;


extern void   XeManager_GetManagedChildren(XeManagerWidget PEW);


#if defined (__cplusplus) && (!(defined (__CPLUSLIBS)))
} // Close scope of 'extern "C"' declaration
#endif

#endif // _XeManagerP_h
