From e2118c89c33b5cc70ba2de97f63aa6bdd054094d Mon Sep 17 00:00:00 2001 From: Benau Date: Fri, 3 Sep 2021 22:02:54 +0800 Subject: [PATCH] Save scrollbar position when opening server info dialog --- src/states_screens/dialogs/server_info_dialog.cpp | 11 +++++++++++ src/states_screens/online/server_selection.hpp | 3 +++ 2 files changed, 14 insertions(+) diff --git a/src/states_screens/dialogs/server_info_dialog.cpp b/src/states_screens/dialogs/server_info_dialog.cpp index 4ced8fce2..64da0a952 100644 --- a/src/states_screens/dialogs/server_info_dialog.cpp +++ b/src/states_screens/dialogs/server_info_dialog.cpp @@ -20,6 +20,7 @@ #include "io/file_manager.hpp" #include "graphics/irr_driver.hpp" #include "guiengine/engine.hpp" +#include "guiengine/widgets/CGUISTKListBox.hpp" #include "guiengine/widgets/icon_button_widget.hpp" #include "guiengine/widgets/label_widget.hpp" #include "guiengine/widgets/list_widget.hpp" @@ -280,7 +281,17 @@ void ServerInfoDialog::updateBookmarkStatus(bool change_bookmark) m_bookmark_widget->setImage(m_remove_icon); } } + GUIEngine::ListWidget* w = + ServerSelection::getInstance()->getServerList(); + CGUISTKListBox* box = NULL; + if (w) + box = w->getIrrlichtElement(); + int old_pos = -1; + if (box) + old_pos = box->getScrollBar()->getPos(); ServerSelection::getInstance()->copyFromServerList(); + if (box) + box->getScrollBar()->setPos(old_pos); } // updateBookmarkStatus // ----------------------------------------------------------------------------- diff --git a/src/states_screens/online/server_selection.hpp b/src/states_screens/online/server_selection.hpp index a6a996b26..2caa9a42a 100644 --- a/src/states_screens/online/server_selection.hpp +++ b/src/states_screens/online/server_selection.hpp @@ -122,6 +122,9 @@ public: { return false; } void copyFromServerList(); + + GUIEngine::ListWidget* getServerList() const + { return m_server_list_widget; } }; // ServerSelection #endif