Send a on_receive_fields event when formspec is closed, with fields.quit = "true"
authorNovatux <nathanael.courant@laposte.net>
Sat, 26 Oct 2013 07:56:38 +0000 (09:56 +0200)
committerNovatux <nathanael.courant@laposte.net>
Sun, 3 Nov 2013 10:53:59 +0000 (11:53 +0100)
src/guiFormSpecMenu.cpp
src/guiFormSpecMenu.h

index 25adf8ea7d5e6abc390c6d372b0a189b9d889225..f3d4568ef6303e097bae3362560ff1fb0420167d 100644 (file)
@@ -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 {
index c244e458f08105141e2fa3f6a85cf3acf5dad119..20ab52e8b027f21c1eedc73bbd35e89ac05097af 100644 (file)
@@ -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);