forked from qt-creator/qt-creator
QmlDesigner: Introduce WeakResizeController
WeakResizeController is a wrapper class for a weak pointer to the ResizeControllerData. Change-Id: I9052a26e6a5c29d2e794ceecc33075d3ae9970db Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com> Reviewed-by: Thomas Hartmann <Thomas.Hartmann@digia.com>
This commit is contained in:
@@ -158,6 +158,11 @@ ResizeController::ResizeController(const ResizeController &other)
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ResizeController::ResizeController(const WeakResizeController &resizeController)
|
||||||
|
: m_data(resizeController.m_data.toStrongRef())
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
ResizeController::~ResizeController()
|
ResizeController::~ResizeController()
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
@@ -264,11 +269,6 @@ FormEditorItem* ResizeController::formEditorItem() const
|
|||||||
return m_data->formEditorItem.data();
|
return m_data->formEditorItem.data();
|
||||||
}
|
}
|
||||||
|
|
||||||
QWeakPointer<ResizeControllerData> ResizeController::weakPointer() const
|
|
||||||
{
|
|
||||||
return m_data;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool ResizeController::isTopLeftHandle(const ResizeHandleItem *handle) const
|
bool ResizeController::isTopLeftHandle(const ResizeHandleItem *handle) const
|
||||||
{
|
{
|
||||||
return handle == m_data->topLeftItem;
|
return handle == m_data->topLeftItem;
|
||||||
@@ -309,4 +309,41 @@ bool ResizeController::isBottomHandle(const ResizeHandleItem *handle) const
|
|||||||
return handle == m_data->bottomItem;
|
return handle == m_data->bottomItem;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
WeakResizeController ResizeController::toWeakResizeController() const
|
||||||
|
{
|
||||||
|
return WeakResizeController(*this);
|
||||||
|
}
|
||||||
|
|
||||||
|
WeakResizeController::WeakResizeController()
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
WeakResizeController::WeakResizeController(const WeakResizeController &resizeController)
|
||||||
|
: m_data(resizeController.m_data)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
WeakResizeController::WeakResizeController(const ResizeController &resizeController)
|
||||||
|
: m_data(resizeController.m_data.toWeakRef())
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
WeakResizeController::~WeakResizeController()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
WeakResizeController &WeakResizeController::operator =(const WeakResizeController &other)
|
||||||
|
{
|
||||||
|
if (m_data != other.m_data)
|
||||||
|
m_data = other.m_data;
|
||||||
|
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
ResizeController WeakResizeController::toResizeController() const
|
||||||
|
{
|
||||||
|
return ResizeController(*this);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@@ -41,15 +41,17 @@ class LayerItem;
|
|||||||
class ResizeHandleItem;
|
class ResizeHandleItem;
|
||||||
|
|
||||||
class ResizeControllerData;
|
class ResizeControllerData;
|
||||||
|
class WeakResizeController;
|
||||||
|
|
||||||
|
|
||||||
class ResizeController
|
class ResizeController
|
||||||
{
|
{
|
||||||
|
friend class WeakResizeController;
|
||||||
public:
|
public:
|
||||||
friend class ResizeHandleItem;
|
|
||||||
|
|
||||||
ResizeController();
|
ResizeController();
|
||||||
ResizeController(LayerItem *layerItem, FormEditorItem *formEditorItem);
|
ResizeController(LayerItem *layerItem, FormEditorItem *formEditorItem);
|
||||||
ResizeController(const ResizeController &resizeController);
|
ResizeController(const ResizeController &resizeController);
|
||||||
|
ResizeController(const WeakResizeController &resizeController);
|
||||||
~ResizeController();
|
~ResizeController();
|
||||||
|
|
||||||
ResizeController& operator=(const ResizeController &other);
|
ResizeController& operator=(const ResizeController &other);
|
||||||
@@ -73,13 +75,32 @@ public:
|
|||||||
bool isRightHandle(const ResizeHandleItem *handle) const;
|
bool isRightHandle(const ResizeHandleItem *handle) const;
|
||||||
bool isBottomHandle(const ResizeHandleItem *handle) const;
|
bool isBottomHandle(const ResizeHandleItem *handle) const;
|
||||||
|
|
||||||
|
WeakResizeController toWeakResizeController() const;
|
||||||
|
|
||||||
|
|
||||||
private: // functions
|
private: // functions
|
||||||
ResizeController(const QSharedPointer<ResizeControllerData> &data);
|
ResizeController(const QSharedPointer<ResizeControllerData> &data);
|
||||||
QWeakPointer<ResizeControllerData> weakPointer() const;
|
|
||||||
private: // variables
|
private: // variables
|
||||||
QSharedPointer<ResizeControllerData> m_data;
|
QSharedPointer<ResizeControllerData> m_data;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
class WeakResizeController
|
||||||
|
{
|
||||||
|
friend class ResizeController;
|
||||||
|
public:
|
||||||
|
WeakResizeController();
|
||||||
|
WeakResizeController(const WeakResizeController &resizeController);
|
||||||
|
WeakResizeController(const ResizeController &resizeController);
|
||||||
|
~WeakResizeController();
|
||||||
|
|
||||||
|
WeakResizeController& operator=(const WeakResizeController &other);
|
||||||
|
|
||||||
|
ResizeController toResizeController() const;
|
||||||
|
|
||||||
|
private: // variables
|
||||||
|
QWeakPointer<ResizeControllerData> m_data;
|
||||||
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif // RESIZECONTROLLER_H
|
#endif // RESIZECONTROLLER_H
|
||||||
|
@@ -36,7 +36,7 @@ namespace QmlDesigner {
|
|||||||
|
|
||||||
ResizeHandleItem::ResizeHandleItem(QGraphicsItem *parent, const ResizeController &resizeController)
|
ResizeHandleItem::ResizeHandleItem(QGraphicsItem *parent, const ResizeController &resizeController)
|
||||||
: QGraphicsPixmapItem(QPixmap(":/icon/handle/resize_handle.png"), parent),
|
: QGraphicsPixmapItem(QPixmap(":/icon/handle/resize_handle.png"), parent),
|
||||||
m_resizeControllerData(resizeController.weakPointer())
|
m_weakResizeController(resizeController.toWeakResizeController())
|
||||||
{
|
{
|
||||||
setShapeMode(QGraphicsPixmapItem::BoundingRectShape);
|
setShapeMode(QGraphicsPixmapItem::BoundingRectShape);
|
||||||
setOffset(-pixmap().rect().center());
|
setOffset(-pixmap().rect().center());
|
||||||
@@ -44,6 +44,10 @@ ResizeHandleItem::ResizeHandleItem(QGraphicsItem *parent, const ResizeController
|
|||||||
setFlag(QGraphicsItem::ItemIgnoresTransformations, true);
|
setFlag(QGraphicsItem::ItemIgnoresTransformations, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ResizeHandleItem::~ResizeHandleItem()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
void ResizeHandleItem::setHandlePosition(const QPointF & globalPosition, const QPointF & itemSpacePosition)
|
void ResizeHandleItem::setHandlePosition(const QPointF & globalPosition, const QPointF & itemSpacePosition)
|
||||||
{
|
{
|
||||||
m_itemSpacePosition = itemSpacePosition;
|
m_itemSpacePosition = itemSpacePosition;
|
||||||
@@ -62,8 +66,7 @@ QPainterPath ResizeHandleItem::shape() const
|
|||||||
|
|
||||||
ResizeController ResizeHandleItem::resizeController() const
|
ResizeController ResizeHandleItem::resizeController() const
|
||||||
{
|
{
|
||||||
Q_ASSERT(!m_resizeControllerData.isNull());
|
return ResizeController(m_weakResizeController.toResizeController());
|
||||||
return ResizeController(m_resizeControllerData.toStrongRef());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
ResizeHandleItem* ResizeHandleItem::fromGraphicsItem(QGraphicsItem *item)
|
ResizeHandleItem* ResizeHandleItem::fromGraphicsItem(QGraphicsItem *item)
|
||||||
|
@@ -48,7 +48,7 @@ public:
|
|||||||
|
|
||||||
|
|
||||||
ResizeHandleItem(QGraphicsItem *parent, const ResizeController &resizeController);
|
ResizeHandleItem(QGraphicsItem *parent, const ResizeController &resizeController);
|
||||||
|
~ResizeHandleItem();
|
||||||
void setHandlePosition(const QPointF & globalPosition, const QPointF & itemSpacePosition);
|
void setHandlePosition(const QPointF & globalPosition, const QPointF & itemSpacePosition);
|
||||||
|
|
||||||
int type() const;
|
int type() const;
|
||||||
@@ -72,7 +72,7 @@ public:
|
|||||||
QPointF itemSpacePosition() const;
|
QPointF itemSpacePosition() const;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
QWeakPointer<ResizeControllerData> m_resizeControllerData;
|
WeakResizeController m_weakResizeController;
|
||||||
QPointF m_itemSpacePosition;
|
QPointF m_itemSpacePosition;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user