mirror of
https://github.com/DrBeef/ioq3quest.git
synced 2024-11-10 23:02:01 +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);
|
||||
|
||||
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_UPARROW:
|
||||
if( l->curvalue == 0 ) {
|
||||
|
|
|
@ -1828,6 +1828,27 @@ qboolean Item_ListBox_HandleKey(itemDef_t *item, int key, qboolean down, qboolea
|
|||
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
|
||||
if (key == K_MOUSE1 || key == K_MOUSE2) {
|
||||
if (item->window.flags & WINDOW_LB_LEFTARROW) {
|
||||
|
|
Loading…
Reference in a new issue