src/tools/selecttool.cpp

Tue, 28 Sep 2021 22:14:00 +0300

author
Teemu Piippo <teemu@hecknology.net>
date
Tue, 28 Sep 2021 22:14:00 +0300
changeset 143
7b62c52835a1
parent 126
a7c720aff97c
child 152
03f8e6d42e13
permissions
-rw-r--r--

Fix memory corruption involving document tools.
I don't think that the metaobject-initialization had anything to do with this
but it is a lot simpler without it anyway.

#include "selecttool.h"

SelectTool::SelectTool(Model* model, QWidget* parent) :
	BaseTool{model, parent},
	objectEditor{new ObjectEditor{model, ldraw::NULL_ID, parent}} {}

QString SelectTool::name() const
{
	static const QString result = tr("Select");
	return result;
}

QString SelectTool::toolTip() const
{
	static const QString result = tr("Select elements from the model.");
	return result;
}

bool SelectTool::mouseClick(Document* document, Canvas* canvas, QMouseEvent* event)
{
	if (event->button() == Qt::LeftButton)
	{
		static_cast<void>(document);
		const ldraw::id_t highlighted = canvas->getHighlightedObject();
		canvas->clearSelection();
		if (highlighted != ldraw::NULL_ID)
		{
			canvas->addToSelection(highlighted);
		}
		return true;
	}
	else
	{
		return false;
	}
}

QWidget* SelectTool::toolWidget()
{
	return this->objectEditor;
}

void SelectTool::selectionChanged(const QSet<ldraw::id_t>& newSelection)
{
	if (newSelection.size() == 1)
	{
		this->objectEditor->setObjectId(*newSelection.begin());
	}
	else
	{
		this->objectEditor->setObjectId(ldraw::NULL_ID);
	}
}

mercurial