From 5f6586400044a4bed80b1b6c114eec532b432894 Mon Sep 17 00:00:00 2001 From: Adria Date: Thu, 16 Apr 2026 13:04:16 +0200 Subject: [PATCH] Change mouse icon on hover --- Minecraft.Client/Common/UI/UIController.cpp | 9 +++++++++ Minecraft.Client/Windows64/KeyboardMouseInput.cpp | 6 ++++++ Minecraft.Client/Windows64/KeyboardMouseInput.h | 2 ++ 3 files changed, 17 insertions(+) diff --git a/Minecraft.Client/Common/UI/UIController.cpp b/Minecraft.Client/Common/UI/UIController.cpp index 96e0ba2f9..1a2751b37 100644 --- a/Minecraft.Client/Common/UI/UIController.cpp +++ b/Minecraft.Client/Common/UI/UIController.cpp @@ -1004,6 +1004,15 @@ void UIController::tickInput() } } } + + if (hitCtrl && (hitCtrl->getControlType() == UIControl::eButton || hitCtrl->getControlType() == UIControl::eCheckBox || hitCtrl->getControlType() == UIControl::eButtonList || hitCtrl->getControlType() == UIControl::eSaveList)) + g_KBMInput.SetCursorIcon(MAKEINTRESOURCEW(IDC_HAND)); + else if (hitCtrl && hitCtrl->getControlType() == UIControl::eSlider || hitCtrl && hitCtrl->getControlType() == UIControl::eTexturePackList) + g_KBMInput.SetCursorIcon(MAKEINTRESOURCEW(IDC_SIZEWE)); + else if (hitCtrl && hitCtrl->getControlType() == UIControl::eTextInput) + g_KBMInput.SetCursorIcon(MAKEINTRESOURCEW(IDC_IBEAM)); + else if (hitCtrl && hitCtrl->getControlType() == UIControl::eNoControl) + g_KBMInput.SetCursorIcon(MAKEINTRESOURCEW(IDC_ARROW)); } } diff --git a/Minecraft.Client/Windows64/KeyboardMouseInput.cpp b/Minecraft.Client/Windows64/KeyboardMouseInput.cpp index be6efe906..5cc432474 100644 --- a/Minecraft.Client/Windows64/KeyboardMouseInput.cpp +++ b/Minecraft.Client/Windows64/KeyboardMouseInput.cpp @@ -390,6 +390,12 @@ float KeyboardMouseInput::GetLookY(float sensitivity) const return static_cast(-m_mouseDeltaY) * sensitivity; } +void KeyboardMouseInput::SetCursorIcon(LPCWSTR cursorName) +{ + HCURSOR hCursor = LoadCursorW(nullptr, cursorName); + if (hCursor) SetCursor(hCursor); +} + void KeyboardMouseInput::OnChar(wchar_t c) { int next = (m_charBufferHead + 1) % CHAR_BUFFER_SIZE; diff --git a/Minecraft.Client/Windows64/KeyboardMouseInput.h b/Minecraft.Client/Windows64/KeyboardMouseInput.h index e8b5f5888..3dcb4313b 100644 --- a/Minecraft.Client/Windows64/KeyboardMouseInput.h +++ b/Minecraft.Client/Windows64/KeyboardMouseInput.h @@ -105,6 +105,8 @@ public: float GetLookX(float sensitivity) const; float GetLookY(float sensitivity) const; + void SetCursorIcon(LPCWSTR cursorName); + private: bool m_keyDown[MAX_KEYS]; bool m_keyDownPrev[MAX_KEYS];