diff options
Diffstat (limited to 'src/eventfilters.cpp')
| -rw-r--r-- | src/eventfilters.cpp | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/src/eventfilters.cpp b/src/eventfilters.cpp new file mode 100644 index 00000000..2e11b587 --- /dev/null +++ b/src/eventfilters.cpp @@ -0,0 +1,21 @@ +#include "eventfilters.h" + +bool AOLineEditFilter::eventFilter(QObject *obj, QEvent *event) +{ + QLineEdit *lineEdit = qobject_cast<QLineEdit *>(obj); + if (event->type() == QEvent::FocusOut && lineEdit != nullptr && preserve_selection) + { // lost focus + int start = lineEdit->selectionStart(); +#if QT_VERSION >= QT_VERSION_CHECK(5, 10, 0) + int len = lineEdit->selectionLength(); +#else + int len = lineEdit->selectedText().length(); +#endif + if (start != -1 && len != -1) + { + lineEdit->setSelection(start, len); + return true; + } + } + return false; +} |
