mirror of
https://github.com/smartcmd/MinecraftConsoles.git
synced 2026-05-01 19:40:37 +00:00
Merge 53de202726 into 5e5b685c72
This commit is contained in:
commit
70166b89e4
|
|
@ -5,6 +5,7 @@
|
|||
#include "UIScene.h"
|
||||
#include "UIControl_Slider.h"
|
||||
#include "UIControl_TexturePackList.h"
|
||||
#include "UIControl_CheckBox.h"
|
||||
#include "../../../Minecraft.World/StringHelpers.h"
|
||||
#include "../../LocalPlayer.h"
|
||||
#include "../../DLCTexturePack.h"
|
||||
|
|
@ -791,6 +792,7 @@ void UIController::tickInput()
|
|||
{
|
||||
#ifdef _WINDOWS64
|
||||
m_mouseClickConsumedByScene = false;
|
||||
UIControl* currHitCtrl = NULL;
|
||||
if (!g_KBMInput.IsMouseGrabbed() && g_KBMInput.IsKBMActive())
|
||||
{
|
||||
UIScene *pScene = nullptr;
|
||||
|
|
@ -955,7 +957,7 @@ void UIController::tickInput()
|
|||
static_cast<S32>(sceneMouseX), static_cast<S32>(sceneMouseY), false);
|
||||
hitControlId = -1;
|
||||
hitArea = INT_MAX;
|
||||
hitCtrl = NULL;
|
||||
hitCtrl = ctrl;
|
||||
break; // ButtonList takes priority
|
||||
}
|
||||
if (type == UIControl::eTexturePackList)
|
||||
|
|
@ -968,7 +970,7 @@ void UIController::tickInput()
|
|||
m_bMouseHoverHorizontalList = true;
|
||||
hitControlId = -1;
|
||||
hitArea = INT_MAX;
|
||||
hitCtrl = NULL;
|
||||
hitCtrl = ctrl;
|
||||
break;
|
||||
}
|
||||
S32 area = cw * ch;
|
||||
|
|
@ -1004,6 +1006,9 @@ void UIController::tickInput()
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
currHitCtrl = hitCtrl;
|
||||
UpdateCursorIcon(currHitCtrl);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -1127,6 +1132,27 @@ void UIController::tickInput()
|
|||
}
|
||||
}
|
||||
|
||||
void UIController::UpdateCursorIcon(UIControl *hitCtrl)
|
||||
{
|
||||
// Set cursor icon based on hovered UI element (WinUser.h)
|
||||
if (hitCtrl && (hitCtrl->getControlType() == UIControl::eButton || hitCtrl->getControlType() == UIControl::eButtonList))
|
||||
g_KBMInput.SetCursorIcon(MAKEINTRESOURCEW(IDC_HAND));
|
||||
else if (hitCtrl && (hitCtrl->getControlType() == UIControl::eSlider || 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::eCheckBox) // Show the cross sign shaped cursor only when the checkbox is disabled/grayed out
|
||||
{
|
||||
UIControl_CheckBox *pCheck = static_cast<UIControl_CheckBox *>(hitCtrl);
|
||||
if (pCheck && !pCheck->IsEnabled())
|
||||
g_KBMInput.SetCursorIcon(MAKEINTRESOURCEW(IDC_NO));
|
||||
else
|
||||
g_KBMInput.SetCursorIcon(MAKEINTRESOURCEW(IDC_HAND));
|
||||
}
|
||||
else
|
||||
g_KBMInput.SetCursorIcon(MAKEINTRESOURCEW(IDC_ARROW));
|
||||
}
|
||||
|
||||
void UIController::handleInput()
|
||||
{
|
||||
// For each user, loop over each key type and send messages based on the state
|
||||
|
|
@ -1995,6 +2021,7 @@ bool UIController::NavigateToScene(int iPad, EUIScene scene, void *initData, EUI
|
|||
SetMenuDisplayed(menuDisplayedPad,true);
|
||||
bool success = m_groups[static_cast<int>(group)]->NavigateToScene(iPad, scene, initData, layer);
|
||||
if(success && group == eUIGroup_Fullscreen) setFullscreenMenuDisplayed(true);
|
||||
UpdateCursorIcon(nullptr);
|
||||
LeaveCriticalSection(&m_navigationLock);
|
||||
|
||||
timer.PrintElapsedTime(L"Navigate to scene");
|
||||
|
|
@ -2035,6 +2062,8 @@ bool UIController::NavigateBack(int iPad, bool forceUsePad, EUIScene eScene, EUI
|
|||
if(!m_groups[static_cast<int>(eUIGroup_Fullscreen)]->GetMenuDisplayed()) SetMenuDisplayed(XUSER_INDEX_ANY,false);
|
||||
}
|
||||
return navComplete;
|
||||
|
||||
UpdateCursorIcon(nullptr);
|
||||
}
|
||||
|
||||
void UIController::NavigateToHomeMenu()
|
||||
|
|
|
|||
|
|
@ -245,6 +245,7 @@ public:
|
|||
// INPUT
|
||||
private:
|
||||
void tickInput();
|
||||
void UpdateCursorIcon(UIControl *hitCtrl);
|
||||
void handleInput();
|
||||
void handleKeyPress(unsigned int iPad, unsigned int key);
|
||||
|
||||
|
|
|
|||
|
|
@ -390,6 +390,21 @@ float KeyboardMouseInput::GetLookY(float sensitivity) const
|
|||
return static_cast<float>(-m_mouseDeltaY) * sensitivity;
|
||||
}
|
||||
|
||||
void KeyboardMouseInput::SetCursorIcon(LPCWSTR cursorName)
|
||||
{
|
||||
HCURSOR hCursor = LoadCursorW(nullptr, cursorName);
|
||||
if (hCursor)
|
||||
{
|
||||
SetCursor(hCursor);
|
||||
|
||||
if (g_hWnd)
|
||||
{
|
||||
// Update the cursor icon to keep the current one
|
||||
SetClassLongPtrW(g_hWnd, GCLP_HCURSOR, (LONG_PTR)hCursor);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void KeyboardMouseInput::OnChar(wchar_t c)
|
||||
{
|
||||
int next = (m_charBufferHead + 1) % CHAR_BUFFER_SIZE;
|
||||
|
|
|
|||
|
|
@ -103,6 +103,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];
|
||||
|
|
|
|||
Loading…
Reference in a new issue