fix text edit losing focus
This commit is contained in:
parent
d0090967f3
commit
6ea48d78c9
3 changed files with 6 additions and 26 deletions
|
@ -637,7 +637,6 @@ public:
|
|||
protected:
|
||||
void keyPressEvent(QKeyEvent *event) override;
|
||||
void focusOutEvent(QFocusEvent *e) override;
|
||||
bool eventFilter(QObject *, QEvent *) override;
|
||||
|
||||
signals:
|
||||
void edited();
|
||||
|
|
|
@ -38,6 +38,7 @@
|
|||
#include <QDesktopWidget>
|
||||
#include <QDialog>
|
||||
#include <QLineEdit>
|
||||
#include <QTextEdit>
|
||||
#include <QWidgetAction>
|
||||
#include <QLabel>
|
||||
#include <QCheckBox>
|
||||
|
@ -145,7 +146,8 @@ void TPanel::enterEvent(QEvent *event) {
|
|||
// grab the focus, unless a line-edit is focused currently
|
||||
|
||||
QWidget *focusWidget = qApp->focusWidget();
|
||||
if (focusWidget && dynamic_cast<QLineEdit *>(focusWidget)) {
|
||||
if (focusWidget && (dynamic_cast<QLineEdit *>(focusWidget) ||
|
||||
dynamic_cast<QTextEdit *>(focusWidget))) {
|
||||
event->accept();
|
||||
return;
|
||||
}
|
||||
|
|
|
@ -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,
|
||||
|
|
Loading…
Reference in a new issue