diff --git a/data/layout.xml b/data/layout.xml
index 2c99fd5..c312562 100644
--- a/data/layout.xml
+++ b/data/layout.xml
@@ -249,7 +249,7 @@
diff --git a/src/app_layout.cpp b/src/app_layout.cpp
index 16f149d..9055ca1 100644
--- a/src/app_layout.cpp
+++ b/src/app_layout.cpp
@@ -1016,6 +1016,18 @@ void App::init_menu_tools()
Settings::save();
};
}
+
+ if (auto mode = popup_time->find("tools-show-cursor"))
+ {
+ mode->set_index(Settings::value_or("show-cursor", 0));
+
+ mode->on_select = [mode](Node* target, int index)
+ {
+ App::I->canvas->set_cursor_visibility((NodeCanvas::kCursorVisibility)index);
+ Settings::set("show-cursor", Serializer::Integer(index));
+ Settings::save();
+ };
+ }
};
popup_exp->find("clear-grids")->on_click = [this, popup_exp](Node*) {
diff --git a/src/canvas.h b/src/canvas.h
index 9a913cf..251fb41 100644
--- a/src/canvas.h
+++ b/src/canvas.h
@@ -175,6 +175,10 @@ public:
if (I->on_mode_changed)
I->on_mode_changed(prev, mode);
}
+ template static T* get_mode(int index = 0)
+ {
+ return dynamic_cast(modes[(int)I->m_current_mode][index]);
+ }
std::vector m_layers_snapshot;
diff --git a/src/canvas_modes.cpp b/src/canvas_modes.cpp
index 63cfeb2..65ccc4d 100644
--- a/src/canvas_modes.cpp
+++ b/src/canvas_modes.cpp
@@ -159,9 +159,10 @@ void CanvasModePen::on_MouseEvent(MouseEvent* me, glm::vec2& loc)
else
{
App::I->render_task_async([loc, pr = me->m_pressure]
- {
- Canvas::I->stroke_start({ loc, 0 }, pr);
- });
+ {
+ Canvas::I->stroke_start({ loc, 0 }, pr);
+ });
+ m_drawing = true;
}
m_dragging = true;
node->mouse_capture();
@@ -184,6 +185,7 @@ void CanvasModePen::on_MouseEvent(MouseEvent* me, glm::vec2& loc)
App::I->brush_update(true, false);
Canvas::I->pick_end();
}
+ m_drawing = false;
m_dragging = false;
m_picking = false;
break;
diff --git a/src/canvas_modes.h b/src/canvas_modes.h
index b936ab6..dcde6ae 100644
--- a/src/canvas_modes.h
+++ b/src/canvas_modes.h
@@ -82,7 +82,6 @@ class CanvasModePen : public CanvasMode
float m_zoom_canvas = 1.f;
float m_zoom_start;
// resizing the tip
- bool m_resizing = false;
public:
CanvasModePen() { hide_curor = true; m_picking = false; }
@@ -91,7 +90,9 @@ public:
virtual void on_Draw(const glm::mat4& ortho, const glm::mat4& proj, const glm::mat4& camera) override;
virtual void enter(kCanvasMode prev) override;
virtual void leave(kCanvasMode next) override;
+ bool m_resizing = false;
bool m_picking = false;
+ bool m_drawing = false;
glm::vec2 m_cur_pos;
bool m_draw_outline = true;
};
diff --git a/src/node_canvas.cpp b/src/node_canvas.cpp
index 8a92ed3..b6cb81b 100644
--- a/src/node_canvas.cpp
+++ b/src/node_canvas.cpp
@@ -13,6 +13,7 @@ Node* NodeCanvas::clone_instantiate() const
void NodeCanvas::init()
{
m_density = Settings::value_or("vp-scale", 1.f);
+ m_cursor_visibility = (kCursorVisibility)Settings::value_or("show-cursor", 0);
m_mouse_ignore = false;
m_canvas = std::make_unique