Blob Blame Raw


#include "toonzqt/freelayout.h"

// tcg includes
#include "tcg/tcg_deleter_types.h"

//************************************************************************************
//    DummyLayout   implementation
//************************************************************************************

DummyLayout::DummyLayout()
{
	setSizeConstraint(QLayout::SetNoConstraint);
}

//---------------------------------------------------------------------------

DummyLayout::~DummyLayout()
{
	std::for_each(m_items.begin(), m_items.end(), tcg::deleter<QLayoutItem>());
}

//---------------------------------------------------------------------------

QSize DummyLayout::sizeHint() const
{
	QRect geom, result;

	QList<QLayoutItem *>::const_iterator it, iEnd = m_items.end();
	for (it = m_items.begin(); it != iEnd; ++it) {
		QLayoutItem *item = *it;

		geom = item->geometry();
		geom.setSize(item->sizeHint());

		result |= geom;
	}

	return result.size();
}

//************************************************************************************
//    FreeLayout   implementation
//************************************************************************************

void FreeLayout::setGeometry(const QRect &r)
{
	QList<QLayoutItem *>::const_iterator it, iEnd = m_items.end();
	for (it = m_items.begin(); it != iEnd; ++it) {
		QLayoutItem *item = *it;

		const QRect &geom = item->geometry();
		const QSize &sizeHint = item->sizeHint();

		if (geom.size() != sizeHint)
			item->setGeometry(QRect(geom.topLeft(), sizeHint));
	}
}