]> git.lizzy.rs Git - dragonfireclient.git/blobdiff - src/gui/guiConfirmRegistration.cpp
Android: Fix ConfirmRegistration and PasswordChange input and scale size (#10182)
[dragonfireclient.git] / src / gui / guiConfirmRegistration.cpp
index 58ac427406d210cebb86e17176caeceaddacda5b..020a2796a4d6c58591a910086ec266db064e208c 100644 (file)
@@ -73,7 +73,11 @@ void GUIConfirmRegistration::regenerateGui(v2u32 screensize)
        /*
                Calculate new sizes and positions
        */
+#ifdef __ANDROID__
+       const float s = m_gui_scale * porting::getDisplayDensity() / 2;
+#else
        const float s = m_gui_scale;
+#endif
        DesiredRect = core::rect<s32>(
                screensize.X / 2 - 600 * s / 2,
                screensize.Y / 2 - 360 * s / 2,
@@ -222,7 +226,7 @@ bool GUIConfirmRegistration::OnEvent(const SEvent &event)
 
        if (event.GUIEvent.EventType == gui::EGET_ELEMENT_FOCUS_LOST && isVisible()) {
                if (!canTakeFocus(event.GUIEvent.Element)) {
-                       dstream << "GUIConfirmRegistration: Not allowing focus change."
+                       infostream << "GUIConfirmRegistration: Not allowing focus change."
                                << std::endl;
                        // Returning true disables focus change
                        return true;
@@ -257,12 +261,19 @@ bool GUIConfirmRegistration::getAndroidUIInput()
        if (!hasAndroidUIInput() || m_jni_field_name != "password")
                return false;
 
-       std::string text = porting::getInputDialogValue();
-       gui::IGUIElement *e = getElementFromId(ID_confirmPassword);
-       if (e)
-               e->setText(utf8_to_wide(text).c_str());
+       // still waiting
+       if (porting::getInputDialogState() == -1)
+               return true;
 
        m_jni_field_name.clear();
+
+       gui::IGUIElement *e = getElementFromId(ID_confirmPassword);
+
+       if (!e || e->getType() != irr::gui::EGUIET_EDIT_BOX)
+               return false;
+
+       std::string text = porting::getInputDialogValue();
+       e->setText(utf8_to_wide(text).c_str());
        return false;
 }
 #endif