diff --git a/examples/common/imgui/imgui.cpp b/examples/common/imgui/imgui.cpp index 08ba528f..33dd7915 100644 --- a/examples/common/imgui/imgui.cpp +++ b/examples/common/imgui/imgui.cpp @@ -911,14 +911,23 @@ struct Imgui const float barHeight = (float)height / (float)sh; - const int32_t diff = height - sh; - if (diff < 0) + // Handle mouse scrolling. + if (area.m_inside && !anyActive() ) { - *area.m_scrollVal = (*area.m_scrollVal > diff) ? *area.m_scrollVal : diff; - } - else - { - *area.m_scrollVal = 0; + const int32_t min = height - sh; + if (min > 0) + { + *area.m_scrollVal = 0; + } + else if (m_scroll) + { + const int32_t val = *area.m_scrollVal + 20*m_scroll; + const int32_t max = 0; + *area.m_scrollVal = ( val > max ? max + : val < min ? min + : val + ); + } } if (barHeight < 1.0f) @@ -1017,15 +1026,6 @@ struct Imgui ); } } - - // Handle mouse scrolling. - if (area.m_inside) // && !anyActive() ) - { - if (m_scroll) - { - *area.m_scrollVal += bx::uint32_clamp(20 * m_scroll, 0, sh - height); - } - } } area.m_inside = false;