mirror of
https://github.com/ClassiCube/ClassiCube.git
synced 2025-09-15 10:35:11 -04:00
Fix using scroll wheel on last column past last valid item crashing the client. (Thanks nyxzimus)
This commit is contained in:
parent
31753e1f9e
commit
a5d91ca5cb
@ -8,7 +8,7 @@ namespace ClassicalSharp {
|
||||
static FastColour scrollCol = new FastColour( 10, 10, 10, 220 );
|
||||
static FastColour scrollUsedCol = new FastColour( 100, 100, 100, 220 );
|
||||
void DrawScrollbar() {
|
||||
graphicsApi.Draw2DQuad( TableX, TableY, scrollbarWidth,
|
||||
graphicsApi.Draw2DQuad( TableX, TableY, scrollbarWidth,
|
||||
TableHeight, scrollCol );
|
||||
float scale = TableHeight / (float)rows;
|
||||
int yOffset = (int)Math.Ceiling(scrollY * scale);
|
||||
@ -16,26 +16,27 @@ namespace ClassicalSharp {
|
||||
|
||||
if( yOffset + height > TableHeight )
|
||||
height = TableHeight - yOffset;
|
||||
graphicsApi.Draw2DQuad( TableX, TableY + yOffset, scrollbarWidth,
|
||||
graphicsApi.Draw2DQuad( TableX, TableY + yOffset, scrollbarWidth,
|
||||
height, scrollUsedCol );
|
||||
}
|
||||
|
||||
public override bool HandlesMouseScroll( int delta ) {
|
||||
bool bounds = Contains( TableX, TableY, TableWidth, TableHeight,
|
||||
game.Mouse.X, game.Mouse.Y );
|
||||
if( !bounds ) return false;
|
||||
if( !bounds || selIndex == -1 ) return false;
|
||||
delta = -delta;
|
||||
int startScrollY = scrollY;
|
||||
scrollY -= delta;
|
||||
ClampScrollY();
|
||||
selIndex += delta * blocksPerRow;
|
||||
|
||||
int diffY = scrollY - startScrollY;
|
||||
if( selIndex >= 0 ) {
|
||||
selIndex += diffY * blocksPerRow;
|
||||
RecreateBlockInfoTexture();
|
||||
}
|
||||
if( selIndex >= blocksTable.Length || selIndex < 0 )
|
||||
selIndex -= delta * blocksPerRow;
|
||||
Utils.Clamp( ref selIndex, 0, blocksTable.Length - 1 );
|
||||
int endScrollY = selIndex / blocksPerRow;
|
||||
|
||||
UpdateSelectedState();
|
||||
return true;
|
||||
}
|
||||
int scrollY;
|
||||
int scrollY;
|
||||
|
||||
void UpdateScrollY() {
|
||||
scrollY = selIndex / blocksPerRow;
|
||||
@ -51,7 +52,7 @@ namespace ClassicalSharp {
|
||||
|
||||
void ScrollbarClick( int mouseY ) {
|
||||
mouseY -= TableY;
|
||||
float scale = TableHeight / (float)rows;
|
||||
float scale = TableHeight / (float)rows;
|
||||
scrollY = (int)(mouseY / scale);
|
||||
ClampScrollY();
|
||||
}
|
||||
|
@ -174,7 +174,7 @@ namespace ClassicalSharp {
|
||||
lastCreatedIndex = selIndex;
|
||||
|
||||
graphicsApi.DeleteTexture( ref blockInfoTexture );
|
||||
if( selIndex == -1 || selIndex >= blocksTable.Length ) return;
|
||||
if( selIndex == -1 ) return;
|
||||
|
||||
Block block = blocksTable[selIndex];
|
||||
UpdateBlockInfoString( block );
|
||||
|
Loading…
x
Reference in New Issue
Block a user