summaryrefslogtreecommitdiff
path: root/alf/alfcheckbox.cpp
diff options
context:
space:
mode:
authorJonas Kümmerlin <jonas@kuemmerlin.eu>2020-05-23 12:28:31 +0200
committerJonas Kümmerlin <jonas@kuemmerlin.eu>2020-05-23 12:28:31 +0200
commit1069c22d0da82ba81a9fb1242a808e0a65316b55 (patch)
tree716c222c373fe75834f204bb86ccc40acc53f396 /alf/alfcheckbox.cpp
parentc218c7323a069eedbb42fbc31b0bcd8a664928c1 (diff)
move checkbox into button
Diffstat (limited to 'alf/alfcheckbox.cpp')
-rw-r--r--alf/alfcheckbox.cpp118
1 files changed, 0 insertions, 118 deletions
diff --git a/alf/alfcheckbox.cpp b/alf/alfcheckbox.cpp
deleted file mode 100644
index 99a285f..0000000
--- a/alf/alfcheckbox.cpp
+++ /dev/null
@@ -1,118 +0,0 @@
-#include "alfpriv.h"
-
-typedef struct {
- ALFColor bgcolor;
- WNDPROC origWndProc;
-} ALFCheckboxPriv;
-
-static ALFCheckboxPriv *
-ALF_Checkbox_InitializePriv(void)
-{
- return ALF_New(ALFCheckboxPriv, 1);
-}
-
-static void
-ALF_Checkbox_FreePriv(ALFCheckboxPriv *priv)
-{
- ALF_Free(priv);
-}
-
-static BOOL
-ALF_Checkbox_IsTransparencySupported(void)
-{
- // FIXME: for safety, check if the control is actually a v6 control
- return ALF_Compat_IsAppThemed();
-}
-
-static LRESULT
-ALF_Checkbox_PaintBackground(HWND window, ALFCheckboxPriv *priv, HDC hDC)
-{
- // FIXME: Drawing the (transparent) background in WM_CTLCOLORSTATIC is
- // only supported in a themed V6 common control
-
- SetTextColor(hDC, GetSysColor(COLOR_BTNTEXT));
- if (ALF_Checkbox_IsTransparencySupported()) {
- RECT r;
- GetClientRect(window, &r);
-
- if (priv->bgcolor == ALF_COLOR_TRANSPARENT) {
- ALF_Compat_DrawThemeParentBackground(window, hDC, &r);
- SetBkMode(hDC, TRANSPARENT);
- } else {
- ALF_FillRect(hDC, &r, priv->bgcolor);
- SetBkMode(hDC, OPAQUE);
- SetBkColor(hDC, ALF_ColorToGdi(priv->bgcolor));
- }
- return (LRESULT)GetStockObject(HOLLOW_BRUSH);
- } else {
- SetBkColor(hDC, GetSysColor(COLOR_BTNFACE));
- SetBkMode(hDC, OPAQUE);
- return (LRESULT)GetSysColorBrush(COLOR_BTNFACE);
- }
-}
-
-static LRESULT CALLBACK
-ALF_Checkbox_WindowProc(HWND window, UINT msg, WPARAM wparam, LPARAM lparam)
-{
- ALFCheckboxPriv *priv = (ALFCheckboxPriv *)GetWindowLongPtr(window, GWLP_USERDATA);
-
- if (!priv) // fuck
- return DefWindowProc(window, msg, wparam, lparam);
-
- if (msg == ALF_WM_SETBGCOLOR) {
- ALFColor newColor = (ALFColor)lparam;
- if (newColor != priv->bgcolor) {
- priv->bgcolor = newColor;
- if (ALF_Checkbox_IsTransparencySupported())
- InvalidateRect(window, NULL, TRUE);
- }
- return TRUE;
- }
-
- if (msg == 0x2000 + WM_CTLCOLORSTATIC) {
- return ALF_Checkbox_PaintBackground(window, priv, (HDC)wparam);
- }
-
- if (msg == ALF_WM_BACKGROUNDCHANGE) {
- if (priv->bgcolor == ALF_COLOR_TRANSPARENT && ALF_Checkbox_IsTransparencySupported()) {
- InvalidateRect(window, NULL, TRUE);
- }
- return TRUE;
- }
-
- if (msg == WM_THEMECHANGED) {
- InvalidateRect(window, NULL, TRUE);
- }
-
- if (msg == WM_DESTROY) {
- WNDPROC orig = priv->origWndProc;
- SetWindowLongPtr(window, GWLP_WNDPROC, (LONG_PTR)orig);
- SetWindowLongPtr(window, GWLP_USERDATA, 0);
- ALF_Checkbox_FreePriv(priv);
- return CallWindowProc(orig, window, msg, wparam, lparam);
- }
-
- return CallWindowProc(priv->origWndProc, window, msg, wparam, lparam);
-}
-
-HWND
-ALF_AddCheckbox(HWND parent, WORD id, int x, int y, const TCHAR *text)
-{
- HWND hwnd = CreateWindowEx(0,
- TEXT("BUTTON"),
- text,
- WS_CHILD | WS_VISIBLE | WS_TABSTOP | BS_AUTOCHECKBOX,
- 0, 0, 100, 100,
- parent,
- (HMENU)(ULONG_PTR)id,
- ALF_HINSTANCE,
- NULL);
-
- ALFCheckboxPriv *priv = ALF_Checkbox_InitializePriv();
- SetWindowLongPtr(hwnd, GWLP_USERDATA, (LONG_PTR)priv);
- priv->origWndProc = (WNDPROC)SetWindowLongPtr(hwnd, GWLP_WNDPROC, (LONG_PTR)ALF_Checkbox_WindowProc);
-
- ALF_AddWidget(parent, x, y, hwnd, 0, 0, ALF_LAYOUT_SIZE_CHECKBOX | ALF_LAYOUT_INHERITFONT | ALF_LAYOUT_INHERITBGCOLOR | ALF_LAYOUT_SENDBGCHANGE);
-
- return hwnd;
-}