diff --git a/r5dev/gameui/IConsole.cpp b/r5dev/gameui/IConsole.cpp index 8a1cc666..dfcaa8a5 100644 --- a/r5dev/gameui/IConsole.cpp +++ b/r5dev/gameui/IConsole.cpp @@ -214,11 +214,12 @@ void CConsole::BasePanel(void) m_bCopyToClipBoard = false; } - if (m_nScrollBack > 0) + if (!m_Logger.m_bScrolledToMax && m_nScrollBack > 0) { ImGui::SetScrollY(ImGui::GetScrollY() - m_nScrollBack * fontSize.y); m_nScrollBack = 0; } + m_nScrollBack = 0; /////////////////////////////////////////////////////////////////////// ImGui::EndChild(); diff --git a/r5dev/thirdparty/imgui/include/imgui_logger.h b/r5dev/thirdparty/imgui/include/imgui_logger.h index 558d7c81..c61e2061 100644 --- a/r5dev/thirdparty/imgui/include/imgui_logger.h +++ b/r5dev/thirdparty/imgui/include/imgui_logger.h @@ -205,6 +205,7 @@ private: public: bool m_bAutoScroll; bool m_bScrollToBottom; + bool m_bScrolledToMax; private: bool m_bHandleKeyboardInputs; bool m_bHandleMouseInputs; diff --git a/r5dev/thirdparty/imgui/src/imgui_logger.cpp b/r5dev/thirdparty/imgui/src/imgui_logger.cpp index 7e662a8c..7a358d53 100644 --- a/r5dev/thirdparty/imgui/src/imgui_logger.cpp +++ b/r5dev/thirdparty/imgui/src/imgui_logger.cpp @@ -28,6 +28,7 @@ CTextLogger::CTextLogger() , m_bAutoScroll(true) , m_bScrollToBottom(true) , m_bScrollToCursor(false) + , m_bScrolledToMax(false) , m_flTextStart(0.0f) , m_nLeftMargin(0) , m_bCursorPositionChanged(false) @@ -860,8 +861,9 @@ void CTextLogger::Render() ImGui::Dummy(ImVec2((longest + 2), m_Lines.size() * m_CharAdvance.y)); + m_bScrolledToMax = ImGui::GetScrollY() >= ImGui::GetScrollMaxY(); - if (m_bScrollToBottom || (!m_bScrollToCursor && m_bAutoScroll && ImGui::GetScrollY() >= ImGui::GetScrollMaxY())) + if (m_bScrollToBottom || (!m_bScrollToCursor && m_bAutoScroll && m_bScrolledToMax)) { ImGui::SetScrollHereY(1.0f); m_bScrollToBottom = false;