diff options
author | inmarket <andrewh@inmarket.com.au> | 2015-10-13 01:00:10 +1000 |
---|---|---|
committer | inmarket <andrewh@inmarket.com.au> | 2015-10-13 01:00:10 +1000 |
commit | 10c7471149453cea6686aa6f61ec6dac0525c47b (patch) | |
tree | 11c872b10ad42872de3d44d7fec3aa5388ee90e4 /src/gwin/gwin_checkbox.c | |
parent | ddf79cd411e2cbdb58c485851b16be496109ab3b (diff) | |
parent | 5cf81b6fbe76cd5decab8e532fd607202abbc6c6 (diff) | |
download | uGFX-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.c | 22 |
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 |