diff options
author | Novatux <nathanael.courant@laposte.net> | 2013-10-26 09:56:38 +0200 |
---|---|---|
committer | Novatux <nathanael.courant@laposte.net> | 2013-11-03 11:53:59 +0100 |
commit | 0b788892898013cd430c48b98e21a3fd111c3c7f (patch) | |
tree | 8fd707d8fb91bfdc377f81e7679d0aadddd79434 | |
parent | 06a5eceb81f8f5006814e567790166a0d7693972 (diff) | |
download | minetest-0b788892898013cd430c48b98e21a3fd111c3c7f.tar.gz minetest-0b788892898013cd430c48b98e21a3fd111c3c7f.tar.bz2 minetest-0b788892898013cd430c48b98e21a3fd111c3c7f.zip |
Send a on_receive_fields event when formspec is closed, with fields.quit = "true"
-rw-r--r-- | src/guiFormSpecMenu.cpp | 30 | ||||
-rw-r--r-- | src/guiFormSpecMenu.h | 2 |
2 files changed, 21 insertions, 11 deletions
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<std::string, std::string> 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); |