1
0
mirror of https://github.com/vcmi/vcmi.git synced 2024-11-24 08:32:34 +02:00

code review

This commit is contained in:
Laserlicht 2023-10-14 12:08:38 +02:00 committed by GitHub
parent 785c6507a6
commit 7217992898
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 40 additions and 6 deletions

View File

@ -1041,7 +1041,7 @@ void OptionsTab::SelectedBox::scrollBy(int distance)
}
OptionsTab::PlayerOptionsEntry::PlayerOptionsEntry(const PlayerSettings & S, const OptionsTab & parent)
: CIntObject(KEYBOARD | TEXTINPUT)
: CIntObject(LCLICK | KEYBOARD | TEXTINPUT)
, pi(std::make_unique<PlayerInfo>(SEL->getPlayerInfo(S.color)))
, s(std::make_unique<PlayerSettings>(S))
, parentTab(parent)
@ -1132,14 +1132,34 @@ void OptionsTab::PlayerOptionsEntry::keyPressed(EShortcut key)
if(labelPlayerNameEdit)
{
if(key == EShortcut::GLOBAL_ACCEPT)
{
CSH->setPlayerName(s->color, labelPlayerNameEdit->getText());
Settings name = settings.write["general"]["playerName"];
name->String() = labelPlayerNameEdit->getText();
}
changeName();
}
}
bool OptionsTab::PlayerOptionsEntry::receiveEvent(const Point & position, int eventType) const
{
return eventType == AEventsReceiver::LCLICK; // capture all left clicks (not only within control)
}
void OptionsTab::PlayerOptionsEntry::clickReleased(const Point & cursorPosition)
{
if(labelPlayerNameEdit && !labelPlayerNameEdit->pos.isInside(cursorPosition) && labelPlayerNameEdit->hasFocus())
{
changeName();
}
}
void OptionsTab::PlayerOptionsEntry::changeName() {
if(settings["general"]["playerName"].String() != labelPlayerNameEdit->getText())
{
CSH->setPlayerName(s->color, labelPlayerNameEdit->getText());
Settings set = settings.write["general"]["playerName"];
set->String() = labelPlayerNameEdit->getText();
}
labelPlayerNameEdit->removeFocus();
}
void OptionsTab::onSetPlayerClicked(const PlayerSettings & ps) const
{
if(ps.isControlledByAI() || humanPlayers > 0)

View File

@ -189,8 +189,12 @@ private:
void hideUnavailableButtons();
bool captureThisKey(EShortcut key) override;
void keyPressed(EShortcut key) override;
void clickReleased(const Point & cursorPosition) override;
bool receiveEvent(const Point & position, int eventType) const override;
private:
const OptionsTab & parentTab;
void changeName();
};
};

View File

@ -806,3 +806,12 @@ void CFocusable::moveFocus()
}
}
}
void CFocusable::removeFocus()
{
focus = false;
focusListener->focusLost();
redraw();
inputWithFocus = nullptr;
}

View File

@ -184,6 +184,7 @@ public:
void giveFocus(); //captures focus
void moveFocus(); //moves focus to next active control (may be used for tab switching)
void removeFocus(); //remove focus
bool hasFocus() const;
static std::list<CFocusable *> focusables; //all existing objs