fix selection and cursor

This commit is contained in:
2019-03-09 23:07:06 +01:00
parent f0fed897f6
commit 3af923db96
5 changed files with 57 additions and 25 deletions

View File

@@ -260,7 +260,7 @@ void CanvasModePen::on_Draw(const glm::mat4& ortho, const glm::mat4& proj, const
}
}
void CanvasModePen::leave()
void CanvasModePen::leave(kCanvasMode next)
{
*m_brush = *Canvas::I->m_current_brush;
}
@@ -390,7 +390,7 @@ void CanvasModeLine::enter(kCanvasMode prev)
App::I.brush_update();
}
void CanvasModeLine::leave()
void CanvasModeLine::leave(kCanvasMode next)
{
*m_brush = *Canvas::I->m_current_brush;
}
@@ -531,10 +531,14 @@ void CanvasModeMaskFree::init()
m_shape.create();
}
void CanvasModeMaskFree::leave()
void CanvasModeMaskFree::leave(kCanvasMode next)
{
// Canvas::I->draw_objects(std::bind(&CanvasModeFill::on_Draw, this, glm::mat4(1), std::placeholders::_1, std::placeholders::_2));
// m_points.clear();
if (next != kCanvasMode::Draw && next != kCanvasMode::Erase && next != kCanvasMode::Line)
{
m_points.clear();
Canvas::I->m_smask_active = false;
}
}
void CanvasModeMaskFree::clear()
@@ -570,6 +574,7 @@ void CanvasModeMaskFree::on_MouseEvent(MouseEvent* me, glm::vec2& loc)
m_points.push_back(vert);
Canvas::I->m_smask.clear({0, 0, 0, 0});
Canvas::I->m_smask_active = true;
Canvas::I->m_smask_mode = 1;
break;
}
case kEventType::MouseUpL:
@@ -623,7 +628,7 @@ void CanvasModeMaskFree::on_MouseEvent(MouseEvent* me, glm::vec2& loc)
acc += d;
oldpos = loc;
oldvec = v;
if (acc > 0.001) // angle change tollerance
if (acc > 0.001) // angle change tolerance
{
//LOG("d=%f acc=%f", d, acc);
acc = 0;
@@ -691,8 +696,18 @@ void CanvasModeMaskLine::init()
m_shape.create();
}
void CanvasModeMaskLine::leave()
void CanvasModeMaskLine::leave(kCanvasMode next)
{
if (next != kCanvasMode::Draw && next != kCanvasMode::Erase && next != kCanvasMode::Line)
{
m_points2d.clear();
m_active_tool = false;
Canvas::I->m_smask_active = false;
}
if (!m_active_tool)
return;
if (m_points2d.size() > 3)
{
std::vector<vertex_t> points;
@@ -734,11 +749,10 @@ void CanvasModeMaskLine::leave()
void CanvasModeMaskLine::enter(kCanvasMode prev)
{
m_points2d.clear();
m_points.clear();
Canvas::I->m_smask.clear({0, 0, 0, 0});
Canvas::I->m_smask_active = true;
m_active_tool = true;
//m_points2d.clear();
//m_points.clear();
//Canvas::I->m_smask.clear({0, 0, 0, 0});
//m_active_tool = true;
}
void CanvasModeMaskLine::on_MouseEvent(MouseEvent* me, glm::vec2& loc)
@@ -749,6 +763,15 @@ void CanvasModeMaskLine::on_MouseEvent(MouseEvent* me, glm::vec2& loc)
{
case kEventType::MouseDownL:
{
if (m_active_tool == false)
{
m_active_tool = true;
m_points2d.clear();
m_points.clear();
Canvas::I->m_smask.clear({ 0, 0, 0, 0 });
Canvas::I->m_smask_active = true;
Canvas::I->m_smask_mode = 2;
}
node->mouse_capture();
m_dragging = true;
m_points2d.push_back(loc);
@@ -828,7 +851,7 @@ void CanvasModeFill::init()
m_shape.create();
}
void CanvasModeFill::leave()
void CanvasModeFill::leave(kCanvasMode next)
{
if (m_points.size() > 2)
{
@@ -939,7 +962,10 @@ void CanvasModeTransform::init()
m_sphere.create(1.f, glm::radians(-10.f), glm::radians(10.f), glm::radians(-10.f), glm::radians(10.f), 1.f);
m_circle.create<16>(1.f);
for (int i = 0; i < 6; i++)
{
m_shape[i].create();
m_points_face[i].clear();
}
m_xform = glm::mat4(1);
m_xform_local = glm::mat4(1);
}
@@ -951,7 +977,6 @@ void CanvasModeTransform::enter(kCanvasMode prev)
{
m_shape[i].clear();
m_points_face[i].clear();
m_shape[i].clear();
}
if (m_action == ActionType::Import)
@@ -1199,7 +1224,7 @@ void CanvasModeTransform::enter(kCanvasMode prev)
Canvas::I->pop_camera();
}
void CanvasModeTransform::leave()
void CanvasModeTransform::leave(kCanvasMode next)
{
if (!m_commit_on_leave)
return;