update scrollbar scroller on tick, fix Transform mode recursive loop
This commit is contained in:
@@ -210,7 +210,7 @@ void App::init_sidebar()
|
|||||||
button->on_click = [this, button](Node*) {
|
button->on_click = [this, button](Node*) {
|
||||||
panels->get_child_index(stroke.get()) == -1 ? panels->add_child(stroke) : panels->remove_child(stroke.get());
|
panels->get_child_index(stroke.get()) == -1 ? panels->add_child(stroke) : panels->remove_child(stroke.get());
|
||||||
panels->fix_scroll();
|
panels->fix_scroll();
|
||||||
button->set_active(panels->get_child_index(stroke.get()) == -1);
|
button->set_active(panels->get_child_index(stroke.get()) != -1);
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
//if (auto* button = layout[main_id]->find<NodeButtonCustom>("btn-brush"))
|
//if (auto* button = layout[main_id]->find<NodeButtonCustom>("btn-brush"))
|
||||||
@@ -234,7 +234,7 @@ void App::init_sidebar()
|
|||||||
button->on_click = [this, button](Node*) {
|
button->on_click = [this, button](Node*) {
|
||||||
panels->get_child_index(color.get()) == -1 ? panels->add_child(color) : panels->remove_child(color.get());
|
panels->get_child_index(color.get()) == -1 ? panels->add_child(color) : panels->remove_child(color.get());
|
||||||
panels->fix_scroll();
|
panels->fix_scroll();
|
||||||
button->set_active(panels->get_child_index(color.get()) == -1);
|
button->set_active(panels->get_child_index(color.get()) != -1);
|
||||||
// auto pick = layout[main_id]->add_child<NodeColorPicker>();
|
// auto pick = layout[main_id]->add_child<NodeColorPicker>();
|
||||||
// pick->m_color_cur->m_color = Canvas::I->m_current_brush->m_tip_color;
|
// pick->m_color_cur->m_color = Canvas::I->m_current_brush->m_tip_color;
|
||||||
};
|
};
|
||||||
@@ -244,7 +244,7 @@ void App::init_sidebar()
|
|||||||
button->on_click = [this, button](Node*) {
|
button->on_click = [this, button](Node*) {
|
||||||
panels->get_child_index(layers.get()) == -1 ? panels->add_child(layers) : panels->remove_child(layers.get());
|
panels->get_child_index(layers.get()) == -1 ? panels->add_child(layers) : panels->remove_child(layers.get());
|
||||||
panels->fix_scroll();
|
panels->fix_scroll();
|
||||||
button->set_active(panels->get_child_index(layers.get()) == -1);
|
button->set_active(panels->get_child_index(layers.get()) != -1);
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
if (auto* button = layout[main_id]->find<NodeButtonCustom>("btn-grids-panel"))
|
if (auto* button = layout[main_id]->find<NodeButtonCustom>("btn-grids-panel"))
|
||||||
@@ -252,7 +252,7 @@ void App::init_sidebar()
|
|||||||
button->on_click = [this, button](Node*) {
|
button->on_click = [this, button](Node*) {
|
||||||
panels->get_child_index(grid.get()) == -1 ? panels->add_child(grid) : panels->remove_child(grid.get());
|
panels->get_child_index(grid.get()) == -1 ? panels->add_child(grid) : panels->remove_child(grid.get());
|
||||||
panels->fix_scroll();
|
panels->fix_scroll();
|
||||||
button->set_active(panels->get_child_index(grid.get()) == -1);
|
button->set_active(panels->get_child_index(grid.get()) != -1);
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -926,9 +926,14 @@ void CanvasModeTransform::enter(kCanvasMode prev)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// avoid recursive loop, store the last different mode not using Transform
|
||||||
|
static kCanvasMode last_prev = kCanvasMode::Draw;
|
||||||
|
if (prev != kCanvasMode::Copy && prev != kCanvasMode::Cut && prev != kCanvasMode::Import)
|
||||||
|
last_prev = prev;
|
||||||
|
|
||||||
if (prev != kCanvasMode::MaskFree && prev != kCanvasMode::MaskLine)
|
if (prev != kCanvasMode::MaskFree && prev != kCanvasMode::MaskLine)
|
||||||
{
|
{
|
||||||
Canvas::set_mode(prev);
|
Canvas::set_mode(last_prev);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -936,7 +941,7 @@ void CanvasModeTransform::enter(kCanvasMode prev)
|
|||||||
|
|
||||||
if (m->m_points2d.size() < 3)
|
if (m->m_points2d.size() < 3)
|
||||||
{
|
{
|
||||||
Canvas::set_mode(prev);
|
Canvas::set_mode(last_prev);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -24,41 +24,17 @@ void NodeScroll::fix_scroll()
|
|||||||
auto rect = get_children_rect();
|
auto rect = get_children_rect();
|
||||||
m_offset = glm::clamp(m_offset, - zw(rect) + zw(m_clip_uncut) - padoff, { 0, 0 });
|
m_offset = glm::clamp(m_offset, - zw(rect) + zw(m_clip_uncut) - padoff, { 0, 0 });
|
||||||
m_pos_offset_childred = m_offset;
|
m_pos_offset_childred = m_offset;
|
||||||
|
}
|
||||||
|
|
||||||
|
void NodeScroll::on_tick(float dt)
|
||||||
|
{
|
||||||
|
auto pad = GetPadding();
|
||||||
|
auto rect = get_children_rect();
|
||||||
// fix scrollbar
|
// fix scrollbar
|
||||||
float sz = m_size.y - (pad[0] + pad[2]);
|
float sz = m_size.y - (pad[0] + pad[2]);
|
||||||
if (rect.w == 0 || rect.w <= sz)
|
float new_pad = rect.w == 0 || rect.w <= sz ? 5 : 35;
|
||||||
{
|
if (pad[1] != new_pad)
|
||||||
YGNodeStyleSetPadding(y_node, YGEdgeRight, 5);
|
YGNodeStyleSetPadding(y_node, YGEdgeRight, new_pad);
|
||||||
return;
|
|
||||||
}
|
|
||||||
YGNodeStyleSetPadding(y_node, YGEdgeRight, 35);
|
|
||||||
}
|
|
||||||
|
|
||||||
void NodeScroll::loaded()
|
|
||||||
{
|
|
||||||
fix_scroll();
|
|
||||||
}
|
|
||||||
|
|
||||||
void NodeScroll::added(Node* parent)
|
|
||||||
{
|
|
||||||
fix_scroll();
|
|
||||||
}
|
|
||||||
|
|
||||||
void NodeScroll::on_child_added(Node* child)
|
|
||||||
{
|
|
||||||
fix_scroll();
|
|
||||||
}
|
|
||||||
|
|
||||||
void NodeScroll::on_child_removed(Node* child)
|
|
||||||
{
|
|
||||||
fix_scroll();
|
|
||||||
}
|
|
||||||
|
|
||||||
void NodeScroll::handle_resize(glm::vec2 old_size, glm::vec2 new_size)
|
|
||||||
{
|
|
||||||
Node::handle_resize(old_size, new_size);
|
|
||||||
fix_scroll();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void NodeScroll::draw()
|
void NodeScroll::draw()
|
||||||
|
|||||||
@@ -14,10 +14,6 @@ public:
|
|||||||
virtual Node* clone_instantiate() const override;
|
virtual Node* clone_instantiate() const override;
|
||||||
virtual kEventResult handle_event(Event* e) override;
|
virtual kEventResult handle_event(Event* e) override;
|
||||||
virtual void draw() override;
|
virtual void draw() override;
|
||||||
virtual void handle_resize(glm::vec2 old_size, glm::vec2 new_size) override;
|
virtual void on_tick(float dt) override;
|
||||||
virtual void on_child_added(Node* child) override;
|
|
||||||
virtual void on_child_removed(Node* child) override;
|
|
||||||
virtual void added(Node* parent) override;
|
|
||||||
virtual void loaded() override;
|
|
||||||
void fix_scroll();
|
void fix_scroll();
|
||||||
};
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user