diff options
author | Jari Vetoniemi <mailroxas@gmail.com> | 2014-04-12 18:42:30 +0300 |
---|---|---|
committer | Jari Vetoniemi <mailroxas@gmail.com> | 2014-04-12 18:42:30 +0300 |
commit | ad4e0425a6860803e5f31a08c349cd99e02e2847 (patch) | |
tree | b6a250c795a2f7331b79e69268ffac2c347ede3d /lib/menu.c | |
parent | fc08cb9cffce6cdb0ca3aa9f77953e86b2cf1290 (diff) | |
download | bemenu-ad4e0425a6860803e5f31a08c349cd99e02e2847.tar.gz bemenu-ad4e0425a6860803e5f31a08c349cd99e02e2847.tar.bz2 bemenu-ad4e0425a6860803e5f31a08c349cd99e02e2847.zip |
Make page scrolling work like it should. (Shfit+pgup/pgdwn for old
behaviour)
Diffstat (limited to 'lib/menu.c')
-rw-r--r-- | lib/menu.c | 17 |
1 files changed, 16 insertions, 1 deletions
@@ -532,6 +532,13 @@ bmRunResult bmMenuRunWithKey(bmMenu *menu, bmKey key, unsigned int unicode) unsigned int itemsCount; bmMenuGetFilteredItems(menu, &itemsCount); + unsigned int displayed = 0; + if (menu->renderApi.displayedCount) + displayed = menu->renderApi.displayedCount(menu); + + if (!displayed) + displayed = itemsCount; + switch (key) { case BM_KEY_LEFT: { @@ -569,10 +576,18 @@ bmRunResult bmMenuRunWithKey(bmMenu *menu, bmKey key, unsigned int unicode) break; case BM_KEY_PAGE_UP: - menu->index = 0; + menu->index = (menu->index < displayed ? 0 : menu->index - (displayed - 1)); break; case BM_KEY_PAGE_DOWN: + menu->index = (menu->index + displayed >= itemsCount ? itemsCount - 1 : menu->index + (displayed - 1)); + break; + + case BM_KEY_SHIFT_PAGE_UP: + menu->index = 0; + break; + + case BM_KEY_SHIFT_PAGE_DOWN: menu->index = itemsCount - 1; break; |