fix shaders for ios, add separator for combobox

This commit is contained in:
2017-11-16 09:54:57 +00:00
parent c7523310d5
commit d44434a458
5 changed files with 55 additions and 30 deletions

View File

@@ -12,7 +12,7 @@ void NodeComboBox::clone_copy(Node* dest) const
{
NodeButton::clone_copy(dest);
NodeComboBox* n = static_cast<NodeComboBox*>(dest);
n->labels = labels;
n->m_data = m_data;
n->m_current_index = m_current_index;
}
@@ -25,27 +25,40 @@ void NodeComboBox::loaded()
popup->create();
popup->loaded();
root()->add_child(popup);
for (int i = 0; i < labels.size(); i++)
m_items.clear();
for (int i = 0; i < m_data.size(); i++)
{
NodeButton* btn = new NodeButton;
btn->init();
btn->create();
btn->loaded();
popup->add_child(btn);
btn->m_text->set_text(labels[i].c_str());
btn->m_border->SetWidthP(100.f);
btn->m_border->SetHeight(30.f);
btn->on_click = [this,popup,btn](Node* target) {
int index = popup->get_child_index(target);
m_current_index = index;
m_text->set_text(labels[index].c_str());
popup->mouse_release();
popup->destroy();
if (on_select)
on_select(btn, index);
};
if (m_data[i] == "-")
{
auto n = popup->add_child<NodeBorder>();
n->SetHeight(5.f);
n->SetWidthP(100.f);
n->m_color = {0, 0, 0, 1};
}
else
{
auto btn = popup->add_child<NodeButton>();
btn->m_text->set_text(m_data[i].c_str());
btn->m_border->SetWidthP(100.f);
btn->m_border->SetHeight(30.f);
int index = (int)m_items.size();
m_items.push_back(m_data[i]);
btn->on_click = [this,popup,btn,index](Node* target) {
m_current_index = index;
m_selected_child_index = popup->get_child_index(target);
m_text->set_text(m_items[index].c_str());
popup->mouse_release();
popup->destroy();
if (on_select)
on_select(btn, index);
};
}
}
glm::vec2 pos = m_pos + glm::vec2(0, m_size.y - (m_current_index+1) * 30.f);
float offset = 0;
for (int i = 0; i <= m_selected_child_index; i++)
offset += (m_data[i] == "-") ? 5.f : 30.f;
glm::vec2 pos = m_pos + glm::vec2(0, m_size.y - offset);
popup->SetPositioning(YGPositionTypeAbsolute);
popup->SetPosition(pos.x, pos.y);
popup->SetSize(m_size.x, YGUndefined);
@@ -66,7 +79,7 @@ void NodeComboBox::parse_attributes(kAttribute ka, const tinyxml2::XMLAttribute*
{
case kAttribute::ComboList:
{
labels = split(attr->Value(), ',');
m_data = split(attr->Value(), ',');
break;
}
case kAttribute::Default: