From 17975c845c8144792562b2dba5beb1cbc5b42384 Mon Sep 17 00:00:00 2001 From: wmayer Date: Mon, 1 Jul 2024 11:51:14 +0200 Subject: [PATCH 1/4] Sketcher: Delete key in non-functional in macOS --- .../Gui/DrawSketchKeyboardManager.cpp | 4 +-- src/Mod/Sketcher/Gui/ShortcutListener.cpp | 26 +++++++------------ 2 files changed, 12 insertions(+), 18 deletions(-) diff --git a/src/Mod/Sketcher/Gui/DrawSketchKeyboardManager.cpp b/src/Mod/Sketcher/Gui/DrawSketchKeyboardManager.cpp index 9f0fa9f272..498200f70b 100644 --- a/src/Mod/Sketcher/Gui/DrawSketchKeyboardManager.cpp +++ b/src/Mod/Sketcher/Gui/DrawSketchKeyboardManager.cpp @@ -100,9 +100,9 @@ void DrawSketchKeyboardManager::detectKeyboardEventHandlingMode(QKeyEvent* keyEv auto match = rx.match(keyEvent->text()); if (keyEvent->key() == Qt::Key_Enter || keyEvent->key() == Qt::Key_Return || keyEvent->key() == Qt::Key_Tab || keyEvent->key() == Qt::Key_Backtab - || keyEvent->key() == Qt::Key_Backspace || keyEvent->key() == Qt::Key_Delete || keyEvent->key() == Qt::Key_Minus || keyEvent->key() == Qt::Key_Period - || keyEvent->key() == Qt::Key_Comma || match.hasMatch()) { + || keyEvent->key() == Qt::Key_Comma || match.hasMatch() + || keyEvent->matches(QKeySequence::Backspace) || keyEvent->matches(QKeySequence::Delete)) { keyMode = KeyboardEventHandlingMode::DSHControl; timer.start(timeOutValue); } diff --git a/src/Mod/Sketcher/Gui/ShortcutListener.cpp b/src/Mod/Sketcher/Gui/ShortcutListener.cpp index b161cb4194..f8c050f9a0 100644 --- a/src/Mod/Sketcher/Gui/ShortcutListener.cpp +++ b/src/Mod/Sketcher/Gui/ShortcutListener.cpp @@ -23,6 +23,7 @@ #include "PreCompiled.h" #ifndef _PreComp_ #include +#include #endif #include "ShortcutListener.h" @@ -33,28 +34,21 @@ using namespace SketcherGui; // ******************** ShortcutListener *********************************************// ShortcutListener::ShortcutListener(ViewProviderSketch* vp) -{ - pViewProvider = vp; -} - -ShortcutListener::~ShortcutListener() + : pViewProvider {vp} {} +ShortcutListener::~ShortcutListener() = default; + bool ShortcutListener::eventFilter(QObject* obj, QEvent* event) { if (event->type() == QEvent::ShortcutOverride) { - QKeyEvent* kevent = static_cast(event); - if (kevent->modifiers() == Qt::NoModifier || kevent->modifiers() == Qt::ShiftModifier - || kevent->modifiers() == Qt::KeypadModifier) { - switch (kevent->key()) { - case Qt::Key_Delete: - kevent->accept(); - pViewProvider->deleteSelected(); - return true; - default: - break; - } + QKeyEvent* kevent = static_cast(event); // NOLINT + if (kevent->matches(QKeySequence::Delete)) { + kevent->accept(); + pViewProvider->deleteSelected(); + return true; } } + return QObject::eventFilter(obj, event); } From 3f41cf58da4b203a72861a41b9c0f0e394ed4d0e Mon Sep 17 00:00:00 2001 From: wmayer Date: Mon, 1 Jul 2024 11:53:53 +0200 Subject: [PATCH 2/4] Gui: Fix Delete key in parameter editor --- src/Gui/DlgParameterImp.cpp | 30 ++++++++++++------------------ src/Gui/DownloadItem.cpp | 4 ++-- 2 files changed, 14 insertions(+), 20 deletions(-) diff --git a/src/Gui/DlgParameterImp.cpp b/src/Gui/DlgParameterImp.cpp index 5070176d67..c444e8c04e 100644 --- a/src/Gui/DlgParameterImp.cpp +++ b/src/Gui/DlgParameterImp.cpp @@ -500,15 +500,12 @@ void ParameterGroup::contextMenuEvent ( QContextMenuEvent* event ) void ParameterGroup::keyPressEvent (QKeyEvent* event) { - switch ( tolower(event->key()) ) - { - case Qt::Key_Delete: - { - onDeleteSelectedItem(); - } break; - default: - QTreeWidget::keyPressEvent(event); - } + if (event->matches(QKeySequence::Delete)) { + onDeleteSelectedItem(); + } + else { + QTreeWidget::keyPressEvent(event); + } } void ParameterGroup::onDeleteSelectedItem() @@ -715,15 +712,12 @@ void ParameterValue::contextMenuEvent ( QContextMenuEvent* event ) void ParameterValue::keyPressEvent (QKeyEvent* event) { - switch ( tolower(event->key()) ) - { - case Qt::Key_Delete: - { - onDeleteSelectedItem(); - } break; - default: - QTreeWidget::keyPressEvent(event); - } + if (event->matches(QKeySequence::Delete)) { + onDeleteSelectedItem(); + } + else { + QTreeWidget::keyPressEvent(event); + } } void ParameterValue::resizeEvent(QResizeEvent* event) diff --git a/src/Gui/DownloadItem.cpp b/src/Gui/DownloadItem.cpp index 2d8f747752..486c7972e8 100644 --- a/src/Gui/DownloadItem.cpp +++ b/src/Gui/DownloadItem.cpp @@ -60,8 +60,8 @@ EditTableView::EditTableView(QWidget *parent) void EditTableView::keyPressEvent(QKeyEvent *event) { - if ((event->key() == Qt::Key_Delete - || event->key() == Qt::Key_Backspace) + if ((event->matches(QKeySequence::Delete) + || event->matches(QKeySequence::Backspace)) && model()) { removeOne(); } else { From 90b5af266f8514612ca30c0647f1524fcf1fb313 Mon Sep 17 00:00:00 2001 From: wmayer Date: Mon, 1 Jul 2024 12:33:46 +0200 Subject: [PATCH 3/4] Material: Fix Delete key in material editor --- src/Mod/Material/Gui/Array2D.cpp | 2 +- src/Mod/Material/Gui/Array3D.cpp | 2 -- src/Mod/Material/Gui/MaterialSave.cpp | 10 ++-------- src/Mod/Material/Gui/MaterialsEditor.cpp | 2 -- 4 files changed, 3 insertions(+), 13 deletions(-) diff --git a/src/Mod/Material/Gui/Array2D.cpp b/src/Mod/Material/Gui/Array2D.cpp index fd383ecf44..86804981d5 100644 --- a/src/Mod/Material/Gui/Array2D.cpp +++ b/src/Mod/Material/Gui/Array2D.cpp @@ -74,7 +74,7 @@ Array2D::Array2D(const QString& propertyName, connect(ui->tableView, &QWidget::customContextMenuRequested, this, &Array2D::onContextMenu); _deleteAction.setText(tr("Delete row")); - _deleteAction.setShortcut(Qt::Key_Delete); + _deleteAction.setShortcut(QKeySequence::Delete); connect(&_deleteAction, &QAction::triggered, this, &Array2D::onDelete); ui->tableView->addAction(&_deleteAction); diff --git a/src/Mod/Material/Gui/Array3D.cpp b/src/Mod/Material/Gui/Array3D.cpp index 16cebf5931..450ca682cc 100644 --- a/src/Mod/Material/Gui/Array3D.cpp +++ b/src/Mod/Material/Gui/Array3D.cpp @@ -75,12 +75,10 @@ Array3D::Array3D(const QString& propertyName, connect(ui->table2D, &QWidget::customContextMenuRequested, this, &Array3D::on2DContextMenu); _deleteDepthAction.setText(tr("Delete row")); - // _deleteDepthAction.setShortcut(Qt::Key_Delete); connect(&_deleteDepthAction, &QAction::triggered, this, &Array3D::onDepthDelete); ui->table3D->addAction(&_deleteDepthAction); _delete2DAction.setText(tr("Delete row")); - // _delete2DAction.setShortcut(Qt::Key_Delete); connect(&_delete2DAction, &QAction::triggered, this, &Array3D::on2DDelete); ui->table2D->addAction(&_delete2DAction); diff --git a/src/Mod/Material/Gui/MaterialSave.cpp b/src/Mod/Material/Gui/MaterialSave.cpp index 1f82b7c39e..3bf75d9d46 100644 --- a/src/Mod/Material/Gui/MaterialSave.cpp +++ b/src/Mod/Material/Gui/MaterialSave.cpp @@ -87,7 +87,7 @@ MaterialSave::MaterialSave(const std::shared_ptr& material, &MaterialSave::onContextMenu); _deleteAction.setText(tr("Delete")); - _deleteAction.setShortcut(Qt::Key_Delete); + _deleteAction.setShortcut(QKeySequence::Delete); connect(&_deleteAction, &QAction::triggered, this, &MaterialSave::onDelete); ui->treeMaterials->addAction(&_deleteAction); @@ -525,9 +525,6 @@ void MaterialSave::onContextMenu(const QPoint& pos) { QMenu contextMenu(tr("Context menu"), this); - // QAction action1(tr("Delete"), this); - // action1.setShortcut(Qt::Key_Delete); - // connect(&action1, &QAction::triggered, this, &MaterialSave::onDelete); contextMenu.addAction(&_deleteAction); contextMenu.exec(ui->treeMaterials->mapToGlobal(pos)); @@ -542,10 +539,7 @@ void MaterialSave::onDelete(bool checked) return; } - int res = confirmDelete(this); - if (res == QMessageBox::Cancel) { - return; - } + confirmDelete(this); } int MaterialSave::confirmDelete(QWidget* parent) diff --git a/src/Mod/Material/Gui/MaterialsEditor.cpp b/src/Mod/Material/Gui/MaterialsEditor.cpp index 1a4c223186..dd0d3da8c5 100644 --- a/src/Mod/Material/Gui/MaterialsEditor.cpp +++ b/src/Mod/Material/Gui/MaterialsEditor.cpp @@ -1283,12 +1283,10 @@ void MaterialsEditor::onContextMenu(const QPoint& pos) QMenu contextMenu(tr("Context menu"), this); QAction action1(tr("Inherit from"), this); - // action1.setShortcut(Qt::Key_Delete); connect(&action1, &QAction::triggered, this, &MaterialsEditor::onInherit); contextMenu.addAction(&action1); QAction action2(tr("Inherit new material"), this); - // action1.setShortcut(Qt::Key_Delete); connect(&action2, &QAction::triggered, this, &MaterialsEditor::onInheritNew); contextMenu.addAction(&action2); From b317a710809692e24d99b02de128de3b74758315 Mon Sep 17 00:00:00 2001 From: wmayer Date: Mon, 1 Jul 2024 12:39:05 +0200 Subject: [PATCH 4/4] TD: Fix Delete key in tech draw view --- src/Mod/TechDraw/Gui/QGIViewPart.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Mod/TechDraw/Gui/QGIViewPart.cpp b/src/Mod/TechDraw/Gui/QGIViewPart.cpp index 3ba81c8c29..ee1e1fb72f 100644 --- a/src/Mod/TechDraw/Gui/QGIViewPart.cpp +++ b/src/Mod/TechDraw/Gui/QGIViewPart.cpp @@ -120,7 +120,7 @@ bool QGIViewPart::sceneEventFilter(QGraphicsItem *watched, QEvent *event) // which will be processed by QGVPage/QGVNavStyle keypress logic, but not forwarded to // Std_Delete QKeyEvent *keyEvent = static_cast(event); - if (keyEvent->key() == Qt::Key_Delete) { + if (keyEvent->matches(QKeySequence::Delete)) { bool success = removeSelectedCosmetic(); if (success) { updateView(true);