src/ui/canvas.cpp

changeset 51
1a9eac27698d
parent 48
3c10f0e2fbe0
child 52
eee644f88e93
--- a/src/ui/canvas.cpp	Fri Feb 07 02:02:16 2020 +0200
+++ b/src/ui/canvas.cpp	Fri Feb 07 23:59:06 2020 +0200
@@ -11,10 +11,39 @@
 	this->setMouseTracking(true);
 }
 
+void Canvas::handleSelectionChange(const QSet<ldraw::Id>& selectedIds, const QSet<ldraw::Id>& deselectedIds)
+{
+	this->selection.subtract(deselectedIds);
+	this->selection.unite(selectedIds);
+	this->compiler->setSelectedObjects(this->selection);
+	this->update();
+}
+
 void Canvas::mouseMoveEvent(QMouseEvent* event)
 {
 	const ldraw::Id id = this->pick(event->pos());
 	this->newStatusText("Selected: %1"_q.arg(id.value));
-	this->setHighlight(id);
+	this->highlighted = id;
+	this->totalMouseMove += (event->pos() - this->lastMousePosition).manhattanLength();
+	this->lastMousePosition = event->pos();
 	PartRenderer::mouseMoveEvent(event);
 }
+
+void Canvas::mousePressEvent(QMouseEvent* event)
+{
+	this->totalMouseMove = 0;
+	this->lastMousePosition = event->pos();
+	PartRenderer::mousePressEvent(event);
+}
+
+void Canvas::mouseReleaseEvent(QMouseEvent* event)
+{
+	if (this->totalMouseMove < (2.0 / sqrt(2)) * 5.0)
+	{
+		this->selection = {this->highlighted};
+		this->compiler->setSelectedObjects(this->selection);
+		emit selectionChanged(this->selection);
+		this->update();
+	}
+	PartRenderer::mouseReleaseEvent(event);
+}

mercurial