aboutsummaryrefslogtreecommitdiff
path: root/src/eventfilters.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/eventfilters.cpp')
-rw-r--r--src/eventfilters.cpp21
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;
+}