mirror of
https://github.com/Mauler125/r5sdk.git
synced 2025-02-09 19:15:03 +01:00
Improve position reset logic
Force scroll to 0 on xy when it should reset, setting rects to 0 isn't sufficient as it goes into minus. Made the code mode simple as well.
This commit is contained in:
parent
375ff7fb16
commit
0cc148e65c
@ -395,8 +395,6 @@ void CConsole::SuggestPanel(void)
|
|||||||
ImGui::Begin("##suggest", nullptr, m_nSuggestFlags);
|
ImGui::Begin("##suggest", nullptr, m_nSuggestFlags);
|
||||||
ImGui::PushAllowKeyboardFocus(false);
|
ImGui::PushAllowKeyboardFocus(false);
|
||||||
|
|
||||||
bool bViewChanged = false;
|
|
||||||
|
|
||||||
for (size_t i = 0, ns = m_vSuggest.size(); i < ns; i++)
|
for (size_t i = 0, ns = m_vSuggest.size(); i < ns; i++)
|
||||||
{
|
{
|
||||||
const CSuggest& suggest = m_vSuggest[i];
|
const CSuggest& suggest = m_vSuggest[i];
|
||||||
@ -466,45 +464,35 @@ void CConsole::SuggestPanel(void)
|
|||||||
ImGui::PopID();
|
ImGui::PopID();
|
||||||
|
|
||||||
// Update the suggest position
|
// Update the suggest position
|
||||||
if (m_bSuggestMoved && !bViewChanged)
|
if (m_bSuggestMoved)
|
||||||
{
|
{
|
||||||
ImGuiWindow* const pWindow = ImGui::GetCurrentWindow();
|
|
||||||
ImRect imRect = ImGui::GetCurrentContext()->LastItemData.Rect;
|
|
||||||
|
|
||||||
if (bIsIndexActive) // Bring the 'active' element into view
|
if (bIsIndexActive) // Bring the 'active' element into view
|
||||||
{
|
{
|
||||||
|
ImGuiWindow* const pWindow = ImGui::GetCurrentWindow();
|
||||||
|
ImRect imRect = ImGui::GetCurrentContext()->LastItemData.Rect;
|
||||||
|
|
||||||
// Reset to keep flag in display.
|
// Reset to keep flag in display.
|
||||||
imRect.Min.x = pWindow->InnerRect.Min.x;
|
imRect.Min.x = pWindow->InnerRect.Min.x;
|
||||||
imRect.Max.x = pWindow->InnerRect.Min.x; // Set to Min.x on purpose!
|
imRect.Max.x = pWindow->InnerRect.Max.x;
|
||||||
|
|
||||||
// Eliminate jiggle when going up/down in the menu.
|
// Eliminate jiggle when going up/down in the menu.
|
||||||
imRect.Min.y += 1;
|
imRect.Min.y += 1;
|
||||||
imRect.Max.y -= 1;
|
imRect.Max.y -= 1;
|
||||||
|
|
||||||
bViewChanged = true;
|
|
||||||
}
|
|
||||||
else if (m_nSuggestPos == PositionMode_t::kPark) // Reset position; kPark = no active element.
|
|
||||||
{
|
|
||||||
imRect.Min.x = 0;
|
|
||||||
imRect.Max.x = 0;
|
|
||||||
imRect.Min.y = 0;
|
|
||||||
imRect.Max.y = 0;
|
|
||||||
|
|
||||||
bViewChanged = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (bViewChanged)
|
|
||||||
{
|
|
||||||
ImGui::ScrollToRect(pWindow, imRect);
|
ImGui::ScrollToRect(pWindow, imRect);
|
||||||
|
m_bSuggestMoved = false;
|
||||||
|
}
|
||||||
|
else if (m_nSuggestPos == PositionMode_t::kPark)
|
||||||
|
{
|
||||||
|
// Reset position; kPark = no active element.
|
||||||
|
ImGui::SetScrollX(0.0f);
|
||||||
|
ImGui::SetScrollY(0.0f);
|
||||||
|
|
||||||
|
m_bSuggestMoved = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (bViewChanged)
|
|
||||||
{
|
|
||||||
m_bSuggestMoved = false;
|
|
||||||
}
|
|
||||||
|
|
||||||
ImGui::PopAllowKeyboardFocus();
|
ImGui::PopAllowKeyboardFocus();
|
||||||
ImGui::End();
|
ImGui::End();
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user