aboutsummaryrefslogtreecommitdiff
path: root/src/gui
diff options
context:
space:
mode:
Diffstat (limited to 'src/gui')
-rw-r--r--src/gui/guiFormSpecMenu.cpp59
-rw-r--r--src/gui/guiFormSpecMenu.h2
2 files changed, 26 insertions, 35 deletions
diff --git a/src/gui/guiFormSpecMenu.cpp b/src/gui/guiFormSpecMenu.cpp
index 18bcef292..68222b319 100644
--- a/src/gui/guiFormSpecMenu.cpp
+++ b/src/gui/guiFormSpecMenu.cpp
@@ -127,23 +127,7 @@ GUIFormSpecMenu::GUIFormSpecMenu(JoystickController *joystick,
GUIFormSpecMenu::~GUIFormSpecMenu()
{
- removeAllChildren();
- removeTooltip();
-
- for (auto &table_it : m_tables)
- table_it.second->drop();
- for (auto &inventorylist_it : m_inventorylists)
- inventorylist_it->drop();
- for (auto &checkbox_it : m_checkboxes)
- checkbox_it.second->drop();
- for (auto &scrollbar_it : m_scrollbars)
- scrollbar_it.second->drop();
- for (auto &tooltip_rect_it : m_tooltip_rects)
- tooltip_rect_it.first->drop();
- for (auto &clickthrough_it : m_clickthrough_elements)
- clickthrough_it->drop();
- for (auto &scroll_container_it : m_scroll_containers)
- scroll_container_it.second->drop();
+ removeAll();
delete m_selected_item;
delete m_form_src;
@@ -2807,6 +2791,28 @@ void GUIFormSpecMenu::parseModel(parserData *data, const std::string &element)
m_fields.push_back(spec);
}
+void GUIFormSpecMenu::removeAll()
+{
+ // Remove children
+ removeAllChildren();
+ removeTooltip();
+
+ for (auto &table_it : m_tables)
+ table_it.second->drop();
+ for (auto &inventorylist_it : m_inventorylists)
+ inventorylist_it->drop();
+ for (auto &checkbox_it : m_checkboxes)
+ checkbox_it.second->drop();
+ for (auto &scrollbar_it : m_scrollbars)
+ scrollbar_it.second->drop();
+ for (auto &tooltip_rect_it : m_tooltip_rects)
+ tooltip_rect_it.first->drop();
+ for (auto &clickthrough_it : m_clickthrough_elements)
+ clickthrough_it->drop();
+ for (auto &scroll_container_it : m_scroll_containers)
+ scroll_container_it.second->drop();
+}
+
void GUIFormSpecMenu::parseElement(parserData* data, const std::string &element)
{
//some prechecks
@@ -3049,24 +3055,7 @@ void GUIFormSpecMenu::regenerateGui(v2u32 screensize)
m_focused_element = nullopt;
}
- // Remove children
- removeAllChildren();
- removeTooltip();
-
- for (auto &table_it : m_tables)
- table_it.second->drop();
- for (auto &inventorylist_it : m_inventorylists)
- inventorylist_it->drop();
- for (auto &checkbox_it : m_checkboxes)
- checkbox_it.second->drop();
- for (auto &scrollbar_it : m_scrollbars)
- scrollbar_it.second->drop();
- for (auto &tooltip_rect_it : m_tooltip_rects)
- tooltip_rect_it.first->drop();
- for (auto &clickthrough_it : m_clickthrough_elements)
- clickthrough_it->drop();
- for (auto &scroll_container_it : m_scroll_containers)
- scroll_container_it.second->drop();
+ removeAll();
mydata.size = v2s32(100, 100);
mydata.screensize = screensize;
diff --git a/src/gui/guiFormSpecMenu.h b/src/gui/guiFormSpecMenu.h
index d745eab80..36a84c13c 100644
--- a/src/gui/guiFormSpecMenu.h
+++ b/src/gui/guiFormSpecMenu.h
@@ -404,6 +404,8 @@ private:
std::string current_field_enter_pending = "";
std::vector<std::string> m_hovered_item_tooltips;
+ void removeAll();
+
void parseElement(parserData* data, const std::string &element);
void parseSize(parserData* data, const std::string &element);