summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJonas Kümmerlin <jonas@kuemmerlin.eu>2020-05-23 14:37:59 +0200
committerJonas Kümmerlin <jonas@kuemmerlin.eu>2020-05-23 14:37:59 +0200
commite8362729edde40cc63f045775cc1f015abb8bbb7 (patch)
tree3204bfdfdfe6d9849c9e910c5f088d0fd1513fde
parent9d237b5fd80e55d8b5e367323b6ee58be896f968 (diff)
checkbox: allow (un)checking via +-= keys
-rw-r--r--alf/alfbutton.cpp19
1 files changed, 19 insertions, 0 deletions
diff --git a/alf/alfbutton.cpp b/alf/alfbutton.cpp
index f809410..f41b0b5 100644
--- a/alf/alfbutton.cpp
+++ b/alf/alfbutton.cpp
@@ -780,6 +780,11 @@ ALF_NtButton_WndProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
ALF_NtButton_Paint(hwnd, priv, (HDC)wParam, &rc);
} else if (uMsg == WM_GETDLGCODE) {
if (priv->drawFlags & ALF_NTBTN_FLAG_DRAW_CHECKBOX || priv->drawFlags & ALF_NTBTN_FLAG_DRAW_TRISTATE) {
+ if (lParam && ((MSG *)lParam)->message == WM_CHAR && (
+ ((MSG *)lParam)->wParam == '+' || ((MSG *)lParam)->wParam == '-' || ((MSG *)lParam)->wParam == '=')) {
+ return DLGC_WANTCHARS | DLGC_BUTTON;
+ }
+
return DLGC_BUTTON;
} else if (priv->drawFlags & ALF_NTBTN_FLAG_DRAW_RADIOBTN) {
return DLGC_RADIOBUTTON;
@@ -900,6 +905,20 @@ ALF_NtButton_WndProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
}
}
}
+ } else if (uMsg == WM_CHAR) {
+ if (priv->drawFlags & ALF_NTBTN_FLAG_DRAW_CHECKBOX) {
+ if (wParam == '+' || wParam == '=') {
+ // check
+ if (!(priv->drawFlags & ALF_NTBTN_FLAG_IS_CHECKED)) {
+ ALF_NtButton_Clicked(hwnd, priv);
+ }
+ } else if (wParam == '-') {
+ // uncheck
+ if (priv->drawFlags & ALF_NTBTN_FLAG_IS_CHECKED) {
+ ALF_NtButton_Clicked(hwnd, priv);
+ }
+ }
+ }
} else if (uMsg == WM_ERASEBKGND) {
return TRUE;
} else if (uMsg == WM_SETTEXT) {