Skip to content

Commit

Permalink
Merge pull request #365 from elevatormind/selective_move
Browse files Browse the repository at this point in the history
Added option to only move dynamic texts
  • Loading branch information
scorpio810 authored Feb 21, 2025
2 parents 8c33437 + 78ee65a commit c9b9165
Show file tree
Hide file tree
Showing 3 changed files with 47 additions and 27 deletions.
72 changes: 45 additions & 27 deletions sources/qetgraphicsitem/dynamicelementtextitem.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -545,8 +545,16 @@ void DynamicElementTextItem::mousePressEvent(QGraphicsSceneMouseEvent *event)
if(m_slave_Xref_item)
m_slave_Xref_item->setDefaultTextColor(Qt::black);
}

DiagramTextItem::mousePressEvent(event);

// Shift or no parent initiates movement of dynamic text, otherwise movement of parent element
if(event->modifiers() & Qt::ShiftModifier || !m_parent_element)
{
m_move_parent = false;
DiagramTextItem::mousePressEvent(event);
} else {
m_move_parent = true;
parentElement()->mousePressEvent(event);
}
}

/**
Expand All @@ -557,26 +565,31 @@ void DynamicElementTextItem::mouseMoveEvent(QGraphicsSceneMouseEvent *event)
{
if((event->buttons() & Qt::LeftButton) && (flags() & ItemIsMovable))
{
if(diagram() && m_first_move)
diagram()->elementTextsMover().beginMovement(diagram(), this);

if(m_first_move)
if(m_move_parent)
{
m_initial_position = pos();
if(parentElement())
parentElement()->setHighlighted(true);
parentElement()->mouseMoveEvent(event);
} else {
if(diagram() && m_first_move)
diagram()->elementTextsMover().beginMovement(diagram(), this);

if(m_first_move)
{
m_initial_position = pos();
if(parentElement())
parentElement()->setHighlighted(true);
}

QPointF current_parent_pos;
QPointF button_down_parent_pos;
current_parent_pos = mapToParent(mapFromScene(event->scenePos()));
button_down_parent_pos = mapToParent(mapFromScene(event->buttonDownScenePos(Qt::LeftButton)));

QPointF new_pos = m_initial_position + current_parent_pos - button_down_parent_pos;
event->modifiers() == Qt::ControlModifier ? setPos(new_pos) : setPos(Diagram::snapToGrid(new_pos));

if(diagram())
diagram()->elementTextsMover().continueMovement(event);
}

QPointF current_parent_pos;
QPointF button_down_parent_pos;
current_parent_pos = mapToParent(mapFromScene(event->scenePos()));
button_down_parent_pos = mapToParent(mapFromScene(event->buttonDownScenePos(Qt::LeftButton)));

QPointF new_pos = m_initial_position + current_parent_pos - button_down_parent_pos;
event->modifiers() == Qt::ControlModifier ? setPos(new_pos) : setPos(Diagram::snapToGrid(new_pos));

if(diagram())
diagram()->elementTextsMover().continueMovement(event);
} else {
event->ignore();
}
Expand All @@ -591,14 +604,19 @@ void DynamicElementTextItem::mouseMoveEvent(QGraphicsSceneMouseEvent *event)
*/
void DynamicElementTextItem::mouseReleaseEvent(QGraphicsSceneMouseEvent *event)
{
if (m_parent_element)
m_parent_element->setHighlighted(false);

if(m_parent_element && m_parent_element->diagram())
m_parent_element.data()->diagram()->elementTextsMover().endMovement();
if(m_move_parent)
{
parentElement()->mouseReleaseEvent(event);
} else {
if (m_parent_element)
m_parent_element->setHighlighted(false);

if(!(event->modifiers() & Qt::ControlModifier))
QGraphicsTextItem::mouseReleaseEvent(event);
if(m_parent_element && m_parent_element->diagram())
m_parent_element.data()->diagram()->elementTextsMover().endMovement();

if(!(event->modifiers() & Qt::ControlModifier))
QGraphicsTextItem::mouseReleaseEvent(event);
}
}

/**
Expand Down
1 change: 1 addition & 0 deletions sources/qetgraphicsitem/dynamicelementtextitem.h
Original file line number Diff line number Diff line change
Expand Up @@ -170,6 +170,7 @@ class DynamicElementTextItem : public DiagramTextItem
QPointF m_initial_position;
bool m_keep_visual_rotation = true;
qreal m_visual_rotation_ref = 0;
bool m_move_parent = true;
};

#endif // DYNAMICELEMENTTEXTITEM_H
1 change: 1 addition & 0 deletions sources/qetgraphicsitem/element.h
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,7 @@ class ElementTextItemGroup;
class Element : public QetGraphicsItem
{
friend class DiagramEventAddElement;
friend class DynamicElementTextItem;

Q_OBJECT
public:
Expand Down

0 comments on commit c9b9165

Please sign in to comment.