diff options
author | Jari Vetoniemi <mailroxas@gmail.com> | 2014-04-14 19:25:16 +0300 |
---|---|---|
committer | Jari Vetoniemi <mailroxas@gmail.com> | 2014-04-14 19:25:16 +0300 |
commit | 617c4ab827d9c71a122034594bb1080607f50398 (patch) | |
tree | 188ae4cafafab73e1c34bbacd3e5fdcf99652478 /lib/menu.c | |
parent | 4f72d188ada1e6ad725dfa9927112ec90c3ddf80 (diff) | |
download | bemenu-617c4ab827d9c71a122034594bb1080607f50398.tar.gz bemenu-617c4ab827d9c71a122034594bb1080607f50398.tar.bz2 bemenu-617c4ab827d9c71a122034594bb1080607f50398.zip |
Add selection wrapping (-w).
Diffstat (limited to 'lib/menu.c')
-rw-r--r-- | lib/menu.c | 34 |
1 files changed, 32 insertions, 2 deletions
@@ -173,6 +173,30 @@ bmFilterMode bmMenuGetFilterMode(const bmMenu *menu) } /** + * Set selection wrapping on/off. + * + * @param menu bmMenu instance where to toggle selection wrapping. + * @param int 1 == on, 0 == off. + */ +void bmMenuSetWrap(bmMenu *menu, int wrap) +{ + assert(menu); + menu->wrap = (wrap ? 1 : 0); +} + +/** + * Get selection wrapping state. + * + * @param menu bmMenu instance where to get selection wrapping state. + * @return int for wrap state. + */ +int bmMenuGetWrap(const bmMenu *menu) +{ + assert(menu); + return menu->wrap; +} + +/** * Set title to bmMenu instance. * * @param menu bmMenu instance where to set title. @@ -572,13 +596,19 @@ bmRunResult bmMenuRunWithKey(bmMenu *menu, bmKey key, unsigned int unicode) break; case BM_KEY_UP: - if (menu->index > 0) + if (menu->index > 0) { menu->index--; + } else if (menu->wrap) { + menu->index = itemsCount - 1; + } break; case BM_KEY_DOWN: - if (menu->index < itemsCount - 1) + if (menu->index < itemsCount - 1) { menu->index++; + } else if (menu->wrap) { + menu->index = 0; + } break; case BM_KEY_PAGE_UP: |