From 6ea48d78c99377aa9866e18e4ed2dbb408ab78ea Mon Sep 17 00:00:00 2001 From: shun-iwasawa Date: Mon, 5 Jun 2023 12:56:17 +0900 Subject: [PATCH] fix text edit losing focus --- toonz/sources/include/toonzqt/paramfield.h | 1 - toonz/sources/toonz/pane.cpp | 8 +++++--- toonz/sources/toonzqt/paramfield.cpp | 23 +--------------------- 3 files changed, 6 insertions(+), 26 deletions(-) diff --git a/toonz/sources/include/toonzqt/paramfield.h b/toonz/sources/include/toonzqt/paramfield.h index adea09cb..40a9c49b 100644 --- a/toonz/sources/include/toonzqt/paramfield.h +++ b/toonz/sources/include/toonzqt/paramfield.h @@ -637,7 +637,6 @@ public: protected: void keyPressEvent(QKeyEvent *event) override; void focusOutEvent(QFocusEvent *e) override; - bool eventFilter(QObject *, QEvent *) override; signals: void edited(); diff --git a/toonz/sources/toonz/pane.cpp b/toonz/sources/toonz/pane.cpp index 53d31853..114c7972 100644 --- a/toonz/sources/toonz/pane.cpp +++ b/toonz/sources/toonz/pane.cpp @@ -38,6 +38,7 @@ #include #include #include +#include #include #include #include @@ -145,9 +146,10 @@ void TPanel::enterEvent(QEvent *event) { // grab the focus, unless a line-edit is focused currently QWidget *focusWidget = qApp->focusWidget(); - if (focusWidget && dynamic_cast(focusWidget)) { - event->accept(); - return; + if (focusWidget && (dynamic_cast(focusWidget) || + dynamic_cast(focusWidget))) { + event->accept(); + return; } widgetFocusOnEnter(); diff --git a/toonz/sources/toonzqt/paramfield.cpp b/toonz/sources/toonzqt/paramfield.cpp index 24e2a45c..65bff6bf 100644 --- a/toonz/sources/toonzqt/paramfield.cpp +++ b/toonz/sources/toonzqt/paramfield.cpp @@ -1566,9 +1566,7 @@ void IntParamField::update(int frame) { namespace component { MyTextEdit::MyTextEdit(const QString &text, QWidget *parent) - : QTextEdit(text, parent) { - installEventFilter(this); -} + : QTextEdit(text, parent) {} void MyTextEdit::keyPressEvent(QKeyEvent *event) { QTextEdit::keyPressEvent(event); @@ -1580,25 +1578,6 @@ void MyTextEdit::focusOutEvent(QFocusEvent *event) { emit edited(); } -bool MyTextEdit::eventFilter(QObject *obj, QEvent *e) { - if (e->type() != QEvent::ShortcutOverride) - return QTextEdit::eventFilter(obj, e); - - QKeyEvent *ke = (QKeyEvent *)e; - std::string keyStr = - QKeySequence(ke->key() + ke->modifiers()).toString().toStdString(); - QAction *action = CommandManager::instance()->getActionFromShortcut(keyStr); - if (!action) return QTextEdit::eventFilter(obj, e); - - std::string actionId = CommandManager::instance()->getIdFromAction(action); - if (actionId == "MI_Undo" || actionId == "MI_Redo" || - actionId == "MI_Clear" || actionId == "MI_Copy" || - actionId == "MI_Paste" || actionId == "MI_Cut") - return QTextEdit::eventFilter(obj, e); - - return true; -} - }; // namespace component StringParamField::StringParamField(QWidget *parent, QString name,