gui fixes

This commit is contained in:
MihailRis 2024-04-17 01:25:09 +03:00
parent e059b9395f
commit fbc2cc5ce9
3 changed files with 17 additions and 4 deletions

View File

@ -229,7 +229,7 @@ void UINode::setGravity(Gravity gravity) {
switch (gravity) {
case Gravity::top_left:
case Gravity::center_left:
case Gravity::bottom_left: x = parentSize.x+margin.x; break;
case Gravity::bottom_left: x = margin.x; break;
case Gravity::top_center:
case Gravity::center_center:
case Gravity::bottom_center: x = (parentSize.x-size.x)/2.0f; break;
@ -241,7 +241,7 @@ void UINode::setGravity(Gravity gravity) {
switch (gravity) {
case Gravity::top_left:
case Gravity::top_center:
case Gravity::top_right: y = parentSize.y+margin.y; break;
case Gravity::top_right: y = margin.y; break;
case Gravity::center_left:
case Gravity::center_center:
case Gravity::center_right: y = (parentSize.y-size.y)/2.0f; break;

View File

@ -199,6 +199,7 @@ void Panel::fullRefresh() {
}
void Panel::add(std::shared_ptr<UINode> node) {
node->setResizing(true);
Container::add(node);
fullRefresh();
}

View File

@ -35,7 +35,7 @@ static Gravity gravity_from_string(const std::string& str) {
{"bottom-right", Gravity::bottom_right},
};
auto found = gravity_names.find(str);
if (found == gravity_names.end()) {
if (found != gravity_names.end()) {
return found->second;
}
return Gravity::none;
@ -229,7 +229,12 @@ static std::shared_ptr<UINode> readButton(UiXmlReader& reader, xml::xmlelement e
auto& elements = element->getElements();
if (!elements.empty() && elements.at(0)->getTag() != "#") {
glm::vec4 padding = element->attr("padding", "0,0,0,0").asVec4();
button = std::make_shared<Button>(reader.readUINode(element->getElements().at(0)), padding);
auto inner = reader.readUINode(element->getElements().at(0));
if (inner != nullptr) {
button = std::make_shared<Button>(inner, padding);
} else {
button = std::make_shared<Button>(L"", glm::vec4(0.0f), nullptr);
}
_readPanel(reader, element, *button, false);
} else {
std::wstring text = readAndProcessInnerText(element, reader.getContext());
@ -379,6 +384,13 @@ void UiXmlReader::addIgnore(const std::string& tag) {
}
std::shared_ptr<UINode> UiXmlReader::readUINode(xml::xmlelement element) {
if (element->has("if")) {
const auto& cond = element->attr("if").getText();
if (cond.empty() || cond == "false") {
return nullptr;
}
}
const std::string& tag = element->getTag();
auto found = readers.find(tag);
if (found == readers.end()) {