Fix #235 and other changes

This commit is contained in:
Eduardo Bart
2013-01-26 18:40:03 -02:00
parent 2fd3c643c4
commit 4b1db2bcd6
7 changed files with 46 additions and 37 deletions

View File

@@ -977,7 +977,7 @@ void UIWidget::setFocusable(bool focusable)
if(UIWidgetPtr parent = getParent()) {
if(!focusable && isFocused()) {
parent->focusPreviousChild(Fw::ActiveFocusReason, true);
} else if(focusable && (!parent->getFocusedChild() && parent->getAutoFocusPolicy() != Fw::AutoFocusNone)) {
} else if(focusable && !parent->getFocusedChild() && parent->getAutoFocusPolicy() != Fw::AutoFocusNone) {
focus();
}
}

View File

@@ -48,6 +48,26 @@ void UIWidget::initBaseStyle()
void UIWidget::parseBaseStyle(const OTMLNodePtr& styleNode)
{
// parse lua variables and callbacks first
for(const OTMLNodePtr& node : styleNode->children()) {
// lua functions
if(stdext::starts_with(node->tag(), "@")) {
// load once
if(m_firstOnStyle) {
std::string funcName = node->tag().substr(1);
std::string funcOrigin = "@" + node->source() + ": [" + node->tag() + "]";
g_lua.loadFunction(node->value(), funcOrigin);
luaSetField(funcName);
}
// lua fields value
} else if(stdext::starts_with(node->tag(), "&")) {
std::string fieldName = node->tag().substr(1);
std::string fieldOrigin = "@" + node->source() + ": [" + node->tag() + "]";
g_lua.evaluateExpression(node->value(), fieldOrigin);
luaSetField(fieldName);
}
}
// load styles used by all widgets
for(const OTMLNodePtr& node : styleNode->children()) {
if(node->tag() == "color")
@@ -309,22 +329,6 @@ void UIWidget::parseBaseStyle(const OTMLNodePtr& styleNode)
addAnchor(anchoredEdge, hookedWidgetId, hookedEdge);
}
}
// lua functions
} else if(stdext::starts_with(node->tag(), "@")) {
// load once
if(m_firstOnStyle) {
std::string funcName = node->tag().substr(1);
std::string funcOrigin = "@" + node->source() + ": [" + node->tag() + "]";
g_lua.loadFunction(node->value(), funcOrigin);
luaSetField(funcName);
}
// lua fields value
} else if(stdext::starts_with(node->tag(), "&")) {
std::string fieldName = node->tag().substr(1);
std::string fieldOrigin = "@" + node->source() + ": [" + node->tag() + "]";
g_lua.evaluateExpression(node->value(), fieldOrigin);
luaSetField(fieldName);
}
}
}