aboutsummaryrefslogtreecommitdiffstats
path: root/src/gwin/gwin_checkbox.c
diff options
context:
space:
mode:
authorinmarket <andrewh@inmarket.com.au>2015-10-13 01:00:10 +1000
committerinmarket <andrewh@inmarket.com.au>2015-10-13 01:00:10 +1000
commit10c7471149453cea6686aa6f61ec6dac0525c47b (patch)
tree11c872b10ad42872de3d44d7fec3aa5388ee90e4 /src/gwin/gwin_checkbox.c
parentddf79cd411e2cbdb58c485851b16be496109ab3b (diff)
parent5cf81b6fbe76cd5decab8e532fd607202abbc6c6 (diff)
downloaduGFX-10c7471149453cea6686aa6f61ec6dac0525c47b.tar.gz
uGFX-10c7471149453cea6686aa6f61ec6dac0525c47b.tar.bz2
uGFX-10c7471149453cea6686aa6f61ec6dac0525c47b.zip
Merge branch 'TextEdit'
Diffstat (limited to 'src/gwin/gwin_checkbox.c')
-rw-r--r--src/gwin/gwin_checkbox.c22
1 files changed, 22 insertions, 0 deletions
diff --git a/src/gwin/gwin_checkbox.c b/src/gwin/gwin_checkbox.c
index 11e08804..d477420b 100644
--- a/src/gwin/gwin_checkbox.c
+++ b/src/gwin/gwin_checkbox.c
@@ -55,6 +55,23 @@ static void SendCheckboxEvent(GWidgetObject *gw) {
}
#endif
+#if GINPUT_NEED_KEYBOARD || GWIN_NEED_KEYBOARD
+ static void CheckboxKeyboard(GWidgetObject* gw, GEventKeyboard* pke)
+ {
+ // Only react on KEYDOWN events. Ignore KEYUP events.
+ if (pke->keystate & GKEYSTATE_KEYUP) {
+ break;
+ }
+
+ // ENTER and SPACE keys to check/uncheck the checkbox
+ if (pke->c[0] == GKEY_ENTER || pke->c[0] == GKEY_SPACE) {
+ gw->g.flags ^= GCHECKBOX_FLG_CHECKED;
+ }
+
+ _gwinUpdate((GHandle)gw);
+ }
+#endif
+
#if GINPUT_NEED_TOGGLE
static void CheckboxToggleOn(GWidgetObject *gw, uint16_t role) {
(void) role;
@@ -91,6 +108,11 @@ static const gwidgetVMT checkboxVMT = {
0, // Process mouse move events (NOT USED)
},
#endif
+ #if GINPUT_NEED_KEYBOARD || GWIN_NEED_KEYBOARD
+ {
+ CheckboxKeyboard // Process keyboard events
+ },
+ #endif
#if GINPUT_NEED_TOGGLE
{
1, // 1 toggle role