Don't show Android edit dialog when tapping read-only field (#7337)
authorMuhammad Rifqi Priyo Susanto <muhammadrifqipriyosusanto@gmail.com>
Tue, 15 May 2018 14:13:30 +0000 (21:13 +0700)
committerLoïc Blot <nerzhul@users.noreply.github.com>
Tue, 15 May 2018 14:13:30 +0000 (16:13 +0200)
* Don't show Android edit dialog when tapping read-only field

From Lua API, "If the name is empty the textarea is readonly."

src/gui/guiFormSpecMenu.cpp

index 12caf39eb3940d038d921466c5800e0bb15c9648..e522769f761c8211056f1a52c340039a65605589 100644 (file)
@@ -3026,29 +3026,31 @@ bool GUIFormSpecMenu::preprocessEvent(const SEvent& event)
                                core::position2d<s32>(event.MouseInput.X, event.MouseInput.Y));
                if ((hovered) && (hovered->getType() == irr::gui::EGUIET_EDIT_BOX)) {
                        bool retval = hovered->OnEvent(event);
-                       if (retval) {
+                       if (retval)
                                Environment->setFocus(hovered);
-                       }
-                       m_JavaDialogFieldName = getNameByID(hovered->getID());
+
+                       std::string field_name = getNameByID(hovered->getID());
+                       /* read-only field */
+                       if (field_name.empty())
+                               return retval;
+
+                       m_JavaDialogFieldName = field_name;
                        std::string message   = gettext("Enter ");
                        std::string label     = wide_to_utf8(getLabelByID(hovered->getID()));
-                       if (label == "") {
+                       if (label.empty())
                                label = "text";
-                       }
                        message += gettext(label) + ":";
 
                        /* single line text input */
                        int type = 2;
 
                        /* multi line text input */
-                       if (((gui::IGUIEditBox*) hovered)->isMultiLineEnabled()) {
+                       if (((gui::IGUIEditBox*) hovered)->isMultiLineEnabled())
                                type = 1;
-                       }
 
                        /* passwords are always single line */
-                       if (((gui::IGUIEditBox*) hovered)->isPasswordBox()) {
+                       if (((gui::IGUIEditBox*) hovered)->isPasswordBox())
                                type = 3;
-                       }
 
                        porting::showInputDialog(gettext("ok"), "",
                                        wide_to_utf8(((gui::IGUIEditBox*) hovered)->getText()),