Merge pull request #452 from ChuckNr11/master
Some checks failed
Auto-build doxygen docs / doxygen (push) Failing after 2m29s
Auto-build doxygen docs / deploy (push) Has been skipped

Fix losing Focus on moving diagram position with keyboard
This commit is contained in:
Laurent Trinques
2026-04-19 14:32:37 +02:00
committed by GitHub
3 changed files with 28 additions and 1 deletions

View File

@@ -480,28 +480,33 @@ void ElementsPanelWidget::keyPressEvent (QKeyEvent *e) {
break; break;
case Qt::Key_F3: case Qt::Key_F3:
if (Diagram *selected_diagram = elements_panel -> selectedDiagram()) { if (Diagram *selected_diagram = elements_panel -> selectedDiagram()) {
elements_panel->setSelectedItem(elements_panel->getItemForDiagram(selected_diagram));
emit(requestForDiagramMoveUp(selected_diagram)); emit(requestForDiagramMoveUp(selected_diagram));
} }
break; break;
case Qt::Key_F4: case Qt::Key_F4:
if (Diagram *selected_diagram = elements_panel -> selectedDiagram()) { if (Diagram *selected_diagram = elements_panel -> selectedDiagram()) {
elements_panel->setSelectedItem(elements_panel->getItemForDiagram(selected_diagram));
emit(requestForDiagramMoveDown(selected_diagram)); emit(requestForDiagramMoveDown(selected_diagram));
} }
break; break;
case Qt::Key_F5: case Qt::Key_F5:
if (Diagram *selected_diagram = elements_panel -> selectedDiagram()) { if (Diagram *selected_diagram = elements_panel -> selectedDiagram()) {
elements_panel->setSelectedItem(elements_panel->getItemForDiagram(selected_diagram));
emit(requestForDiagramMoveUpTop(selected_diagram)); emit(requestForDiagramMoveUpTop(selected_diagram));
} }
break; break;
case Qt::Key_F6: case Qt::Key_F6:
if (Diagram *selected_diagram = elements_panel -> selectedDiagram()) { if (Diagram *selected_diagram = elements_panel -> selectedDiagram()) {
elements_panel->setSelectedItem(elements_panel->getItemForDiagram(selected_diagram));
emit(requestForDiagramMoveDownx10(selected_diagram)); emit(requestForDiagramMoveDownx10(selected_diagram));
} }
break; break;
case Qt::Key_F7: case Qt::Key_F7:
if (Diagram *selected_diagram = elements_panel -> selectedDiagram()) { if (Diagram *selected_diagram = elements_panel -> selectedDiagram()) {
elements_panel->setSelectedItem(elements_panel->getItemForDiagram(selected_diagram));
emit(requestForDiagramMoveDownx100(selected_diagram)); emit(requestForDiagramMoveDownx100(selected_diagram));
} }
@@ -509,12 +514,14 @@ void ElementsPanelWidget::keyPressEvent (QKeyEvent *e) {
break; break;
case Qt::Key_F8: case Qt::Key_F8:
if (Diagram *selected_diagram = elements_panel -> selectedDiagram()) { if (Diagram *selected_diagram = elements_panel -> selectedDiagram()) {
elements_panel->setSelectedItem(elements_panel->getItemForDiagram(selected_diagram));
emit(requestForDiagramMoveUpx10(selected_diagram)); emit(requestForDiagramMoveUpx10(selected_diagram));
} }
break; break;
case Qt::Key_F9: case Qt::Key_F9:
if (Diagram *selected_diagram = elements_panel -> selectedDiagram()) { if (Diagram *selected_diagram = elements_panel -> selectedDiagram()) {
elements_panel->setSelectedItem(elements_panel->getItemForDiagram(selected_diagram));
emit(requestForDiagramMoveUpx100(selected_diagram)); emit(requestForDiagramMoveUpx100(selected_diagram));
} }
break; break;

View File

@@ -781,7 +781,13 @@ void GenericPanel::projectDiagramsOrderChanged(QETProject *project,
} }
// select the moved diagram // select the moved diagram
if(m_selected_item){
setCurrentItem(moved_qtwi_diagram);
}
else{
setCurrentItem(qtwi_project -> child(from)); setCurrentItem(qtwi_project -> child(from));
}
m_selected_item = nullptr;
emit(panelContentChanged()); emit(panelContentChanged());
} }
@@ -1040,3 +1046,12 @@ void GenericPanel::emitFirstActivated()
{ {
emit(firstActivated()); emit(firstActivated());
} }
/**
@brief GenericPanel::setSelectedItem
@param selectedItem
*/
void GenericPanel::setSelectedItem(QTreeWidgetItem *selectedItem)
{
m_selected_item = selectedItem;
}

View File

@@ -171,6 +171,9 @@ class GenericPanel : public QTreeWidget {
const QString &); const QString &);
// various other methods // various other methods
public:
void setSelectedItem(QTreeWidgetItem *selectedItem);
protected: protected:
virtual QString defaultText(QET::ItemType); virtual QString defaultText(QET::ItemType);
virtual QIcon defaultIcon(QET::ItemType); virtual QIcon defaultIcon(QET::ItemType);
@@ -222,5 +225,7 @@ class GenericPanel : public QTreeWidget {
representing a title block template representing a title block template
*/ */
QHash<TitleBlockTemplateLocation, QTreeWidgetItem *> tb_templates_; QHash<TitleBlockTemplateLocation, QTreeWidgetItem *> tb_templates_;
QTreeWidgetItem *m_selected_item = nullptr;
}; };
#endif #endif