Browse Source

fix focusing input on Save screen

Andrey Filipenkov 4 years ago
parent
commit
bca46d9560
2 changed files with 8 additions and 2 deletions
  1. 7 2
      client/lobby/SelectionTab.cpp
  2. 1 0
      client/lobby/SelectionTab.h

+ 7 - 2
client/lobby/SelectionTab.cpp

@@ -129,7 +129,7 @@ static ESortBy getSortBySelectionScreen(ESelectionScreen Type)
 }
 
 SelectionTab::SelectionTab(ESelectionScreen Type)
-	: CIntObject(LCLICK | WHEEL | KEYBOARD | DOUBLECLICK), callOnSelect(nullptr), tabType(Type), selectionPos(0), sortModeAscending(true)
+	: CIntObject(LCLICK | WHEEL | KEYBOARD | DOUBLECLICK), callOnSelect(nullptr), tabType(Type), selectionPos(0), sortModeAscending(true), inputNameRect{32, 539, 350, 20}
 {
 	OBJ_CONSTRUCTION;
 
@@ -140,7 +140,7 @@ SelectionTab::SelectionTab(ESelectionScreen Type)
 		sortingBy = _format;
 		background = std::make_shared<CPicture>("SCSELBCK.bmp", 0, 6);
 		pos = background->pos;
-		inputName = std::make_shared<CTextInput>(Rect(32, 539, 350, 20), Point(-32, -25), "GSSTRIP.bmp", 0);
+		inputName = std::make_shared<CTextInput>(inputNameRect, Point(-32, -25), "GSSTRIP.bmp", 0);
 		inputName->filters += CTextInput::filenameFilter;
 		labelMapSizes = std::make_shared<CLabel>(87, 62, FONT_SMALL, EAlignment::CENTER, Colors::YELLOW, CGI->generaltexth->allTexts[510]);
 
@@ -273,6 +273,11 @@ void SelectionTab::clickLeft(tribool down, bool previousState)
 		{
 			select(line);
 		}
+#ifdef VCMI_IOS
+        // focus input field if clicked inside it
+        else if(inputName->active && inputNameRect.isIn(GH.current->button.x, GH.current->button.y))
+            inputName->giveFocus();
+#endif
 	}
 }
 

+ 1 - 0
client/lobby/SelectionTab.h

@@ -90,6 +90,7 @@ private:
 	std::shared_ptr<CLabel> labelTabTitle;
 	std::shared_ptr<CLabel> labelMapSizes;
 	ESelectionScreen tabType;
+    Rect inputNameRect;
 
 	void parseMaps(const std::unordered_set<ResourceID> & files);
 	void parseSaves(const std::unordered_set<ResourceID> & files);