diff options
Diffstat (limited to 'Minecraft.Client')
| -rw-r--r-- | Minecraft.Client/Common/UI/UIControl_Slider.cpp | 36 |
1 files changed, 34 insertions, 2 deletions
diff --git a/Minecraft.Client/Common/UI/UIControl_Slider.cpp b/Minecraft.Client/Common/UI/UIControl_Slider.cpp index 2d56a29c..c9b773a7 100644 --- a/Minecraft.Client/Common/UI/UIControl_Slider.cpp +++ b/Minecraft.Client/Common/UI/UIControl_Slider.cpp @@ -66,12 +66,44 @@ void UIControl_Slider::init(UIString label, int id, int min, int max, int curren #endif } +bool IsUsingKeyboardMouse() +{ +#ifdef _WINDOWS64 + + if (g_KBMInput.IsKBMActive()) return true; + + return g_KBMInput.HasAnyInput(); +#else + return false; +#endif +} + void UIControl_Slider::handleSliderMove(int newValue) { if (m_current!=newValue) { - ui.PlayUISFX(eSFX_Scroll); - m_current = newValue; + int valueCount = 1; + if (!m_allPossibleLabels.empty()) { + valueCount = static_cast<int>(m_allPossibleLabels.size()); + } + else { + long long range = static_cast<long long>(m_max) - static_cast<long long>(m_min) + 1; + if (range <= 0) range = 1; + valueCount = static_cast<int>(range); + } + + if (IsUsingKeyboardMouse() == true) { + if (newValue % 10 == 0) { + ui.PlayUISFX(eSFX_Scroll); + m_current = newValue; + } else if (valueCount <= 20) { + ui.PlayUISFX(eSFX_Scroll); + m_current = newValue; + } + } else { + ui.PlayUISFX(eSFX_Scroll); + m_current = newValue; + } if(newValue < m_allPossibleLabels.size()) { |
