diff --git a/sources/elementspanelwidget.cpp b/sources/elementspanelwidget.cpp index 89e6b521b..0d17a19d0 100644 --- a/sources/elementspanelwidget.cpp +++ b/sources/elementspanelwidget.cpp @@ -480,28 +480,33 @@ void ElementsPanelWidget::keyPressEvent (QKeyEvent *e) { break; case Qt::Key_F3: if (Diagram *selected_diagram = elements_panel -> selectedDiagram()) { + elements_panel->setSelectedItem(elements_panel->getItemForDiagram(selected_diagram)); emit(requestForDiagramMoveUp(selected_diagram)); } break; case Qt::Key_F4: if (Diagram *selected_diagram = elements_panel -> selectedDiagram()) { + elements_panel->setSelectedItem(elements_panel->getItemForDiagram(selected_diagram)); emit(requestForDiagramMoveDown(selected_diagram)); } break; case Qt::Key_F5: if (Diagram *selected_diagram = elements_panel -> selectedDiagram()) { + elements_panel->setSelectedItem(elements_panel->getItemForDiagram(selected_diagram)); emit(requestForDiagramMoveUpTop(selected_diagram)); } break; case Qt::Key_F6: if (Diagram *selected_diagram = elements_panel -> selectedDiagram()) { + elements_panel->setSelectedItem(elements_panel->getItemForDiagram(selected_diagram)); emit(requestForDiagramMoveDownx10(selected_diagram)); } break; case Qt::Key_F7: if (Diagram *selected_diagram = elements_panel -> selectedDiagram()) { + elements_panel->setSelectedItem(elements_panel->getItemForDiagram(selected_diagram)); emit(requestForDiagramMoveDownx100(selected_diagram)); } @@ -509,12 +514,14 @@ void ElementsPanelWidget::keyPressEvent (QKeyEvent *e) { break; case Qt::Key_F8: if (Diagram *selected_diagram = elements_panel -> selectedDiagram()) { + elements_panel->setSelectedItem(elements_panel->getItemForDiagram(selected_diagram)); emit(requestForDiagramMoveUpx10(selected_diagram)); } break; case Qt::Key_F9: if (Diagram *selected_diagram = elements_panel -> selectedDiagram()) { + elements_panel->setSelectedItem(elements_panel->getItemForDiagram(selected_diagram)); emit(requestForDiagramMoveUpx100(selected_diagram)); } break; diff --git a/sources/genericpanel.cpp b/sources/genericpanel.cpp index 76c866d34..da40a343a 100644 --- a/sources/genericpanel.cpp +++ b/sources/genericpanel.cpp @@ -781,7 +781,13 @@ void GenericPanel::projectDiagramsOrderChanged(QETProject *project, } // select the moved diagram - setCurrentItem(qtwi_project -> child(from)); + if(m_selected_item){ + setCurrentItem(moved_qtwi_diagram); + } + else{ + setCurrentItem(qtwi_project -> child(from)); + } + m_selected_item = nullptr; emit(panelContentChanged()); } @@ -1040,3 +1046,12 @@ void GenericPanel::emitFirstActivated() { emit(firstActivated()); } + +/** + @brief GenericPanel::setSelectedItem + @param selectedItem +*/ +void GenericPanel::setSelectedItem(QTreeWidgetItem *selectedItem) +{ + m_selected_item = selectedItem; +} diff --git a/sources/genericpanel.h b/sources/genericpanel.h index 52e8ea98f..f7d398be3 100644 --- a/sources/genericpanel.h +++ b/sources/genericpanel.h @@ -171,6 +171,9 @@ class GenericPanel : public QTreeWidget { const QString &); // various other methods + public: + void setSelectedItem(QTreeWidgetItem *selectedItem); + protected: virtual QString defaultText(QET::ItemType); virtual QIcon defaultIcon(QET::ItemType); @@ -222,5 +225,7 @@ class GenericPanel : public QTreeWidget { representing a title block template */ QHash tb_templates_; + + QTreeWidgetItem *m_selected_item = nullptr; }; #endif