summaryrefslogtreecommitdiff
path: root/alf
diff options
context:
space:
mode:
Diffstat (limited to 'alf')
-rw-r--r--alf/alf.cpp7
-rw-r--r--alf/alf.h8
-rw-r--r--alf/alflayout.cpp4
-rw-r--r--alf/alfnotebook.cpp8
4 files changed, 19 insertions, 8 deletions
diff --git a/alf/alf.cpp b/alf/alf.cpp
index 3bf9ae7..a23bdf0 100644
--- a/alf/alf.cpp
+++ b/alf/alf.cpp
@@ -449,11 +449,16 @@ ALF_InvalidateBackground(HWND win)
void
ALF_SetBackgroundColor(HWND win, ALFColor color)
{
+ HWND parent = GetParent(win);
+ if (parent) {
+ ALF_RemoveWidgetLayoutFlag(parent, win, ALF_LAYOUT_INHERITBGCOLOR);
+ }
+
SendMessage(win, ALF_WM_SETBGCOLOR, 0, (LPARAM)color);
}
ALFColor
-ALF_GetBackgroundColor(HWND win)
+ALF_BackgroundColor(HWND win)
{
return (ALFColor)SendMessage(win, ALF_WM_GETBGCOLOR, 0, 0);
}
diff --git a/alf/alf.h b/alf/alf.h
index bd8ca0e..32e221c 100644
--- a/alf/alf.h
+++ b/alf/alf.h
@@ -206,11 +206,17 @@ ALF_InvalidateBackground(HWND win);
void
ALF_UpdateFonts(HWND win);
+// Sets the background color of the given window
+// Also, if the window is a child window, disables the ALF_LAYOUT_INHERITBGCOLOR flag
+// Only the following widgets have background colors:
+// - Top-Level window
+// - Panel
+// TODO fix label, button
void
ALF_SetBackgroundColor(HWND win, ALFColor color);
ALFColor
-ALF_GetBackgroundColor(HWND win);
+ALF_BackgroundColor(HWND win);
void
ALF_ResizeWindow(HWND win, int cptWidth, int cptHeight);
diff --git a/alf/alflayout.cpp b/alf/alflayout.cpp
index 228e5b3..2dfe16d 100644
--- a/alf/alflayout.cpp
+++ b/alf/alflayout.cpp
@@ -444,7 +444,7 @@ ALF_Layout_AddWidget(ALFLayout* layout, HWND window, const ALFAddWidgetParams* p
ALF_Layout_ForwardFontToWidget(layout, window, w, (HFONT)SendMessage(window, WM_GETFONT, 0, 0), 0);
}
if (w->flags & ALF_LAYOUT_INHERITBGCOLOR) {
- ALF_SetBackgroundColor(w->hwnd, ALF_GetBackgroundColor(window));
+ SendMessage(w->hwnd, ALF_WM_SETBGCOLOR, 0, (LPARAM)ALF_BackgroundColor(window));
}
ALF_ListInsert(layout->widgets.prev, &w->list);
@@ -600,7 +600,7 @@ ALF_Layout_SetWidgetFlags(ALFLayout *layout, HWND window, HWND needle, DWORD fla
if (flags & ALF_LAYOUT_INHERITFONT)
ALF_Layout_ForwardFontToWidget(layout, window, w, (HFONT)SendMessage(window, WM_GETFONT, 0, 0), 0);
if (flags & ALF_LAYOUT_INHERITBGCOLOR)
- ALF_SetBackgroundColor(w->hwnd, ALF_GetBackgroundColor(window));
+ SendMessage(w->hwnd, ALF_WM_SETBGCOLOR, 0, (LPARAM)ALF_BackgroundColor(window));
ALF_Layout_Invalidate(layout, window);
diff --git a/alf/alfnotebook.cpp b/alf/alfnotebook.cpp
index a2a21f1..d1024e2 100644
--- a/alf/alfnotebook.cpp
+++ b/alf/alfnotebook.cpp
@@ -96,9 +96,9 @@ ALF_Notebook_InternalHandleThemeChange(HWND hwndNotebook, ALFNotebookPriv *priv)
HWND panel = ALF_Notebook_InternalTabPanel(hwndNotebook, priv->hwndTabCtrl, i);
if (priv->hTheme) {
- ALF_SetBackgroundColor(panel, ALF_COLOR_TRANSPARENT);
+ SendMessage(panel, ALF_WM_SETBGCOLOR, 0, (LPARAM)ALF_COLOR_TRANSPARENT);
} else {
- ALF_SetBackgroundColor(panel, ALF_COLOR_SYS(COLOR_BTNFACE));
+ SendMessage(panel, ALF_WM_SETBGCOLOR, 0, (LPARAM)ALF_COLOR_SYS(COLOR_BTNFACE));
}
}
}
@@ -118,9 +118,9 @@ ALF_Notebook_InternalAddTab(HWND notebook, ALFNotebookPriv *priv, const TCHAR *t
SendMessage(hwndPanel, WM_SETFONT, (WPARAM)SendMessage(priv->hwndTabCtrl, WM_GETFONT, 0, 0), 0);
if (priv->hTheme) {
- ALF_SetBackgroundColor(hwndPanel, ALF_COLOR_TRANSPARENT);
+ SendMessage(hwndPanel, ALF_WM_SETBGCOLOR, 0, (LPARAM)ALF_COLOR_TRANSPARENT);
} else {
- ALF_SetBackgroundColor(hwndPanel, ALF_COLOR_SYS(COLOR_BTNFACE));
+ SendMessage(hwndPanel, ALF_WM_SETBGCOLOR, 0, (LPARAM)ALF_COLOR_SYS(COLOR_BTNFACE));
}
TCITEM tie;