From: Novatux Date: Sat, 26 Oct 2013 07:56:38 +0000 (+0200) Subject: Send a on_receive_fields event when formspec is closed, with fields.quit = "true" X-Git-Tag: 0.4.8~79 X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=0b788892898013cd430c48b98e21a3fd111c3c7f;p=oweals%2Fminetest.git Send a on_receive_fields event when formspec is closed, with fields.quit = "true" --- diff --git a/src/guiFormSpecMenu.cpp b/src/guiFormSpecMenu.cpp index 25adf8ea7..f3d4568ef 100644 --- a/src/guiFormSpecMenu.cpp +++ b/src/guiFormSpecMenu.cpp @@ -2041,12 +2041,16 @@ ItemStack GUIFormSpecMenu::verifySelectedItem() return ItemStack(); } -void GUIFormSpecMenu::acceptInput() +void GUIFormSpecMenu::acceptInput(bool quit=false) { if(m_text_dst) { std::map fields; + if (quit) { + fields["quit"] = "true"; + } + if (current_keys_pending.key_down) { fields["key_down"] = "true"; current_keys_pending.key_down = false; @@ -2188,10 +2192,12 @@ bool GUIFormSpecMenu::OnEvent(const SEvent& event) if (event.KeyInput.PressedDown && (kp == EscapeKey || kp == getKeySetting("keymap_inventory"))) { - if (m_allowclose) + if (m_allowclose) { + acceptInput(true); quitMenu(); - else + } else { m_text_dst->gotText(narrow_to_wide("MenuQuit")); + } return true; } if (event.KeyInput.PressedDown && @@ -2204,7 +2210,7 @@ bool GUIFormSpecMenu::OnEvent(const SEvent& event) switch (event.KeyInput.Key) { case KEY_RETURN: if (m_allowclose) { - acceptInput(); + acceptInput(true); quitMenu(); } else @@ -2551,11 +2557,13 @@ bool GUIFormSpecMenu::OnEvent(const SEvent& event) unsigned int btn_id = event.GUIEvent.Caller->getID(); if (btn_id == 257) { - acceptInput(); - if (m_allowclose) + if (m_allowclose) { + acceptInput(true); quitMenu(); - else + } else { + acceptInput(); m_text_dst->gotText(narrow_to_wide("ExitButton")); + } // quitMenu deallocates menu return true; } @@ -2572,10 +2580,12 @@ bool GUIFormSpecMenu::OnEvent(const SEvent& event) s.send = true; acceptInput(); if(s.is_exit){ - if (m_allowclose) + if (m_allowclose) { + acceptInput(true); quitMenu(); - else + } else { m_text_dst->gotText(narrow_to_wide("ExitButton")); + } return true; }else{ s.send = false; @@ -2590,7 +2600,7 @@ bool GUIFormSpecMenu::OnEvent(const SEvent& event) { if (m_allowclose) { - acceptInput(); + acceptInput(true); quitMenu(); } else { diff --git a/src/guiFormSpecMenu.h b/src/guiFormSpecMenu.h index c244e458f..20ab52e8b 100644 --- a/src/guiFormSpecMenu.h +++ b/src/guiFormSpecMenu.h @@ -227,7 +227,7 @@ public: void updateSelectedItem(); ItemStack verifySelectedItem(); - void acceptInput(); + void acceptInput(bool quit); bool preprocessEvent(const SEvent& event); bool OnEvent(const SEvent& event);