Fixed drawing grips on page

This commit is contained in:
Eism 2021-02-01 19:48:18 +02:00 committed by Igor Korsukov
parent c5e4749f31
commit 011e57020e
2 changed files with 13 additions and 3 deletions

View file

@ -69,6 +69,7 @@ NotationInteraction::NotationInteraction(Notation* notation, INotationUndoStackP
m_dragData.ed.view = new ScoreCallbacks();
m_dropData.ed.view = new ScoreCallbacks();
m_gripEditData.view = new ScoreCallbacks();
}
NotationInteraction::~NotationInteraction()
@ -464,13 +465,13 @@ void NotationInteraction::startDrag(const std::vector<Element*>& elems,
}
}
startEdit();
if (isGripEditStarted()) {
m_gripEditData.element->startEditDrag(m_gripEditData);
return;
}
startEdit();
for (auto& group : m_dragData.dragGroups) {
group->startDrag(m_dragData.ed);
}
@ -1601,8 +1602,12 @@ void NotationInteraction::drawGripPoints(QPainter* painter)
qreal gripWidth = DEFAULT_GRIP_SIZE / painter->worldTransform().m11();
qreal gripHeight = DEFAULT_GRIP_SIZE / painter->worldTransform().m22();
QRectF newRect(-gripWidth / 2, -gripHeight / 2, gripWidth, gripHeight);
Element* page = m_gripEditData.element->findAncestor(ElementType::PAGE);
QPointF pageOffset = page ? page->pos() : m_gripEditData.element->pos();
for (QRectF& gripRect: m_gripEditData.grip) {
gripRect = newRect;
gripRect = newRect.translated(pageOffset);
}
m_gripEditData.element->updateGrips(m_gripEditData);

View file

@ -270,6 +270,11 @@ void NotationViewInputController::mouseMoveEvent(QMouseEvent* event)
startDragElements(m_interactData.hitElement->type(), m_interactData.hitElement->offset());
}
if (m_view->notationInteraction()->isGripEditStarted() && !m_view->notationInteraction()->isDragStarted()) {
Element* selectedElement = m_view->notationInteraction()->selection()->element();
startDragElements(selectedElement->type(), selectedElement->offset());
}
DragMode mode = DragMode::BothXY;
if (keyState & Qt::ShiftModifier) {
mode = DragMode::OnlyY;