mirror of
https://github.com/DrBeef/ioq3quest.git
synced 2024-11-13 07:57:23 +00:00
Add mouse wheel support to UI list boxes
Allows scrolling server browser list and some other lists.
This commit is contained in:
parent
5592342b1b
commit
db1198f6ea
2 changed files with 65 additions and 0 deletions
|
@ -1034,6 +1034,50 @@ sfxHandle_t ScrollList_Key( menulist_s *l, int key )
|
||||||
}
|
}
|
||||||
return (menu_buzz_sound);
|
return (menu_buzz_sound);
|
||||||
|
|
||||||
|
case K_MWHEELUP:
|
||||||
|
if( l->columns > 1 ) {
|
||||||
|
return menu_null_sound;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (l->top > 0)
|
||||||
|
{
|
||||||
|
// if scrolling 3 lines would replace over half of the
|
||||||
|
// displayed items, only scroll 1 item at a time.
|
||||||
|
int scroll = l->height < 6 ? 1 : 3;
|
||||||
|
l->top -= scroll;
|
||||||
|
if (l->top < 0)
|
||||||
|
l->top = 0;
|
||||||
|
|
||||||
|
if (l->generic.callback)
|
||||||
|
l->generic.callback( l, QM_GOTFOCUS );
|
||||||
|
|
||||||
|
// make scrolling silent
|
||||||
|
return (menu_null_sound);
|
||||||
|
}
|
||||||
|
return (menu_buzz_sound);
|
||||||
|
|
||||||
|
case K_MWHEELDOWN:
|
||||||
|
if( l->columns > 1 ) {
|
||||||
|
return menu_null_sound;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (l->top < l->numitems-l->height)
|
||||||
|
{
|
||||||
|
// if scrolling 3 items would replace over half of the
|
||||||
|
// displayed items, only scroll 1 item at a time.
|
||||||
|
int scroll = l->height < 6 ? 1 : 3;
|
||||||
|
l->top += scroll;
|
||||||
|
if (l->top > l->numitems-l->height)
|
||||||
|
l->top = l->numitems-l->height;
|
||||||
|
|
||||||
|
if (l->generic.callback)
|
||||||
|
l->generic.callback( l, QM_GOTFOCUS );
|
||||||
|
|
||||||
|
// make scrolling silent
|
||||||
|
return (menu_null_sound);
|
||||||
|
}
|
||||||
|
return (menu_buzz_sound);
|
||||||
|
|
||||||
case K_KP_UPARROW:
|
case K_KP_UPARROW:
|
||||||
case K_UPARROW:
|
case K_UPARROW:
|
||||||
if( l->curvalue == 0 ) {
|
if( l->curvalue == 0 ) {
|
||||||
|
|
|
@ -1828,6 +1828,27 @@ qboolean Item_ListBox_HandleKey(itemDef_t *item, int key, qboolean down, qboolea
|
||||||
return qtrue;
|
return qtrue;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Use mouse wheel in vertical and horizontal menus.
|
||||||
|
// If scrolling 3 items would replace over half of the
|
||||||
|
// displayed items, only scroll 1 item at a time.
|
||||||
|
if ( key == K_MWHEELUP ) {
|
||||||
|
int scroll = viewmax < 6 ? 1 : 3;
|
||||||
|
listPtr->startPos -= scroll;
|
||||||
|
if (listPtr->startPos < 0) {
|
||||||
|
listPtr->startPos = 0;
|
||||||
|
}
|
||||||
|
return qtrue;
|
||||||
|
}
|
||||||
|
if ( key == K_MWHEELDOWN ) {
|
||||||
|
int scroll = viewmax < 6 ? 1 : 3;
|
||||||
|
listPtr->startPos += scroll;
|
||||||
|
if (listPtr->startPos > max) {
|
||||||
|
listPtr->startPos = max;
|
||||||
|
}
|
||||||
|
return qtrue;
|
||||||
|
}
|
||||||
|
|
||||||
// mouse hit
|
// mouse hit
|
||||||
if (key == K_MOUSE1 || key == K_MOUSE2) {
|
if (key == K_MOUSE1 || key == K_MOUSE2) {
|
||||||
if (item->window.flags & WINDOW_LB_LEFTARROW) {
|
if (item->window.flags & WINDOW_LB_LEFTARROW) {
|
||||||
|
|
Loading…
Reference in a new issue