Fix unwanted moving part in element editor.

Fix an unwanted behavior when the properties dock widget is displayed :

1 there is no selection
2 the dock widget width is set to minimum
3 select a part, the dock widget gain new widgets used to edit the
current selected part and the width of the dock grow so the width of the
QGraphicsView is reduced and cause a mouse move event.
When this case occur the part is moved but they should not.
This commit is contained in:
joshua 2021-04-07 12:56:43 +02:00
parent 43e3c9a998
commit 86c8a2d45b
2 changed files with 17 additions and 1 deletions

View File

@ -1308,14 +1308,29 @@ void CustomElementGraphicPart::hoverLeaveEvent(QGraphicsSceneHoverEvent *event)
void CustomElementGraphicPart::mousePressEvent(QGraphicsSceneMouseEvent *event)
{
if(event->button() == Qt::LeftButton)
if(event->button() == Qt::LeftButton) {
m_origin_pos = this->pos();
m_first_move = true;
}
QGraphicsObject::mousePressEvent(event);
}
void CustomElementGraphicPart::mouseMoveEvent(QGraphicsSceneMouseEvent *event)
{
//m_first_move is used to avoid an unwanted behavior
//when the properties dock widget is displayed :
//1 there is no selection
//2 the dock widget width is set to minimum
//3 select a part, the dock widget gain new widgets used to edit
//the current selected part and the width of the dock grow
//so the width of the QGraphicsView is reduced and cause a mouse move event.
//When this case occur the part is moved but they should not. This bool fix it.
if (Q_UNLIKELY(m_first_move)) {
m_first_move = false;
return;
}
if((event->buttons() & Qt::LeftButton) && (flags() & QGraphicsItem::ItemIsMovable))
{
QPointF pos = event->scenePos() + (m_origin_pos - event->buttonDownScenePos(Qt::LeftButton));

View File

@ -328,6 +328,7 @@ class CustomElementGraphicPart : public QGraphicsObject, public CustomElementPar
Color _color;
bool _antialiased;
QPointF m_origin_pos;
bool m_first_move;
};
typedef CustomElementGraphicPart CEGP;