diff --git a/cybersyn/scripts/gui.lua b/cybersyn/scripts/gui.lua index 1dd1528..6265a07 100644 --- a/cybersyn/scripts/gui.lua +++ b/cybersyn/scripts/gui.lua @@ -201,9 +201,6 @@ function gui_opened(comb, player) combinator_update(global, comb, true) local rootgui = player.gui.screen - if rootgui[COMBINATOR_NAME] then - rootgui[COMBINATOR_NAME].destroy() - end local selected_index, signal, switch_state, bits = get_comb_gui_settings(comb) local _, main_window = flib_gui.add(rootgui, { diff --git a/cybersyn/scripts/gui/main.lua b/cybersyn/scripts/gui/main.lua index 7628c42..d5030db 100644 --- a/cybersyn/scripts/gui/main.lua +++ b/cybersyn/scripts/gui/main.lua @@ -51,6 +51,15 @@ function manager_gui.on_lua_shortcut(e) if e.element then if e.element.name == "manager_window" then manager.wrapper(e, manager.handle.manager_toggle) + elseif e.element.name == COMBINATOR_NAME and e.name == defines.events.on_gui_closed then + -- With the manager enabled, this handler overwrites the combinator's + -- on_gui_close handler. Copy the logic to close the combinator's GUI here + -- as well. + local player = game.get_player(e.player_index) + if not player then return end + if player.gui.screen[COMBINATOR_NAME] then + player.gui.screen[COMBINATOR_NAME].destroy() + end end else manager.wrapper(e, manager.handle.manager_toggle)