mirror of
https://github.com/edubart/otclient.git
synced 2025-10-14 19:44:54 +02:00
enable enter/escape actions for windows
This commit is contained in:
@@ -33,8 +33,6 @@ UILineEdit::UILineEdit()
|
||||
m_startRenderPos = 0;
|
||||
m_textHorizontalMargin = 3;
|
||||
blinkCursor();
|
||||
|
||||
m_onAction = [this]() { this->callLuaField("onAction"); };
|
||||
}
|
||||
|
||||
void UILineEdit::render()
|
||||
@@ -365,9 +363,6 @@ void UILineEdit::onStyleApply(const OTMLNodePtr& styleNode)
|
||||
if(node->tag() == "text") {
|
||||
setText(node->value());
|
||||
setCursorPos(m_text.length());
|
||||
} else if(node->tag() == "onAction") {
|
||||
g_lua.loadFunction(node->value(), "@" + node->source() + "[" + node->tag() + "]");
|
||||
luaSetField(node->tag());
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -406,9 +401,6 @@ bool UILineEdit::onKeyPress(uchar keyCode, char keyChar, int keyboardModifiers)
|
||||
else if(keyCode == Fw::KeyTab) {
|
||||
if(UIWidgetPtr parent = getParent())
|
||||
parent->focusNextChild(Fw::TabFocusReason);
|
||||
} else if(keyCode == Fw::KeyReturn || keyCode == Fw::KeyEnter) {
|
||||
if(m_onAction)
|
||||
m_onAction();
|
||||
} else if(keyChar != 0)
|
||||
appendCharacter(keyChar);
|
||||
else
|
||||
|
@@ -67,7 +67,6 @@ private:
|
||||
int m_startRenderPos;
|
||||
int m_cursorTicks;
|
||||
int m_textHorizontalMargin;
|
||||
SimpleCallback m_onAction;
|
||||
|
||||
std::vector<Rect> m_glyphsCoords;
|
||||
std::vector<Rect> m_glyphsTexCoords;
|
||||
|
@@ -85,6 +85,14 @@ void UIWindow::onStyleApply(const OTMLNodePtr& styleNode)
|
||||
else if(node->tag() == "title") {
|
||||
setTitle(node->value());
|
||||
}
|
||||
else if(node->tag() == "onEnter") {
|
||||
g_lua.loadFunction(node->value(), "@" + node->source() + "[" + node->tag() + "]");
|
||||
luaSetField(node->tag());
|
||||
}
|
||||
else if(node->tag() == "onEscape") {
|
||||
g_lua.loadFunction(node->value(), "@" + node->source() + "[" + node->tag() + "]");
|
||||
luaSetField(node->tag());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -145,3 +153,17 @@ bool UIWindow::onMouseMove(const Point& mousePos, const Point& mouseMoved)
|
||||
}
|
||||
return UIWidget::onMouseMove(mousePos, mouseMoved);
|
||||
}
|
||||
|
||||
bool UIWindow::onKeyPress(uchar keyCode, char keyChar, int keyboardModifiers)
|
||||
{
|
||||
if(keyboardModifiers == Fw::KeyboardNoModifier) {
|
||||
if(keyCode == Fw::KeyReturn || keyCode == Fw::KeyEnter) {
|
||||
if(callLuaField<bool>("onEnter"))
|
||||
return true;
|
||||
} else if(keyCode == Fw::KeyEscape) {
|
||||
if(callLuaField<bool>("onEscape"))
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return UIWidget::onKeyPress(keyCode, keyChar, keyboardModifiers);
|
||||
}
|
||||
|
@@ -41,6 +41,7 @@ protected:
|
||||
virtual bool onMousePress(const Point& mousePos, Fw::MouseButton button);
|
||||
virtual bool onMouseRelease(const Point& mousePos, Fw::MouseButton button);
|
||||
virtual bool onMouseMove(const Point& mousePos, const Point& mouseMoved);
|
||||
virtual bool onKeyPress(uchar keyCode, char keyChar, int keyboardModifiers);
|
||||
|
||||
private:
|
||||
std::string m_title;
|
||||
|
Reference in New Issue
Block a user