X-Git-Url: http://de.git.xonotic.org/?p=xonotic%2Fxonotic-data.pk3dir.git;a=blobdiff_plain;f=qcsrc%2Fmenu%2Fitem%2Flistbox.c;h=1087c347943df0273fb1116d3032ade90c60c92a;hp=dc2663149e4a73a2770bebad3bd980c8065185f2;hb=ac828a4561855509c384c8d589b04c6f0115a837;hpb=dcd38e6a42fd9f7532de6b20086bcb1d3c8075b1 diff --git a/qcsrc/menu/item/listbox.c b/qcsrc/menu/item/listbox.c index dc2663149e..1087c34794 100644 --- a/qcsrc/menu/item/listbox.c +++ b/qcsrc/menu/item/listbox.c @@ -106,13 +106,33 @@ float ListBox_keyDown(entity me, float key, float ascii, float shift) } else if(key == K_PGUP || key == K_KP_PGUP) { - me.scrollPos = max(me.scrollPos - 1, 0); - me.setSelected(me, min(me.selectedItem, me.getLastFullyVisibleItemAtScrollPos(me, me.scrollPos))); + float i = me.selectedItem; + float a = me.getItemHeight(me, i); + for(;;) + { + --i; + if (i < 0) + break; + a += me.getItemHeight(me, i); + if (a >= 1) + break; + } + me.setSelected(me, i + 1); } else if(key == K_PGDN || key == K_KP_PGDN) { - me.scrollPos = min(me.scrollPos + 1, me.getTotalHeight(me) - 1); - me.setSelected(me, max(me.selectedItem, me.getFirstFullyVisibleItemAtScrollPos(me, me.scrollPos))); + float i = me.selectedItem; + float a = me.getItemHeight(me, i); + for(;;) + { + ++i; + if (i >= me.nItems) + break; + a += me.getItemHeight(me, i); + if (a >= 1) + break; + } + me.setSelected(me, i - 1); } else if(key == K_UPARROW || key == K_KP_UPARROW) me.setSelected(me, me.selectedItem - 1); @@ -325,7 +345,7 @@ void ListBox_draw(entity me) absSize = boxToGlobalSize(relSize, me.size); draw_scale = boxToGlobalSize(relSize, oldscale); me.drawListBoxItem(me, i, absSize, (me.selectedItem == i)); - y += absSize_y; + y += relSize_y; } draw_ClearClip();