added icons and popup menus
This commit is contained in:
@@ -156,7 +156,29 @@ void App::init()
|
||||
{
|
||||
menu_file->on_click = [=] {
|
||||
glm::vec2 pos = menu_file->m_pos + glm::vec2(0, menu_file->m_size.y);
|
||||
popup = (NodePopupMenu*)layout[const_hash("popup-menu")].m_children[0]->clone();
|
||||
popup = (NodePopupMenu*)layout[const_hash("file-menu")].m_children[0]->clone();
|
||||
popup->SetPositioning(YGPositionTypeAbsolute);
|
||||
popup->SetPosition(pos.x, pos.y);
|
||||
layout[main_id].add_child(popup);
|
||||
layout[main_id].update();
|
||||
};
|
||||
}
|
||||
if (auto* menu_file = layout[main_id].find<NodeButtonCustom>("menu-edit"))
|
||||
{
|
||||
menu_file->on_click = [=] {
|
||||
glm::vec2 pos = menu_file->m_pos + glm::vec2(0, menu_file->m_size.y);
|
||||
popup = (NodePopupMenu*)layout[const_hash("edit-menu")].m_children[0]->clone();
|
||||
popup->SetPositioning(YGPositionTypeAbsolute);
|
||||
popup->SetPosition(pos.x, pos.y);
|
||||
layout[main_id].add_child(popup);
|
||||
layout[main_id].update();
|
||||
};
|
||||
}
|
||||
if (auto* menu_file = layout[main_id].find<NodeButtonCustom>("menu-layers"))
|
||||
{
|
||||
menu_file->on_click = [=] {
|
||||
glm::vec2 pos = menu_file->m_pos + glm::vec2(0, menu_file->m_size.y);
|
||||
popup = (NodePopupMenu*)layout[const_hash("layers-menu")].m_children[0]->clone();
|
||||
popup->SetPositioning(YGPositionTypeAbsolute);
|
||||
popup->SetPosition(pos.x, pos.y);
|
||||
layout[main_id].add_child(popup);
|
||||
|
||||
@@ -14,6 +14,9 @@ class App
|
||||
NodeMessageBox* msgbox;
|
||||
NodeSettings* settings;
|
||||
NodePopupMenu* popup = nullptr;
|
||||
NodePopupMenu* menu_file = nullptr;
|
||||
NodePopupMenu* menu_edit = nullptr;
|
||||
NodePopupMenu* menu_layers = nullptr;
|
||||
const uint16_t main_id = const_hash("main");
|
||||
public:
|
||||
static App I;
|
||||
|
||||
@@ -72,12 +72,12 @@ void Node::add_child(Node* n)
|
||||
|
||||
void Node::remove_child(Node* n)
|
||||
{
|
||||
auto i = std::find_if(m_children.begin(), m_children.end(), [=](std::unique_ptr<Node>& ptr)
|
||||
{
|
||||
return ptr.get() == n;
|
||||
});
|
||||
m_children.erase(i);
|
||||
YGNodeRemoveChild(y_node, n->y_node);
|
||||
auto i = std::find_if(m_children.begin(), m_children.end(), [=](std::unique_ptr<Node>& ptr) { return ptr.get() == n; });
|
||||
if (i != m_children.end())
|
||||
{
|
||||
m_children.erase(i);
|
||||
YGNodeRemoveChild(y_node, n->y_node);
|
||||
}
|
||||
}
|
||||
|
||||
void Node::update(float width, float height)
|
||||
|
||||
@@ -652,7 +652,7 @@ public:
|
||||
virtual Node* clone_instantiate() const override { return new NodeButtonCustom(); }
|
||||
virtual void clone_copy(Node* dest) const override
|
||||
{
|
||||
Node::clone_copy(dest);
|
||||
NodeBorder::clone_copy(dest);
|
||||
NodeButtonCustom* n = static_cast<NodeButtonCustom*>(dest);
|
||||
n->color_normal = color_normal;
|
||||
n->color_hover = color_hover;
|
||||
@@ -660,12 +660,14 @@ public:
|
||||
}
|
||||
virtual void loaded() override
|
||||
{
|
||||
NodeBorder::loaded();
|
||||
//m_thinkness = 1;
|
||||
//m_border_color = glm::vec4(0, 0, 0, 1);
|
||||
m_color = color_normal;
|
||||
}
|
||||
virtual kEventResult handle_event(Event* e) override
|
||||
{
|
||||
NodeBorder::handle_event(e);
|
||||
switch (e->m_type)
|
||||
{
|
||||
case kEventType::MouseEnter:
|
||||
|
||||
Reference in New Issue
Block a user