From 0f95d6d92f9a036d121d364ca737cd954179b6c6 Mon Sep 17 00:00:00 2001 From: UnknownShadow200 Date: Fri, 25 Dec 2015 14:44:28 +1100 Subject: [PATCH] Can drag scrollbar in block select screen. --- .../2D/Screens/BlockSelectScreen.Scrolling.cs | 12 ++++++++++-- ClassicalSharp/2D/Screens/BlockSelectScreen.cs | 8 +++++++- 2 files changed, 17 insertions(+), 3 deletions(-) diff --git a/ClassicalSharp/2D/Screens/BlockSelectScreen.Scrolling.cs b/ClassicalSharp/2D/Screens/BlockSelectScreen.Scrolling.cs index 37e8636f4..b319b2f83 100644 --- a/ClassicalSharp/2D/Screens/BlockSelectScreen.Scrolling.cs +++ b/ClassicalSharp/2D/Screens/BlockSelectScreen.Scrolling.cs @@ -1,4 +1,5 @@ using System; +using OpenTK.Input; namespace ClassicalSharp { @@ -11,8 +12,8 @@ namespace ClassicalSharp { graphicsApi.Draw2DQuad( TableX, TableY, scrollbarWidth, TableHeight, scrollCol ); float scale = TableHeight / (float)rows; - int yOffset = (int)Math.Ceiling(scrollY * scale); - int height = (int)Math.Ceiling(maxRows * scale); + int yOffset = (int)Math.Ceiling( scrollY * scale ); + int height = (int)Math.Ceiling( maxRows * scale ); if( yOffset + height > TableHeight ) height = TableHeight - yOffset; @@ -53,5 +54,12 @@ namespace ClassicalSharp { scrollY = (int)(mouseY / scale); ClampScrollY(); } + + bool draggingMouse = false; + + public override bool HandlesMouseUp( int mouseX, int mouseY, MouseButton button ) { + draggingMouse = false; + return true; + } } } diff --git a/ClassicalSharp/2D/Screens/BlockSelectScreen.cs b/ClassicalSharp/2D/Screens/BlockSelectScreen.cs index a0aeb3e6f..f137450e6 100644 --- a/ClassicalSharp/2D/Screens/BlockSelectScreen.cs +++ b/ClassicalSharp/2D/Screens/BlockSelectScreen.cs @@ -218,6 +218,11 @@ namespace ClassicalSharp { } public override bool HandlesMouseMove( int mouseX, int mouseY ) { + if( draggingMouse ) { + ScrollbarClick( mouseY ); + return true; + } + selIndex = -1; if( Contains( startX, startY, blocksPerRow * blockSize, maxRows * blockSize, mouseX, mouseY ) ) { @@ -236,10 +241,11 @@ namespace ClassicalSharp { } public override bool HandlesMouseClick( int mouseX, int mouseY, MouseButton button ) { - if( game.hudScreen.hotbar.HandlesMouseClick( mouseX, mouseY, button ) ) + if( draggingMouse || game.hudScreen.hotbar.HandlesMouseClick( mouseX, mouseY, button ) ) return true; if( button == MouseButton.Left && mouseX >= TableX && mouseX < TableX + scrollbarWidth ) { ScrollbarClick( mouseY ); + draggingMouse = true; } else if( button == MouseButton.Left && selIndex != -1 ) { game.Inventory.HeldBlock = blocksTable[selIndex]; game.SetNewScreen( null );