Submit name of field on enter key press
authorrubenwardy <rubenwardy@gmail.com>
Sun, 7 Aug 2016 15:01:00 +0000 (16:01 +0100)
committerrubenwardy <rubenwardy@gmail.com>
Sat, 27 Aug 2016 12:02:45 +0000 (13:02 +0100)
src/guiFormSpecMenu.cpp
src/guiFormSpecMenu.h

index a9cbb62547ce75e5df45c9bf067d93a1b9013b29..dd96da5a99a9524279cdd07010d1c11318a84ad8 100644 (file)
@@ -104,6 +104,7 @@ GUIFormSpecMenu::GUIFormSpecMenu(irr::IrrlichtDevice* dev,
        m_formspec_version(0),
        m_focused_element(""),
        m_joystick(joystick),
+       current_field_enter_pending(""),
        m_font(NULL),
        m_remap_dbl_click(remap_dbl_click)
 #ifdef __ANDROID__
@@ -2695,6 +2696,10 @@ void GUIFormSpecMenu::acceptInput(FormspecQuitMode quitmode=quit_mode_no)
                        current_keys_pending.key_enter = false;
                }
 
+               if (!current_field_enter_pending.empty()) {
+                       fields["key_enter_field"] = current_field_enter_pending;
+               }
+
                if (current_keys_pending.key_escape) {
                        fields["key_escape"] = "true";
                        current_keys_pending.key_escape = false;
@@ -3625,8 +3630,16 @@ bool GUIFormSpecMenu::OnEvent(const SEvent& event)
 
                if (event.GUIEvent.EventType == gui::EGET_EDITBOX_ENTER) {
                        if (event.GUIEvent.Caller->getID() > 257) {
+                               for (u32 i = 0; i < m_fields.size(); i++) {
+                                       FieldSpec &s = m_fields[i];
+                                       if (s.ftype == f_Unknown &&
+                                                       s.fid == event.GUIEvent.Caller->getID()) {
+                                               current_field_enter_pending = s.fname;
+                                       }
+                               }
 
                                if (m_allowclose) {
+                                       current_keys_pending.key_enter = true;
                                        acceptInput(quit_mode_accept);
                                        quitMenu();
                                } else {
index 2fb55070dac82806b41252f728a02a266aae7e5e..7b809df7128b1c14ac18d8e7f7d881eb40732562 100644 (file)
@@ -463,6 +463,7 @@ private:
        } fs_key_pendig;
 
        fs_key_pendig current_keys_pending;
+       std::string current_field_enter_pending;
 
        void parseElement(parserData* data,std::string element);
 
@@ -557,4 +558,3 @@ public:
 };
 
 #endif
-