Selaa lähdekoodia

Hopefully better logic for on-screen keyboard visibility

Ivan Savenko 1 vuosi sitten
vanhempi
sitoutus
fe4b4a4fba
2 muutettua tiedostoa jossa 24 lisäystä ja 2 poistoa
  1. 22 2
      client/widgets/CTextInput.cpp
  2. 2 0
      client/widgets/CTextInput.h

+ 22 - 2
client/widgets/CTextInput.cpp

@@ -263,6 +263,24 @@ void CTextInput::numberFilter(std::string & text, const std::string & oldText, i
 	}
 }
 
+void CTextInput::activate()
+{
+	CFocusable::activate();
+#if !defined(VCMI_MOBILE)
+	if (hasFocus())
+		GH.startTextInput(pos);
+#endif
+}
+
+void CTextInput::deactivate()
+{
+	CFocusable::deactivate();
+#if !defined(VCMI_MOBILE)
+	if (hasFocus())
+		GH.stopTextInput();
+#endif
+}
+
 void CTextInput::onFocusGot()
 {
 	updateLabel();
@@ -275,13 +293,15 @@ void CTextInput::onFocusLost()
 
 void CFocusable::focusGot()
 {
-	GH.startTextInput(pos);
+	if (isActive())
+		GH.startTextInput(pos);
 	onFocusGot();
 }
 
 void CFocusable::focusLost()
 {
-	GH.stopTextInput();
+	if (isActive())
+		GH.stopTextInput();
 	onFocusLost();
 }
 

+ 2 - 0
client/widgets/CTextInput.h

@@ -101,4 +101,6 @@ public:
 
 	// CIntObject interface impl
 	void keyPressed(EShortcut key) final;
+	void activate() final;
+	void deactivate() final;
 };