macOS fix: add Move diagram item with the keyboard arrow

This commit is contained in:
Laurent
2023-03-29 13:10:50 +02:00
parent 6919369a92
commit 5cbb444c0a

View File

@@ -360,7 +360,11 @@ void Diagram::keyPressEvent(QKeyEvent *event)
#pragma message("@TODO move code to new function") #pragma message("@TODO move code to new function")
#endif #endif
//Move item with the keyboard arrow //Move item with the keyboard arrow
if(event->modifiers() == Qt::NoModifier) #ifdef Q_OS_MACOS
if(event->modifiers() == Qt::KeypadModifier)
#else
if(event->modifiers() == Qt::NoModifier)
#endif
{ {
QSettings settings; QSettings settings;
int xKeyGrid = settings.value(QStringLiteral("diagrameditor/key_Xgrid"), int xKeyGrid = settings.value(QStringLiteral("diagrameditor/key_Xgrid"),
@@ -369,26 +373,26 @@ void Diagram::keyPressEvent(QKeyEvent *event)
Diagram::yKeyGrid).toInt(); Diagram::yKeyGrid).toInt();
switch(event->key()) switch(event->key())
{ {
case Qt::Key_Left: case Qt::Key_Left:
for (Element *item : dc.m_elements) for (Element *item : dc.m_elements)
{ {
left_position = item->sceneBoundingRect().x(); left_position = item->sceneBoundingRect().x();
if(left_position <= 5) if(left_position <= 5)
return; return;
} }
movement = QPointF(-xKeyGrid, 0.0); movement = QPointF(-xKeyGrid, 0.0);
break; break;
case Qt::Key_Right: case Qt::Key_Right:
movement = QPointF(+xKeyGrid, 0.0); movement = QPointF(+xKeyGrid, 0.0);
break; break;
case Qt::Key_Up: case Qt::Key_Up:
for(Element *item : dc.m_elements) for(Element *item : dc.m_elements)
{ {
top_position = item->sceneBoundingRect().y(); top_position = item->sceneBoundingRect().y();
if(top_position <= 5) if(top_position <= 5)
return; return;
} }
movement = QPointF(0.0, -yKeyGrid); movement = QPointF(0.0, -yKeyGrid);
break; break;
case Qt::Key_Down: case Qt::Key_Down:
movement = QPointF(0.0, +yKeyGrid); movement = QPointF(0.0, +yKeyGrid);
@@ -479,7 +483,7 @@ void Diagram::keyPressEvent(QKeyEvent *event)
Qt::AlignRight)); Qt::AlignRight));
} }
} }
} }
event->ignore(); event->ignore();
QGraphicsScene::keyPressEvent(event); QGraphicsScene::keyPressEvent(event);
} }