From e1db6d59cd19e2914390955403fc9a459fffd05e Mon Sep 17 00:00:00 2001 From: minenice55 Date: Sun, 7 Sep 2025 21:52:59 -0400 Subject: [PATCH] fix inaccurate scroll bar --- src/m_menu.c | 32 ++++++++++++++++++++------------ 1 file changed, 20 insertions(+), 12 deletions(-) diff --git a/src/m_menu.c b/src/m_menu.c index 1512c96ae..faac64d6e 100644 --- a/src/m_menu.c +++ b/src/m_menu.c @@ -7060,11 +7060,11 @@ void MD_DrawGridCssSelector(void) INT32 dy = (SKINGRIDHEIGHT * 18); INT32 scrx = 4; //2 is added to make the final "thickness" - int listlen; - int barlen; - int barpos; + INT32 columncount; + INT32 barlen; + INT32 barpos; - listlen = (numskins)/SKINGRIDWIDTH; + columncount = ((numskins - 1) / SKINGRIDWIDTH); //draw BG V_DrawFill(x, y, dx, dy, 244); @@ -7080,16 +7080,24 @@ void MD_DrawGridCssSelector(void) V_DrawFill(x, y, scrx, dy, 15); //draw scroll bar bar - if ((numskins) % SKINGRIDWIDTH > 0) - listlen++; - if (listlen - SKINGRIDHEIGHT > 0) - barlen = dy/(listlen-SKINGRIDHEIGHT + 1); - else - barlen = dy; - barpos = barlen * gridcss_skinydrag; + // if ((numskins) % SKINGRIDWIDTH > 0) + // columncount++; + // if (columncount - SKINGRIDHEIGHT > 0) + // barlen = dy/(columncount-SKINGRIDHEIGHT + 1); + // else + // barlen = dy; + // barpos = barlen * gridcss_skinydrag; - if (gridcss_skinydrag >= listlen - SKINGRIDHEIGHT) + // if (gridcss_skinydrag >= columncount - SKINGRIDHEIGHT) + // barlen = dy - barpos; + + barlen = dy * SKINGRIDHEIGHT / columncount; + barpos = dy * gridcss_skinydrag / columncount; + + if (barpos + barlen > dy) + { barlen = dy - barpos; + } V_DrawFill(x, y + barpos, scrx, barlen, 5); V_DrawFill(x, y + barpos, 1, barlen, 7);