diff --git a/data/gui/screens/online/server_selection.stkgui b/data/gui/screens/online/server_selection.stkgui
index 69ecb61dd..980f4c1f4 100644
--- a/data/gui/screens/online/server_selection.stkgui
+++ b/data/gui/screens/online/server_selection.stkgui
@@ -19,10 +19,10 @@
-
+
+ I18N="In the server selection screen" text="Use IPV6 connection if server supports"/>
diff --git a/src/states_screens/online/server_selection.cpp b/src/states_screens/online/server_selection.cpp
index b99303c9e..c2185c256 100644
--- a/src/states_screens/online/server_selection.cpp
+++ b/src/states_screens/online/server_selection.cpp
@@ -98,11 +98,11 @@ void ServerSelection::loadedFromFile()
m_private_server = getWidget("private_server");
assert(m_private_server != NULL);
m_private_server->setState(false);
- m_game_started = getWidget("game_started");
- assert(m_game_started != NULL);
+ m_ipv6 = getWidget("ipv6");
+ assert(m_ipv6 != NULL);
m_searcher = getWidget("searcher");
assert(m_searcher != NULL);
- m_game_started->setState(false);
+ m_ipv6->setState(false);
m_icon_bank = new irr::gui::STKModifiedSpriteBank(GUIEngine::getGUIEnv());
} // loadedFromFile
@@ -133,6 +133,12 @@ void ServerSelection::beforeAddingWidget()
void ServerSelection::init()
{
Screen::init();
+
+#ifndef ENABLE_IPV6
+ m_ipv6->setState(false);
+ m_ipv6->setActive(false);
+#endif
+
m_current_column = 5/*distance*/;
m_searcher->clearListeners();
m_searcher->addListener(this);
@@ -296,7 +302,7 @@ void ServerSelection::eventCallback(GUIEngine::Widget* widget,
{
refresh(true);
}
- else if (name == "private_server" || name == "game_started")
+ else if (name == "private_server" || name == "ipv6")
{
copyFromServersManager();
}
@@ -310,6 +316,10 @@ void ServerSelection::eventCallback(GUIEngine::Widget* widget,
{
return;
}
+#ifdef ENABLE_IPV6
+ if (!m_servers[selected_index]->getIPV6Address().empty())
+ m_servers[selected_index]->setIPV6Connection(m_ipv6->getState());
+#endif
new ServerInfoDialog(m_servers[selected_index]);
} // click on server
@@ -388,7 +398,7 @@ void ServerSelection::copyFromServersManager()
m_servers.erase(std::remove_if(m_servers.begin(), m_servers.end(),
[this](const std::shared_ptr& a)->bool
{
- if (m_game_started->getState() && a->isGameStarted())
+ if (m_ipv6->getState() && a->getIPV6Address().empty())
return true;
return false;
}), m_servers.end());
diff --git a/src/states_screens/online/server_selection.hpp b/src/states_screens/online/server_selection.hpp
index cc68a409d..daf2c7c0d 100644
--- a/src/states_screens/online/server_selection.hpp
+++ b/src/states_screens/online/server_selection.hpp
@@ -61,7 +61,7 @@ private:
std::vector > m_servers;
GUIEngine::CheckBoxWidget* m_private_server;
- GUIEngine::CheckBoxWidget* m_game_started;
+ GUIEngine::CheckBoxWidget* m_ipv6;
GUIEngine::IconButtonWidget* m_reload_widget;
GUIEngine::LabelWidget* m_update_status;
GUIEngine::ListWidget* m_server_list_widget;