summaryrefslogtreecommitdiff
path: root/alf/alflayout.cpp
diff options
context:
space:
mode:
authorJonas Kümmerlin <jonas@kuemmerlin.eu>2020-06-01 10:56:58 +0200
committerJonas Kümmerlin <jonas@kuemmerlin.eu>2020-06-01 10:56:58 +0200
commitf0319406c56cdaf6b91e35ef657c6570c1ebdf23 (patch)
tree46afc203388b2969ff5e34e68e2ba5c1434c3fe4 /alf/alflayout.cpp
parent960d6984b373207f1f0cbca39e458f05e623390e (diff)
layout code reorganization and renaming
s/Widget/Control/ throughout the code. Only the widget factory gets to keep its name for now.
Diffstat (limited to 'alf/alflayout.cpp')
-rw-r--r--alf/alflayout.cpp420
1 files changed, 292 insertions, 128 deletions
diff --git a/alf/alflayout.cpp b/alf/alflayout.cpp
index a390890..6f35345 100644
--- a/alf/alflayout.cpp
+++ b/alf/alflayout.cpp
@@ -10,58 +10,58 @@ static void
ALF_Layout_EnsureColumnExists(ALFLayout *layout, int colno);
static BOOL
-ALF_Layout_GetWidgetPos(ALFLayout *layout, HWND window, HWND needle, POINT *p);
+ALF_Layout_GetControlPosPriv(ALFLayout *layout, HWND window, HWND needle, POINT *p);
static BOOL
-ALF_Layout_SetWidgetPos(ALFLayout *layout, HWND window, HWND needle, POINT *p);
+ALF_Layout_SetControlPosPriv(ALFLayout *layout, HWND window, HWND needle, POINT *p);
static BOOL
-ALF_Layout_GetWidgetSize(ALFLayout *layout, HWND window, HWND needle, SIZE *s);
+ALF_Layout_GetControlSizePriv(ALFLayout *layout, HWND window, HWND needle, SIZE *s);
static BOOL
-ALF_Layout_SetWidgetSize(ALFLayout *layout, HWND window, HWND needle, SIZE *s);
+ALF_Layout_SetControlSizePriv(ALFLayout *layout, HWND window, HWND needle, SIZE *s);
static DWORD
-ALF_Layout_GetWidgetFlags(ALFLayout *layout, HWND window, HWND needle);
+ALF_Layout_GetControlFlagsPriv(ALFLayout *layout, HWND window, HWND needle);
static BOOL
-ALF_Layout_SetWidgetFlags(ALFLayout *layout, HWND window, HWND needle, DWORD flags);
+ALF_Layout_SetControlFlagsPriv(ALFLayout *layout, HWND window, HWND needle, DWORD flags);
static int
-ALF_Layout_GetColumnSize(ALFLayout *layout, HWND window, int colno);
+ALF_Layout_GetColumnSizePriv(ALFLayout *layout, HWND window, int colno);
static BOOL
-ALF_Layout_SetColumnSize(ALFLayout *layout, HWND window, int colno, int size);
+ALF_Layout_SetColumnSizePriv(ALFLayout *layout, HWND window, int colno, int size);
static int
-ALF_Layout_GetColumnExpand(ALFLayout *layout, HWND window, int colno);
+ALF_Layout_GetColumnExpandPriv(ALFLayout *layout, HWND window, int colno);
static BOOL
-ALF_Layout_SetColumnExpand(ALFLayout *layout, HWND window, int colno, int expand);
+ALF_Layout_SetColumnExpandPriv(ALFLayout *layout, HWND window, int colno, int expand);
static DWORD
-ALF_Layout_GetColumnFlags(ALFLayout *layout, HWND window, int colno);
+ALF_Layout_GetColumnFlagsPriv(ALFLayout *layout, HWND window, int colno);
static BOOL
-ALF_Layout_SetColumnFlags(ALFLayout *layout, HWND window, int colno, DWORD flags);
+ALF_Layout_SetColumnFlagsPriv(ALFLayout *layout, HWND window, int colno, DWORD flags);
static int
-ALF_Layout_GetRowSize(ALFLayout *layout, HWND window, int rowno);
+ALF_Layout_GetRowSizePriv(ALFLayout *layout, HWND window, int rowno);
static BOOL
-ALF_Layout_SetRowSize(ALFLayout *layout, HWND window, int rowno, int size);
+ALF_Layout_SetRowSizePriv(ALFLayout *layout, HWND window, int rowno, int size);
static int
-ALF_Layout_GetRowExpand(ALFLayout *layout, HWND window, int rowno);
+ALF_Layout_GetRowExpandPriv(ALFLayout *layout, HWND window, int rowno);
static BOOL
-ALF_Layout_SetRowExpand(ALFLayout *layout, HWND window, int rowno, int expand);
+ALF_Layout_SetRowExpandPriv(ALFLayout *layout, HWND window, int rowno, int expand);
static DWORD
-ALF_Layout_GetRowFlags(ALFLayout *layout, HWND window, int rowno);
+ALF_Layout_GetRowFlagsPriv(ALFLayout *layout, HWND window, int rowno);
static BOOL
-ALF_Layout_SetRowFlags(ALFLayout *layout, HWND window, int rowno, DWORD flags);
+ALF_Layout_SetRowFlagsPriv(ALFLayout *layout, HWND window, int rowno, DWORD flags);
static void
ALF_Layout_HandleBackgroundChange(ALFLayout *layout, HWND window);
@@ -70,7 +70,7 @@ void
ALF_Layout_Init(ALFLayout *layout)
{
ZeroMemory(layout, sizeof(*layout));
- ALF_ListInit(&layout->widgets);
+ ALF_ListInit(&layout->controls);
layout->nRows = 1;
layout->rows = ALF_New(ALFLayoutRowOrColumn, (SIZE_T)layout->nRows);
@@ -83,10 +83,10 @@ ALF_Layout_Init(ALFLayout *layout)
void
ALF_Layout_Clear(ALFLayout *layout)
{
- ALF_FOR_LIST(ALFWidgetPriv, list, &layout->widgets, w) {
+ ALF_FOR_LIST(ALFControlPriv, list, &layout->controls, w) {
ALF_Free(w);
}
- ALF_ListInit(&layout->widgets);
+ ALF_ListInit(&layout->controls);
ALF_Free(layout->columns);
ALF_Free(layout->rows);
layout->columns = NULL;
@@ -96,12 +96,12 @@ ALF_Layout_Clear(ALFLayout *layout)
}
static void
-ALF_Layout_ForwardFontToWidget(ALFLayout *layout, HWND window, ALFWidgetPriv *widget, HFONT font, LPARAM redraw)
+ALF_Layout_ForwardFontToControl(ALFLayout *layout, HWND window, ALFControlPriv *control, HFONT font, LPARAM redraw)
{
- if (widget->flags & ALF_LAYOUT_INHERITFONT) {
- SendMessage(widget->hwnd, WM_SETFONT, (WPARAM)font, redraw);
+ if (control->flags & ALF_LAYOUT_INHERITFONT) {
+ SendMessage(control->hwnd, WM_SETFONT, (WPARAM)font, redraw);
- switch (widget->flags & ALF_LAYOUT_SIZETYPE_MASK) {
+ switch (control->flags & ALF_LAYOUT_SIZETYPE_MASK) {
case ALF_LAYOUT_SIZE_EDIT:
case ALF_LAYOUT_SIZE_CHECKBOX:
ALF_Layout_Invalidate(layout, window);
@@ -118,8 +118,8 @@ ALF_Layout_ForwardFont(ALFLayout *layout, HWND window, HFONT font, LPARAM redraw
{
(void)window;
- ALF_FOR_LIST(ALFWidgetPriv, list, &layout->widgets, i) {
- ALF_Layout_ForwardFontToWidget(layout, window, i, font, redraw);
+ ALF_FOR_LIST(ALFControlPriv, list, &layout->controls, i) {
+ ALF_Layout_ForwardFontToControl(layout, window, i, font, redraw);
}
}
@@ -128,7 +128,7 @@ ALF_Layout_ForwardBgColor(ALFLayout *layout, HWND window, WPARAM wparam, LPARAM
{
(void)window;
- ALF_FOR_LIST(ALFWidgetPriv, list, &layout->widgets, i) {
+ ALF_FOR_LIST(ALFControlPriv, list, &layout->controls, i) {
if (i->flags & ALF_LAYOUT_INHERITBGCOLOR) {
SendMessage(i->hwnd, ALF_WM_SETBGCOLOR, wparam, lparam);
}
@@ -138,7 +138,7 @@ ALF_Layout_ForwardBgColor(ALFLayout *layout, HWND window, WPARAM wparam, LPARAM
static void
ALF_Layout_ForwardDpiChange(ALFLayout *layout, HWND window, WPARAM wparam, LPARAM lparam)
{
- ALF_FOR_LIST(ALFWidgetPriv, list, &layout->widgets, i) {
+ ALF_FOR_LIST(ALFControlPriv, list, &layout->controls, i) {
if (i->flags & ALF_LAYOUT_SENDDPICHANGE) {
SendMessage(i->hwnd, ALF_WM_DPICHANGE, wparam, lparam);
}
@@ -154,7 +154,7 @@ ALF_Layout_HandleBackgroundChange(ALFLayout *layout, HWND window)
{
(void)window;
- ALF_FOR_LIST(ALFWidgetPriv, list, &layout->widgets, i) {
+ ALF_FOR_LIST(ALFControlPriv, list, &layout->controls, i) {
if (i->flags & ALF_LAYOUT_TRANSPARENTBG) {
InvalidateRect(i->hwnd, NULL, TRUE);
}
@@ -297,7 +297,7 @@ ALF_Layout_CalcButtonSize(HWND hwndWindow, ALFLayout *layout, HWND hwndButton, S
}
static void
-ALF_Layout_CalcMinWidgetSize(ALFLayout *layout, ALFWidgetPriv *c, HWND window)
+ALF_Layout_CalcMinControlSize(ALFLayout *layout, ALFControlPriv *c, HWND window)
{
if (c->flags & ALF_LAYOUT_SIZE_PX) {
c->calculatedSize.cx = c->width;
@@ -366,12 +366,12 @@ ALF_Layout_CalcSizes(ALFLayout* layout, HWND window)
layout->biggestRowNo = i;
}
- ALF_FOR_LIST(ALFWidgetPriv, list, &layout->widgets, c) {
- ALF_Layout_CalcMinWidgetSize(layout, c, window);
+ ALF_FOR_LIST(ALFControlPriv, list, &layout->controls, c) {
+ ALF_Layout_CalcMinControlSize(layout, c, window);
if (c->x < 0 || c->y < 0) {
- if (layout->handleContainerWidgetSize)
- layout->handleContainerWidgetSize(layout, window, c->hwnd, &c->calculatedSize);
+ if (layout->handleContainerControlSize)
+ layout->handleContainerControlSize(layout, window, c->hwnd, &c->calculatedSize);
} else {
if (c->xspan <= 1) {
ALF_Layout_EnsureColumnExists(layout, c->x);
@@ -390,7 +390,7 @@ ALF_Layout_CalcSizes(ALFLayout* layout, HWND window)
}
// second pass for spanning cells
- ALF_FOR_LIST(ALFWidgetPriv, list, &layout->widgets, c) {
+ ALF_FOR_LIST(ALFControlPriv, list, &layout->controls, c) {
if (c->xspan > 1) {
ALF_Layout_EnsureColumnExists(layout, c->x + c->xspan - 1);
@@ -529,26 +529,26 @@ ALF_Layout_Apply(ALFLayout* layout, HWND window)
if (layout->layoutValididityFlags & ALF_LAYOUT_NEED_RECALC)
ALF_Layout_CalcSizes(layout, window);
- GetClientRect(window, &layout->allocatedWidgetRect);
- layout->allocatedWidgetRect.left += layout->containerMargins.left;
- layout->allocatedWidgetRect.right -= layout->containerMargins.right;
- layout->allocatedWidgetRect.top += layout->containerMargins.top;
- layout->allocatedWidgetRect.bottom -= layout->containerMargins.bottom;
+ GetClientRect(window, &layout->allocatedControlRect);
+ layout->allocatedControlRect.left += layout->containerMargins.left;
+ layout->allocatedControlRect.right -= layout->containerMargins.right;
+ layout->allocatedControlRect.top += layout->containerMargins.top;
+ layout->allocatedControlRect.bottom -= layout->containerMargins.bottom;
// FIXME! can that happen?
- if (layout->allocatedWidgetRect.right < layout->allocatedWidgetRect.left)
- layout->allocatedWidgetRect.right = layout->allocatedWidgetRect.left;
- if (layout->allocatedWidgetRect.bottom < layout->allocatedWidgetRect.top)
- layout->allocatedWidgetRect.bottom = layout->allocatedWidgetRect.top;
+ if (layout->allocatedControlRect.right < layout->allocatedControlRect.left)
+ layout->allocatedControlRect.right = layout->allocatedControlRect.left;
+ if (layout->allocatedControlRect.bottom < layout->allocatedControlRect.top)
+ layout->allocatedControlRect.bottom = layout->allocatedControlRect.top;
// distribute extra space
int extraWidth = 0;
int extraHeight = 0;
- if (layout->allocatedWidgetRect.right - layout->allocatedWidgetRect.left > layout->totalMinWidth)
- extraWidth = layout->allocatedWidgetRect.right - layout->allocatedWidgetRect.left - layout->totalMinWidth;
- if (layout->allocatedWidgetRect.bottom - layout->allocatedWidgetRect.top > layout->totalMinHeight)
- extraHeight = layout->allocatedWidgetRect.bottom - layout->allocatedWidgetRect.top - layout->totalMinHeight;
+ if (layout->allocatedControlRect.right - layout->allocatedControlRect.left > layout->totalMinWidth)
+ extraWidth = layout->allocatedControlRect.right - layout->allocatedControlRect.left - layout->totalMinWidth;
+ if (layout->allocatedControlRect.bottom - layout->allocatedControlRect.top > layout->totalMinHeight)
+ extraHeight = layout->allocatedControlRect.bottom - layout->allocatedControlRect.top - layout->totalMinHeight;
int extraWidthLeft = extraWidth;
for (int i = 0; i < layout->nColumns; ++i) {
@@ -581,21 +581,21 @@ ALF_Layout_Apply(ALFLayout* layout, HWND window)
layout->rows[layout->biggestRowNo].calculatedMinWidth + extraHeightLeft;
// set row/column positions
- int x = layout->allocatedWidgetRect.left;
+ int x = layout->allocatedControlRect.left;
for (int i = 0; i < layout->nColumns; ++i) {
layout->columns[i].allocatedPosition = x;
x += layout->columns[i].allocatedWidth;
}
- int y = layout->allocatedWidgetRect.top;
+ int y = layout->allocatedControlRect.top;
for (int i = 0; i < layout->nRows; ++i) {
layout->rows[i].allocatedPosition = y;
y += layout->rows[i].allocatedWidth;
}
- // now apply positions to widgets
+ // now apply positions to controls
HDWP hdwp = BeginDeferWindowPos(layout->nColumns * layout->nRows);
- ALF_FOR_LIST(ALFWidgetPriv, list, &layout->widgets, c) {
+ ALF_FOR_LIST(ALFControlPriv, list, &layout->controls, c) {
int col = c->x;
int row = c->y;
int colspan = c->xspan;
@@ -609,8 +609,8 @@ ALF_Layout_Apply(ALFLayout* layout, HWND window)
RECT r = { 0,0,0,0 };
if (row < 0 || col < 0) {
- if (layout->preApplyLayoutToContainerWidget)
- layout->preApplyLayoutToContainerWidget(layout, window, c->hwnd, &r);
+ if (layout->preApplyLayoutToContainerControl)
+ layout->preApplyLayoutToContainerControl(layout, window, c->hwnd, &r);
} else {
r.left = layout->columns[col].allocatedPosition;
r.right = layout->columns[col+colspan-1].allocatedPosition + layout->columns[col+colspan-1].allocatedWidth;
@@ -627,7 +627,7 @@ ALF_Layout_Apply(ALFLayout* layout, HWND window)
if (!ALF_Compat_IsMinWindowsVersion(4, 0))
flags |= SWP_NOCOPYBITS;
- // transparent background: invalidate if widget moved
+ // transparent background: invalidate if control moved
if (layout->bgcolor == ALF_COLOR_TRANSPARENT) {
RECT oldR;
GetWindowRect(c->hwnd, &oldR);
@@ -656,9 +656,9 @@ ALF_Layout_Apply(ALFLayout* layout, HWND window)
}
void
-ALF_Layout_AddWidget(ALFLayout* layout, HWND window, const ALFAddWidgetParams* params)
+ALF_Layout_AddControl(ALFLayout* layout, HWND window, const ALFAddControlParams* params)
{
- ALFWidgetPriv *w = ALF_New(ALFWidgetPriv, 1);
+ ALFControlPriv *w = ALF_New(ALFControlPriv, 1);
w->hwnd = params->hwnd;
w->x = params->x;
w->y = params->y;
@@ -670,7 +670,7 @@ ALF_Layout_AddWidget(ALFLayout* layout, HWND window, const ALFAddWidgetParams* p
SetParent(w->hwnd, window);
if (w->flags & ALF_LAYOUT_INHERITFONT) {
- ALF_Layout_ForwardFontToWidget(layout, window, w, layout->font, 0);
+ ALF_Layout_ForwardFontToControl(layout, window, w, layout->font, 0);
}
if (w->flags & ALF_LAYOUT_INHERITBGCOLOR) {
SendMessage(w->hwnd, ALF_WM_SETBGCOLOR, 0, (LPARAM)layout->bgcolor);
@@ -679,15 +679,15 @@ ALF_Layout_AddWidget(ALFLayout* layout, HWND window, const ALFAddWidgetParams* p
SendMessage(w->hwnd, ALF_WM_DPICHANGE, 0, (LPARAM)layout->dpi);
}
- ALF_ListInsert(layout->widgets.prev, &w->list);
+ ALF_ListInsert(layout->controls.prev, &w->list);
ALF_Layout_Invalidate(layout, window);
}
HWND
-ALF_Layout_WidgetAtPos(ALFLayout* layout, int x, int y)
+ALF_Layout_ControlAtPosPriv(ALFLayout* layout, int x, int y)
{
- ALF_FOR_LIST(ALFWidgetPriv, list, &layout->widgets, w) {
+ ALF_FOR_LIST(ALFControlPriv, list, &layout->controls, w) {
if (w->x == x && w->y == y) {
return w->hwnd;
}
@@ -743,11 +743,11 @@ ALF_Layout_GetMinSize(ALFLayout *layout, HWND window, SIZE *size)
}
BOOL
-ALF_Layout_GetWidgetPos(ALFLayout *layout, HWND window, HWND needle, POINT *p)
+ALF_Layout_GetControlPosPriv(ALFLayout *layout, HWND window, HWND needle, POINT *p)
{
(void)window;
- ALF_FOR_LIST(ALFWidgetPriv, list, &layout->widgets, w) {
+ ALF_FOR_LIST(ALFControlPriv, list, &layout->controls, w) {
if (w->hwnd == needle) {
p->x = w->x;
p->y = w->y;
@@ -759,9 +759,9 @@ ALF_Layout_GetWidgetPos(ALFLayout *layout, HWND window, HWND needle, POINT *p)
}
static BOOL
-ALF_Layout_SetWidgetPos(ALFLayout *layout, HWND window, HWND needle, POINT *p)
+ALF_Layout_SetControlPosPriv(ALFLayout *layout, HWND window, HWND needle, POINT *p)
{
- ALF_FOR_LIST(ALFWidgetPriv, list, &layout->widgets, w) {
+ ALF_FOR_LIST(ALFControlPriv, list, &layout->controls, w) {
if (w->hwnd == needle) {
w->x = p->x;
w->y = p->y;
@@ -776,11 +776,11 @@ ALF_Layout_SetWidgetPos(ALFLayout *layout, HWND window, HWND needle, POINT *p)
}
BOOL
-ALF_Layout_GetWidgetSpan(ALFLayout *layout, HWND window, HWND needle, POINT *p)
+ALF_Layout_GetControlSpanPriv(ALFLayout *layout, HWND window, HWND needle, POINT *p)
{
(void)window;
- ALF_FOR_LIST(ALFWidgetPriv, list, &layout->widgets, w) {
+ ALF_FOR_LIST(ALFControlPriv, list, &layout->controls, w) {
if (w->hwnd == needle) {
p->x = w->xspan;
p->y = w->yspan;
@@ -792,9 +792,9 @@ ALF_Layout_GetWidgetSpan(ALFLayout *layout, HWND window, HWND needle, POINT *p)
}
static BOOL
-ALF_Layout_SetWidgetSpan(ALFLayout *layout, HWND window, HWND needle, POINT *p)
+ALF_Layout_SetControlSpanPriv(ALFLayout *layout, HWND window, HWND needle, POINT *p)
{
- ALF_FOR_LIST(ALFWidgetPriv, list, &layout->widgets, w) {
+ ALF_FOR_LIST(ALFControlPriv, list, &layout->controls, w) {
if (w->hwnd == needle) {
w->xspan = p->x;
w->yspan = p->y;
@@ -809,11 +809,11 @@ ALF_Layout_SetWidgetSpan(ALFLayout *layout, HWND window, HWND needle, POINT *p)
}
static BOOL
-ALF_Layout_GetWidgetSize(ALFLayout *layout, HWND window, HWND needle, SIZE *s)
+ALF_Layout_GetControlSizePriv(ALFLayout *layout, HWND window, HWND needle, SIZE *s)
{
(void)window;
- ALF_FOR_LIST(ALFWidgetPriv, list, &layout->widgets, w) {
+ ALF_FOR_LIST(ALFControlPriv, list, &layout->controls, w) {
if (w->hwnd == needle) {
s->cx = w->width;
s->cy = w->height;
@@ -825,9 +825,9 @@ ALF_Layout_GetWidgetSize(ALFLayout *layout, HWND window, HWND needle, SIZE *s)
}
static BOOL
-ALF_Layout_SetWidgetSize(ALFLayout *layout, HWND window, HWND needle, SIZE *s)
+ALF_Layout_SetControlSizePriv(ALFLayout *layout, HWND window, HWND needle, SIZE *s)
{
- ALF_FOR_LIST(ALFWidgetPriv, list, &layout->widgets, w) {
+ ALF_FOR_LIST(ALFControlPriv, list, &layout->controls, w) {
if (w->hwnd == needle) {
w->width = s->cx;
w->height = s->cy;
@@ -842,11 +842,11 @@ ALF_Layout_SetWidgetSize(ALFLayout *layout, HWND window, HWND needle, SIZE *s)
}
static DWORD
-ALF_Layout_GetWidgetFlags(ALFLayout *layout, HWND window, HWND needle)
+ALF_Layout_GetControlFlagsPriv(ALFLayout *layout, HWND window, HWND needle)
{
(void)window;
- ALF_FOR_LIST(ALFWidgetPriv, list, &layout->widgets, w) {
+ ALF_FOR_LIST(ALFControlPriv, list, &layout->controls, w) {
if (w->hwnd == needle) {
return w->flags;
}
@@ -856,14 +856,14 @@ ALF_Layout_GetWidgetFlags(ALFLayout *layout, HWND window, HWND needle)
}
static BOOL
-ALF_Layout_SetWidgetFlags(ALFLayout *layout, HWND window, HWND needle, DWORD flags)
+ALF_Layout_SetControlFlagsPriv(ALFLayout *layout, HWND window, HWND needle, DWORD flags)
{
- ALF_FOR_LIST(ALFWidgetPriv, list, &layout->widgets, w) {
+ ALF_FOR_LIST(ALFControlPriv, list, &layout->controls, w) {
if (w->hwnd == needle) {
w->flags = flags;
if (flags & ALF_LAYOUT_INHERITFONT)
- ALF_Layout_ForwardFontToWidget(layout, window, w, layout->font, 0);
+ ALF_Layout_ForwardFontToControl(layout, window, w, layout->font, 0);
if (flags & ALF_LAYOUT_INHERITBGCOLOR)
SendMessage(w->hwnd, ALF_WM_SETBGCOLOR, 0, (LPARAM)layout->bgcolor);
if (flags & ALF_LAYOUT_SENDDPICHANGE)
@@ -879,7 +879,7 @@ ALF_Layout_SetWidgetFlags(ALFLayout *layout, HWND window, HWND needle, DWORD fla
}
int
-ALF_Layout_GetColumnSize(ALFLayout *layout, HWND window, int colno)
+ALF_Layout_GetColumnSizePriv(ALFLayout *layout, HWND window, int colno)
{
(void)window;
@@ -890,7 +890,7 @@ ALF_Layout_GetColumnSize(ALFLayout *layout, HWND window, int colno)
}
BOOL
-ALF_Layout_SetColumnSize(ALFLayout *layout, HWND window, int colno, int size)
+ALF_Layout_SetColumnSizePriv(ALFLayout *layout, HWND window, int colno, int size)
{
ALF_Layout_EnsureColumnExists(layout, colno);
@@ -902,7 +902,7 @@ ALF_Layout_SetColumnSize(ALFLayout *layout, HWND window, int colno, int size)
}
int
-ALF_Layout_GetColumnExpand(ALFLayout *layout, HWND window, int colno)
+ALF_Layout_GetColumnExpandPriv(ALFLayout *layout, HWND window, int colno)
{
(void)window;
@@ -913,7 +913,7 @@ ALF_Layout_GetColumnExpand(ALFLayout *layout, HWND window, int colno)
}
static BOOL
-ALF_Layout_SetColumnExpand(ALFLayout *layout, HWND window, int colno, int expand)
+ALF_Layout_SetColumnExpandPriv(ALFLayout *layout, HWND window, int colno, int expand)
{
ALF_Layout_EnsureColumnExists(layout, colno);
@@ -925,7 +925,7 @@ ALF_Layout_SetColumnExpand(ALFLayout *layout, HWND window, int colno, int expand
}
static DWORD
-ALF_Layout_GetColumnFlags(ALFLayout *layout, HWND window, int colno)
+ALF_Layout_GetColumnFlagsPriv(ALFLayout *layout, HWND window, int colno)
{
(void)window;
@@ -936,7 +936,7 @@ ALF_Layout_GetColumnFlags(ALFLayout *layout, HWND window, int colno)
}
static BOOL
-ALF_Layout_SetColumnFlags(ALFLayout *layout, HWND window, int colno, DWORD flags)
+ALF_Layout_SetColumnFlagsPriv(ALFLayout *layout, HWND window, int colno, DWORD flags)
{
ALF_Layout_EnsureColumnExists(layout, colno);
@@ -948,7 +948,7 @@ ALF_Layout_SetColumnFlags(ALFLayout *layout, HWND window, int colno, DWORD flags
}
static int
-ALF_Layout_GetRowSize(ALFLayout *layout, HWND window, int rowno)
+ALF_Layout_GetRowSizePriv(ALFLayout *layout, HWND window, int rowno)
{
(void)window;
@@ -959,7 +959,7 @@ ALF_Layout_GetRowSize(ALFLayout *layout, HWND window, int rowno)
}
static BOOL
-ALF_Layout_SetRowSize(ALFLayout *layout, HWND window, int rowno, int size)
+ALF_Layout_SetRowSizePriv(ALFLayout *layout, HWND window, int rowno, int size)
{
ALF_Layout_EnsureRowExists(layout, rowno);
@@ -971,7 +971,7 @@ ALF_Layout_SetRowSize(ALFLayout *layout, HWND window, int rowno, int size)
}
static int
-ALF_Layout_GetRowExpand(ALFLayout *layout, HWND window, int rowno)
+ALF_Layout_GetRowExpandPriv(ALFLayout *layout, HWND window, int rowno)
{
(void)window;
@@ -982,7 +982,7 @@ ALF_Layout_GetRowExpand(ALFLayout *layout, HWND window, int rowno)
}
static BOOL
-ALF_Layout_SetRowExpand(ALFLayout *layout, HWND window, int rowno, int expand)
+ALF_Layout_SetRowExpandPriv(ALFLayout *layout, HWND window, int rowno, int expand)
{
ALF_Layout_EnsureRowExists(layout, rowno);
@@ -994,7 +994,7 @@ ALF_Layout_SetRowExpand(ALFLayout *layout, HWND window, int rowno, int expand)
}
static DWORD
-ALF_Layout_GetRowFlags(ALFLayout *layout, HWND window, int rowno)
+ALF_Layout_GetRowFlagsPriv(ALFLayout *layout, HWND window, int rowno)
{
(void)window;
@@ -1005,7 +1005,7 @@ ALF_Layout_GetRowFlags(ALFLayout *layout, HWND window, int rowno)
}
static BOOL
-ALF_Layout_SetRowFlags(ALFLayout *layout, HWND window, int rowno, DWORD flags)
+ALF_Layout_SetRowFlagsPriv(ALFLayout *layout, HWND window, int rowno, DWORD flags)
{
ALF_Layout_EnsureRowExists(layout, rowno);
@@ -1031,18 +1031,13 @@ ALF_Layout_HandleMessage(ALFLayout *layout, HWND hwnd, UINT msg, WPARAM wparam,
return TRUE;
}
- if (msg == ALF_WM_APPLYLAYOUT) {
- ALF_Layout_Apply(layout, hwnd);
+ if (msg == ALF_WM_ADDCONTROL) {
+ ALF_Layout_AddControl(layout, hwnd, (ALFAddControlParams *)lparam);
return TRUE;
}
- if (msg == ALF_WM_ADDWIDGET) {
- ALF_Layout_AddWidget(layout, hwnd, (ALFAddWidgetParams *)lparam);
- return TRUE;
- }
-
- if (msg == ALF_WM_GETWIDGETATPOS) {
- *pRet = (LRESULT)ALF_Layout_WidgetAtPos(layout, ((int*)lparam)[0], ((int*)lparam)[1]);
+ if (msg == ALF_WM_LYT_GETCTLATPOS) {
+ *pRet = (LRESULT)ALF_Layout_ControlAtPosPriv(layout, ((int*)lparam)[0], ((int*)lparam)[1]);
return TRUE;
}
@@ -1112,105 +1107,274 @@ ALF_Layout_HandleMessage(ALFLayout *layout, HWND hwnd, UINT msg, WPARAM wparam,
return TRUE;
}
- if (msg == ALF_WM_LYT_GETWIDGETPOS) {
- *pRet = (LRESULT)ALF_Layout_GetWidgetPos(layout, hwnd, (HWND)wparam, (POINT *)lparam);
+ if (msg == ALF_WM_LYT_GETCTLPOS) {
+ *pRet = (LRESULT)ALF_Layout_GetControlPosPriv(layout, hwnd, (HWND)wparam, (POINT *)lparam);
return TRUE;
}
- if (msg == ALF_WM_LYT_SETWIDGETPOS) {
- *pRet = (LRESULT)ALF_Layout_SetWidgetPos(layout, hwnd, (HWND)wparam, (POINT *)lparam);
+ if (msg == ALF_WM_LYT_SETCTLPOS) {
+ *pRet = (LRESULT)ALF_Layout_SetControlPosPriv(layout, hwnd, (HWND)wparam, (POINT *)lparam);
return TRUE;
}
- if (msg == ALF_WM_LYT_GETWDGTSPAN) {
- *pRet = (LRESULT)ALF_Layout_GetWidgetSpan(layout, hwnd, (HWND)wparam, (POINT *)lparam);
+ if (msg == ALF_WM_LYT_GETCTLSPAN) {
+ *pRet = (LRESULT)ALF_Layout_GetControlSpanPriv(layout, hwnd, (HWND)wparam, (POINT *)lparam);
return TRUE;
}
- if (msg == ALF_WM_LYT_SETWDGTSPAN) {
- *pRet = (LRESULT)ALF_Layout_SetWidgetSpan(layout, hwnd, (HWND)wparam, (POINT *)lparam);
+ if (msg == ALF_WM_LYT_SETCTLSPAN) {
+ *pRet = (LRESULT)ALF_Layout_SetControlSpanPriv(layout, hwnd, (HWND)wparam, (POINT *)lparam);
return TRUE;
}
- if (msg == ALF_WM_LYT_GETWIDGTSIZE) {
- *pRet = (LRESULT)ALF_Layout_GetWidgetSize(layout, hwnd, (HWND)wparam, (SIZE *)lparam);
+ if (msg == ALF_WM_LYT_GETCTLSIZE) {
+ *pRet = (LRESULT)ALF_Layout_GetControlSizePriv(layout, hwnd, (HWND)wparam, (SIZE *)lparam);
return TRUE;
}
- if (msg == ALF_WM_LYT_SETWIDGTSIZE) {
- *pRet = (LRESULT)ALF_Layout_SetWidgetSize(layout, hwnd, (HWND)wparam, (SIZE *)lparam);
+ if (msg == ALF_WM_LYT_SETCTLSIZE) {
+ *pRet = (LRESULT)ALF_Layout_SetControlSizePriv(layout, hwnd, (HWND)wparam, (SIZE *)lparam);
return TRUE;
}
- if (msg == ALF_WM_LYT_GETWDGTFLAGS) {
- *pRet = (LRESULT)ALF_Layout_GetWidgetFlags(layout, hwnd, (HWND)wparam);
+ if (msg == ALF_WM_LYT_GETCTLFLAGS) {
+ *pRet = (LRESULT)ALF_Layout_GetControlFlagsPriv(layout, hwnd, (HWND)wparam);
return TRUE;
}
- if (msg == ALF_WM_LYT_SETWDGTFLAGS) {
- *pRet = (LRESULT)ALF_Layout_SetWidgetFlags(layout, hwnd, (HWND)wparam, (DWORD)lparam);
+ if (msg == ALF_WM_LYT_SETCTLFLAGS) {
+ *pRet = (LRESULT)ALF_Layout_SetControlFlagsPriv(layout, hwnd, (HWND)wparam, (DWORD)lparam);
return TRUE;
}
if (msg == ALF_WM_LYT_GETCOLSIZE) {
- *pRet = (LRESULT)ALF_Layout_GetColumnSize(layout, hwnd, (int)wparam);
+ *pRet = (LRESULT)ALF_Layout_GetColumnSizePriv(layout, hwnd, (int)wparam);
return TRUE;
}
if (msg == ALF_WM_LYT_SETCOLSIZE) {
- *pRet = (LRESULT)ALF_Layout_SetColumnSize(layout, hwnd, (int)wparam, (int)lparam);
+ *pRet = (LRESULT)ALF_Layout_SetColumnSizePriv(layout, hwnd, (int)wparam, (int)lparam);
return TRUE;
}
if (msg == ALF_WM_LYT_GETCOLEXPAND) {
- *pRet = (LRESULT)ALF_Layout_GetColumnExpand(layout, hwnd, (int)wparam);
+ *pRet = (LRESULT)ALF_Layout_GetColumnExpandPriv(layout, hwnd, (int)wparam);
return TRUE;
}
if (msg == ALF_WM_LYT_SETCOLEXPAND) {
- *pRet = (LRESULT)ALF_Layout_SetColumnExpand(layout, hwnd, (int)wparam, (int)lparam);
+ *pRet = (LRESULT)ALF_Layout_SetColumnExpandPriv(layout, hwnd, (int)wparam, (int)lparam);
return TRUE;
}
if (msg == ALF_WM_LYT_GETCOLFLAGS) {
- *pRet = (LRESULT)ALF_Layout_GetColumnFlags(layout, hwnd, (int)wparam);
+ *pRet = (LRESULT)ALF_Layout_GetColumnFlagsPriv(layout, hwnd, (int)wparam);
return TRUE;
}
if (msg == ALF_WM_LYT_SETCOLFLAGS) {
- *pRet = (LRESULT)ALF_Layout_SetColumnFlags(layout, hwnd, (int)wparam, (DWORD)lparam);
+ *pRet = (LRESULT)ALF_Layout_SetColumnFlagsPriv(layout, hwnd, (int)wparam, (DWORD)lparam);
return TRUE;
}
if (msg == ALF_WM_LYT_GETROWSIZE) {
- *pRet = (LRESULT)ALF_Layout_GetRowSize(layout, hwnd, (int)wparam);
+ *pRet = (LRESULT)ALF_Layout_GetRowSizePriv(layout, hwnd, (int)wparam);
return TRUE;
}
if (msg == ALF_WM_LYT_SETROWSIZE) {
- *pRet = (LRESULT)ALF_Layout_SetRowSize(layout, hwnd, (int)wparam, (int)lparam);
+ *pRet = (LRESULT)ALF_Layout_SetRowSizePriv(layout, hwnd, (int)wparam, (int)lparam);
return TRUE;
}
if (msg == ALF_WM_LYT_GETROWEXPAND) {
- *pRet = (LRESULT)ALF_Layout_GetRowExpand(layout, hwnd, (int)wparam);
+ *pRet = (LRESULT)ALF_Layout_GetRowExpandPriv(layout, hwnd, (int)wparam);
return TRUE;
}
if (msg == ALF_WM_LYT_SETROWEXPAND) {
- *pRet = (LRESULT)ALF_Layout_SetRowExpand(layout, hwnd, (int)wparam, (int)lparam);
+ *pRet = (LRESULT)ALF_Layout_SetRowExpandPriv(layout, hwnd, (int)wparam, (int)lparam);
return TRUE;
}
if (msg == ALF_WM_LYT_GETROWFLAGS) {
- *pRet = (LRESULT)ALF_Layout_GetRowFlags(layout, hwnd, (int)wparam);
+ *pRet = (LRESULT)ALF_Layout_GetRowFlagsPriv(layout, hwnd, (int)wparam);
return TRUE;
}
if (msg == ALF_WM_LYT_SETROWFLAGS) {
- *pRet = (LRESULT)ALF_Layout_SetRowFlags(layout, hwnd, (int)wparam, (DWORD)lparam);
+ *pRet = (LRESULT)ALF_Layout_SetRowFlagsPriv(layout, hwnd, (int)wparam, (DWORD)lparam);
return TRUE;
}
return FALSE;
}
+
+// public api
+
+DWORD
+ALF_Layout_ControlFlags(HWND parent, HWND control)
+{
+ return (DWORD)SendMessage(parent, ALF_WM_LYT_GETCTLFLAGS, (WPARAM)control, 0);
+}
+
+BOOL
+ALF_Layout_SetControlFlags(HWND parent, HWND control, DWORD flags)
+{
+ return (BOOL)SendMessage(parent, ALF_WM_LYT_SETCTLFLAGS, (WPARAM)control, (LPARAM)flags);
+}
+
+BOOL
+ALF_Layout_ControlPosition(HWND parent, HWND control, int *pX, int *pY)
+{
+ POINT p = { 0, 0 };
+
+ LRESULT r = SendMessage(parent, ALF_WM_LYT_GETCTLPOS, (WPARAM)control, (LPARAM)&p);
+ *pX = p.x;
+ *pY = p.y;
+ return (BOOL)r;
+}
+
+BOOL
+ALF_Layout_SetControlPosition(HWND parent, HWND control, int x, int y)
+{
+ POINT p = { x, y };
+ return (BOOL)SendMessage(parent, ALF_WM_LYT_SETCTLPOS, (WPARAM)control, (LPARAM)&p);
+}
+
+BOOL
+ALF_Layout_ControlSpan(HWND parent, HWND control, int *pXspan, int *pYspan)
+{
+ POINT p = { 0, 0 };
+
+ LRESULT r = SendMessage(parent, ALF_WM_LYT_GETCTLSPAN, (WPARAM)control, (LPARAM)&p);
+ *pXspan = p.x;
+ *pYspan = p.y;
+ return (BOOL)r;
+}
+
+BOOL
+ALF_Layout_SetControlSpan(HWND parent, HWND control, int xspan, int yspan)
+{
+ POINT p = { xspan, yspan };
+ return (BOOL)SendMessage(parent, ALF_WM_LYT_SETCTLSPAN, (WPARAM)control, (LPARAM)&p);
+}
+
+
+BOOL
+ALF_Layout_ControlMinSize(HWND parent, HWND control, int *pWidth, int *pHeight)
+{
+ SIZE s = { 0, 0 };
+ LRESULT r = SendMessage(parent, ALF_WM_LYT_GETCTLSIZE, (WPARAM)control, (LPARAM)&s);
+ *pWidth = s.cx;
+ *pHeight = s.cy;
+ return (BOOL)r;
+}
+
+BOOL
+ALF_Layout_SetControlMinSize(HWND parent, HWND control, int width, int height)
+{
+ SIZE s = { width, height };
+ return (BOOL)SendMessage(parent, ALF_WM_LYT_SETCTLSIZE, (WPARAM)control, (LPARAM)&s);
+}
+
+HWND
+ALF_Layout_ControlAtPosition(HWND parent, int x, int y)
+{
+ int xy[2] = { x, y };
+
+ return (HWND)SendMessage(parent, ALF_WM_LYT_GETCTLATPOS, 0, (LPARAM)&xy);
+}
+
+int
+ALF_Layout_RowMinSize(HWND parent, int rowno)
+{
+ return (int)SendMessage(parent, ALF_WM_LYT_GETROWSIZE, (WPARAM)rowno, 0);
+}
+
+BOOL
+ALF_Layout_SetRowMinSize(HWND parent, int rowno, int rowsize)
+{
+ return (BOOL)SendMessage(parent, ALF_WM_LYT_SETROWSIZE, (WPARAM)rowno, (LPARAM)rowsize);
+}
+
+int
+ALF_Layout_ColumnMinSize(HWND parent, int colno)
+{
+ return (int)SendMessage(parent, ALF_WM_LYT_GETCOLSIZE, (WPARAM)colno, 0);
+}
+
+BOOL
+ALF_Layout_SetColumnMinSize(HWND parent, int colno, int colsize)
+{
+ return (BOOL)SendMessage(parent, ALF_WM_LYT_SETCOLSIZE, (WPARAM)colno, (LPARAM)colsize);
+}
+
+DWORD
+ALF_Layout_RowFlags(HWND parent, int rowno)
+{
+ return (DWORD)SendMessage(parent, ALF_WM_LYT_GETROWFLAGS, (WPARAM)rowno, 0);
+}
+
+BOOL
+ALF_Layout_SetRowFlags(HWND parent, int rowno, DWORD flags)
+{
+ return (BOOL)SendMessage(parent, ALF_WM_LYT_SETROWFLAGS, (WPARAM)rowno, (LPARAM)flags);
+}
+
+DWORD
+ALF_Layout_ColumnFlags(HWND parent, int colno)
+{
+ return (DWORD)SendMessage(parent, ALF_WM_LYT_GETCOLFLAGS, (WPARAM)colno, 0);
+}
+
+BOOL
+ALF_Layout_SetColumnFlags(HWND parent, int colno, DWORD flags)
+{
+ return (BOOL)SendMessage(parent, ALF_WM_LYT_SETCOLFLAGS, (WPARAM)colno, (LPARAM)flags);
+}
+
+int
+ALF_Layout_RowExpandNumerator(HWND parent, int rowno)
+{
+ return (int)SendMessage(parent, ALF_WM_LYT_GETROWEXPAND, (WPARAM)rowno, 0);
+}
+
+BOOL
+ALF_Layout_SetRowExpandNumerator(HWND parent, int rowno, int expand)
+{
+ return (BOOL)SendMessage(parent, ALF_WM_LYT_SETROWEXPAND, (WPARAM)rowno, (LPARAM)expand);
+}
+
+int
+ALF_Layout_ColumnExpandNumerator(HWND parent, int colno)
+{
+ return (int)SendMessage(parent, ALF_WM_LYT_GETCOLEXPAND, (WPARAM)colno, 0);
+}
+
+BOOL
+ALF_Layout_SetColumnExpandNumerator(HWND parent, int colno, int expand)
+{
+ return (int)SendMessage(parent, ALF_WM_LYT_SETCOLEXPAND, (WPARAM)colno, (LPARAM)expand);
+}
+
+void
+ALF_InvalidateLayout(HWND hwnd)
+{
+ SendMessage(hwnd, ALF_WM_INVALIDATELAYOUT, 0, 0);
+}
+
+void
+ALF_AddControl(HWND win, int x, int y, HWND control, int minWidth, int minHeight, DWORD flags)
+{
+ ALFAddControlParams params;
+ ZeroMemory(&params, sizeof(params));
+ params.hwnd = control;
+ params.x = x;
+ params.y = y;
+ params.width = minWidth;
+ params.height = minHeight;
+ params.flags = flags;
+ SendMessage(win, ALF_WM_ADDCONTROL, 0, (LPARAM)&params);
+}
+