mirror of
https://github.com/qelectrotech/qelectrotech-source-mirror.git
synced 2026-09-30 23:04:13 +02:00
Merge pull request #1182 from ispyisail/fix/element-editor-space-rotates-selection
Fix #1177: Space rotated the selection, not the part being added
This commit is contained in:
@@ -148,6 +148,9 @@ ElementScene::~ElementScene()
|
||||
disconnect(&m_undo_stack, &QUndoStack::indexChanged, this, &ElementScene::managePrimitivesGroups);
|
||||
delete m_decorator_lock;
|
||||
|
||||
//Deleting the event interface resets the behavior; the editor
|
||||
//is already being destroyed, so it must not hear about it.
|
||||
blockSignals(true);
|
||||
if (m_event_interface)
|
||||
delete m_event_interface;
|
||||
|
||||
@@ -417,7 +420,10 @@ void ElementScene::clearEventInterface()
|
||||
*/
|
||||
void ElementScene::setBehavior(ElementScene::Behavior b)
|
||||
{
|
||||
if (b == m_behavior)
|
||||
return;
|
||||
m_behavior = b;
|
||||
emit behaviorChanged();
|
||||
}
|
||||
|
||||
ElementScene::Behavior ElementScene::behavior() const
|
||||
|
||||
@@ -198,6 +198,8 @@ class ElementScene : public QGraphicsScene
|
||||
void elementTypeChanged();
|
||||
/// Signal emitted with the current cursor position (scene coordinates) on every mouse move
|
||||
void mouseMoved(const QPointF &pos);
|
||||
/// Signal emitted when the behavior changes, e.g. a part starts or stops being added
|
||||
void behaviorChanged();
|
||||
};
|
||||
|
||||
Q_DECLARE_OPERATORS_FOR_FLAGS(ElementScene::ItemOptions)
|
||||
|
||||
@@ -42,6 +42,9 @@ void ESEventInterface::init()
|
||||
{
|
||||
m_scene->setBehavior(ElementScene::Behavior::AddPart);
|
||||
m_editor->elementView()->setDragMode(QGraphicsView::NoDrag);
|
||||
//Keys such as Space must reach the part being added, even when
|
||||
//the focus was left in the parts list (#1177)
|
||||
m_editor->elementView()->setFocus();
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -1253,7 +1253,8 @@ void QETElementEditor::updateAction()
|
||||
ui->m_select_all_act->setEnabled(true);
|
||||
ui->m_revert_selection_action->setEnabled(true);
|
||||
|
||||
//Action enabled if a primitive is selected
|
||||
//Action enabled if a primitive is selected, and no part is being
|
||||
//added: Space rotates the part being added, not the selection (#1177)
|
||||
auto select_list = m_depth_action_group->actions();
|
||||
select_list << ui->m_cut_action
|
||||
<< ui->m_delete_action
|
||||
@@ -1262,7 +1263,8 @@ void QETElementEditor::updateAction()
|
||||
<< ui->m_flip_action
|
||||
<< ui->m_mirror_action;
|
||||
const bool has_selection = m_elmt_scene->selectedItems().count() > 0;
|
||||
auto items_selected = !m_read_only && has_selection;
|
||||
const bool adding_part = m_elmt_scene->behavior() == ElementScene::AddPart;
|
||||
auto items_selected = !m_read_only && has_selection && !adding_part;
|
||||
for (auto action : std::as_const(select_list)) {
|
||||
action->setEnabled(items_selected);
|
||||
}
|
||||
@@ -1297,6 +1299,7 @@ void QETElementEditor::setupConnection()
|
||||
connect(m_elmt_scene, &ElementScene::partsZValueChanged, this, &QETElementEditor::fillPartsList);
|
||||
connect(m_parts_list, &QListWidget::itemSelectionChanged, this, &QETElementEditor::updateSelectionFromPartsList);
|
||||
connect(QApplication::clipboard(), &QClipboard::dataChanged, this, &QETElementEditor::updateAction);
|
||||
connect(m_elmt_scene, &ElementScene::behaviorChanged, this, &QETElementEditor::updateAction);
|
||||
|
||||
connect(m_elmt_scene, &ElementScene::selectionChanged, [this]() {
|
||||
this->updateInformations();
|
||||
|
||||
Reference in New Issue
Block a user