aboutsummaryrefslogtreecommitdiff
path: root/Minecraft.Client/Common/UI
diff options
context:
space:
mode:
author4win <4winyt@gmail.com>2026-03-03 22:30:14 -0600
committerGitHub <noreply@github.com>2026-03-04 12:30:14 +0800
commitf216abca4217b3fe4497d5aea5e4a3d6cf679b46 (patch)
tree5ab59e487ed26575c7f63970ad76601d13e394a3 /Minecraft.Client/Common/UI
parentd31d261ffd707aabfd8715d3bc2cbf2e6fbc3fcd (diff)
fix: properly offset the mouse position in containers (#327)
Diffstat (limited to 'Minecraft.Client/Common/UI')
-rw-r--r--Minecraft.Client/Common/UI/UIScene_AbstractContainerMenu.cpp13
1 files changed, 9 insertions, 4 deletions
diff --git a/Minecraft.Client/Common/UI/UIScene_AbstractContainerMenu.cpp b/Minecraft.Client/Common/UI/UIScene_AbstractContainerMenu.cpp
index 1a5772bc..bb56c780 100644
--- a/Minecraft.Client/Common/UI/UIScene_AbstractContainerMenu.cpp
+++ b/Minecraft.Client/Common/UI/UIScene_AbstractContainerMenu.cpp
@@ -214,8 +214,8 @@ void UIScene_AbstractContainerMenu::tick()
scrollDelta = KMInput.ConsumeScrollDelta();
// Convert mouse position to movie coordinates using the movie/client ratio
- float mx = (float)mouseX * ((float)m_movieWidth / (float)clientWidth);
- float my = (float)mouseY * ((float)m_movieHeight / (float)clientHeight);
+ float mx = (float)mouseX * ((float)m_movieWidth / (float)clientWidth) - (float)m_controlMainPanel.getXPos();
+ float my = (float)mouseY * ((float)m_movieHeight / (float)clientHeight) - (float)m_controlMainPanel.getYPos();
rawMouseMovieX = mx;
rawMouseMovieY = my;
@@ -306,8 +306,13 @@ void UIScene_AbstractContainerMenu::tick()
// Scale mouse client coords to the Iggy display space (which was set to getRenderDimensions())
RECT clientRect;
GetClientRect(KMInput.GetHWnd(), &clientRect);
- x = (S32)((float)KMInput.GetMouseX() * ((float)width / (float)clientRect.right));
- y = (S32)((float)KMInput.GetMouseY() * ((float)height / (float)clientRect.bottom));
+ float mouseMovieX = (float)KMInput.GetMouseX() * ((float)m_movieWidth / (float)clientRect.right);
+ float mouseMovieY = (float)KMInput.GetMouseY() * ((float)m_movieHeight / (float)clientRect.bottom);
+ float mouseLocalX = mouseMovieX - (float)m_controlMainPanel.getXPos();
+ float mouseLocalY = mouseMovieY - (float)m_controlMainPanel.getYPos();
+
+ x = (S32)(mouseLocalX * ((float)width / m_movieWidth));
+ y = (S32)(mouseLocalY * ((float)height / m_movieHeight));
}
else
{