diff --git a/libs/ui/KisNodeDelegate.cpp b/libs/ui/KisNodeDelegate.cpp
index 4f71bcd..9d30824 100644
--- a/libs/ui/KisNodeDelegate.cpp
+++ b/libs/ui/KisNodeDelegate.cpp
@@ -808,7 +808,65 @@ bool KisNodeDelegate::eventFilter(QObject *object, QEvent *event)
emit commitData(edit);
emit closeEditor(edit);
}
- }
+ } break;
+ case QEvent::ShortcutOverride:{
+ //workaround, to let (make sure) QLineEdit receive key events it can handle accordind to docs
+ //without shortcuts system stealing them
+ QLineEdit *edit = qobject_cast<QLineEdit*>(object);
+ if (edit){//valid for any QLieEdit
+ auto* key = static_cast<QKeyEvent*>(event);
+ switch (key->modifiers() ){
+ case Qt::ControlModifier:
+ switch(key->key()){
+ case Qt::Key_Backspace:
+ case Qt::Key_Delete:
+ case Qt::Key_A:
+ case Qt::Key_C:
+ case Qt::Key_Insert:
+ case Qt::Key_K:
+ case Qt::Key_V:
+ case Qt::Key_X:
+ case Qt::Key_Z:
+ case Qt::Key_Y:
+ event->accept();
+ return true;
+ default: break;
+ }
+ break;
+ case Qt::ShiftModifier:
+ switch (key->key()){
+ case Qt::Key_Left:
+ case Qt::Key_Right:
+ case Qt::Key_Insert:
+ case Qt::Key_Delete:
+ event->accept();
+ return true;
+ default: break;
+ }
+ break;
+ case Qt::NoModifier:
+ switch (key->key()){
+ case Qt::Key_Left:
+ case Qt::Key_Right:
+ case Qt::Key_Home:
+ case Qt::Key_End:
+ case Qt::Key_Backspace:
+ case Qt::Key_Delete:
+ case Qt::Key_Escape:
+ case Qt::Key_Tab:
+ case Qt::Key_Backtab:
+ case Qt::Key_Return:
+ case Qt::Key_Enter:
+ event->accept();
+ return true;
+ default: break;
+ }
+ break;
+
+ default: break;
+ }
+ }index 4f71bcd..914da68 100644
--- a/libs/ui/KisNodeDelegate.cpp
+++ b/libs/ui/KisNodeDelegate.cpp
@@ -808,7 +808,60 @@ bool KisNodeDelegate::eventFilter(QObject *object, QEvent *event)
emit commitData(edit);
emit closeEditor(edit);
}
- }
+ } break;
+ case QEvent::ShortcutOverride:{
+ //workaround, to let (make sure) QLineEdit receive key events it can handle
+ //without shortcuts system stealing them
+ QLineEdit *edit = qobject_cast<QLineEdit*>(object);
+ if (edit){//valid for any QLieEdit
+ auto* key = static_cast<QKeyEvent*>(event);
+
+ if (key->modifiers() == Qt::NoModifier){
+ switch (key->key()){
+ case Qt::Key_Escape:
+ case Qt::Key_Tab:
+ case Qt::Key_Backtab:
+ case Qt::Key_Return:
+ case Qt::Key_Enter:
+ event->accept();
+ return true;
+ default: break;
+ }
+ }
+ static constexpr QKeySequence::StandardKey actionsForQLineEdit[]{
+ QKeySequence::MoveToNextChar
+ ,QKeySequence::MoveToPreviousChar
+ ,QKeySequence::MoveToStartOfLine
+ ,QKeySequence::MoveToEndOfLine
+ ,QKeySequence::MoveToPreviousWord
+ ,QKeySequence::MoveToNextWord
+ ,QKeySequence::SelectPreviousChar
+ ,QKeySequence::SelectNextChar
+ ,QKeySequence::SelectNextWord
+ ,QKeySequence::SelectPreviousWord
+ ,QKeySequence::SelectStartOfLine
+ ,QKeySequence::SelectEndOfLine
+ ,QKeySequence::SelectAll
+ ,QKeySequence::Deselect
+ ,QKeySequence::Backspace
+ ,QKeySequence::DeleteStartOfWord
+ ,QKeySequence::Delete
+ ,QKeySequence::DeleteEndOfWord
+ ,QKeySequence::DeleteEndOfLine
+ ,QKeySequence::Copy
+ ,QKeySequence::Paste
+ ,QKeySequence::Cut
+ ,QKeySequence::Undo
+ ,QKeySequence::Redo
+ };
+ for(QKeySequence::StandardKey sk : actionsForQLineEdit){
+ if (key->matches(sk)){
+ event->accept();
+ return true;
+ }
+ }
+ }//if (edit)
+ } break;
default: break;
}