From 6e736ebff3d79c1ca0bd8a660cc148484bb11563 Mon Sep 17 00:00:00 2001 From: deadman96385 Date: Sun, 1 Mar 2026 12:47:50 -0600 Subject: [PATCH] fix: restore Windows input hooks lost during rebase Reinstate Win32 mouse message handling, startup working-directory setup, and container mouse action dispatch so post-rebase keyboard/mouse behavior matches pre-rebase functionality. --- .../UI/UIScene_AbstractContainerMenu.cpp | 51 +++++++++++++++++++ .../Windows64/Windows64_Minecraft.cpp | 35 +++++++++++++ 2 files changed, 86 insertions(+) diff --git a/Minecraft.Client/Common/UI/UIScene_AbstractContainerMenu.cpp b/Minecraft.Client/Common/UI/UIScene_AbstractContainerMenu.cpp index 2e339e365..be1d296d9 100644 --- a/Minecraft.Client/Common/UI/UIScene_AbstractContainerMenu.cpp +++ b/Minecraft.Client/Common/UI/UIScene_AbstractContainerMenu.cpp @@ -83,6 +83,7 @@ UIScene_AbstractContainerMenu::UIScene_AbstractContainerMenu(int iPad, UILayer * ui.OverrideSFX(m_iPad,ACTION_MENU_DOWN,true); m_bIgnoreInput=false; + m_bMouseDragSlider=false; } UIScene_AbstractContainerMenu::~UIScene_AbstractContainerMenu() @@ -280,6 +281,56 @@ void UIScene_AbstractContainerMenu::tick() onMouseTick(); +#ifdef _WINDOWS64 + if (getPad() == 0 && m_bMousePointerControl) + { + if (KMInput.ConsumeMousePress(0)) + { + if (m_eCurrSection == eSectionInventoryCreativeSlider) + { + m_bMouseDragSlider = true; + handleOtherClicked(m_iPad, eSectionInventoryCreativeSlider, 0, false); + } + else + { + handleKeyDown(m_iPad, ACTION_MENU_A, false); + } + } + else if (m_bMouseDragSlider && KMInput.IsMouseDown(0)) + { + handleOtherClicked(m_iPad, eSectionInventoryCreativeSlider, 0, false); + } + + if (!KMInput.IsMouseDown(0)) + m_bMouseDragSlider = false; + + if (KMInput.ConsumeMousePress(1)) + { + handleKeyDown(m_iPad, ACTION_MENU_X, false); + } + if (KMInput.ConsumeMousePress(2)) + { + handleKeyDown(m_iPad, ACTION_MENU_Y, false); + } + + int scrollDelta = KMInput.ConsumeScrollDelta(); + if (scrollDelta > 0) + { + handleKeyDown(m_iPad, ACTION_MENU_OTHER_STICK_UP, false); + } + else if (scrollDelta < 0) + { + handleKeyDown(m_iPad, ACTION_MENU_OTHER_STICK_DOWN, false); + } + + if (KMInput.ConsumeKeyPress(VK_ESCAPE)) + { + handleKeyDown(m_iPad, ACTION_MENU_B, false); + return; + } + } +#endif + IggyEvent mouseEvent; S32 width, height; m_parentLayer->getRenderDimensions(width, height); diff --git a/Minecraft.Client/Windows64/Windows64_Minecraft.cpp b/Minecraft.Client/Windows64/Windows64_Minecraft.cpp index 47461da17..dce883c2a 100644 --- a/Minecraft.Client/Windows64/Windows64_Minecraft.cpp +++ b/Minecraft.Client/Windows64/Windows64_Minecraft.cpp @@ -395,6 +395,9 @@ LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) case WM_MOUSEWHEEL: KMInput.OnMouseWheel(GET_WHEEL_DELTA_WPARAM(wParam)); break; + case WM_MOUSEMOVE: + KMInput.OnMouseMove(GET_X_LPARAM(lParam), GET_Y_LPARAM(lParam)); + break; case WM_ACTIVATE: if (LOWORD(wParam) == WA_INACTIVE) KMInput.SetCapture(false); @@ -404,6 +407,15 @@ LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) KMInput.ClearAllState(); break; + case WM_SETCURSOR: + // Hide the OS cursor when an Iggy/Flash menu is displayed (it has its own Flash cursor) + if (LOWORD(lParam) == HTCLIENT && !KMInput.IsCaptured() && ui.GetMenuDisplayed(0)) + { + SetCursor(NULL); + return TRUE; + } + return DefWindowProc(hWnd, message, wParam, lParam); + default: return DefWindowProc(hWnd, message, wParam, lParam); } @@ -609,6 +621,7 @@ app.DebugPrintf("width: %d, height: %d\n", width, height); hr = g_pd3dDevice->CreateTexture2D(&descDepth, NULL, &g_pDepthStencilBuffer); D3D11_DEPTH_STENCIL_VIEW_DESC descDSView; + ZeroMemory(&descDSView, sizeof(descDSView)); descDSView.Format = DXGI_FORMAT_D24_UNORM_S8_UINT; descDSView.ViewDimension = D3D11_DSV_DIMENSION_TEXTURE2D; descDSView.Texture2D.MipSlice = 0; @@ -702,6 +715,28 @@ int APIENTRY _tWinMain(_In_ HINSTANCE hInstance, UNREFERENCED_PARAMETER(hPrevInstance); UNREFERENCED_PARAMETER(lpCmdLine); + WCHAR exePath[MAX_PATH] = { 0 }; + GetModuleFileNameW(NULL, exePath, MAX_PATH); + WCHAR* lastSlash = wcsrchr(exePath, L'\\'); + if (lastSlash) + { + *lastSlash = L'\0'; + + WCHAR devCheckPath[MAX_PATH] = { 0 }; + swprintf_s(devCheckPath, MAX_PATH, L"%s\\..\\..\\Minecraft.Client\\Minecraft.Client.vcxproj", exePath); + + if (GetFileAttributesW(devCheckPath) != INVALID_FILE_ATTRIBUTES) + { + WCHAR projectPath[MAX_PATH] = { 0 }; + swprintf_s(projectPath, MAX_PATH, L"%s\\..\\..\\Minecraft.Client", exePath); + SetCurrentDirectoryW(projectPath); + } + else + { + SetCurrentDirectoryW(exePath); + } + } + // Declare DPI awareness so GetSystemMetrics returns physical pixels SetProcessDPIAware(); g_iScreenWidth = GetSystemMetrics(SM_CXSCREEN);