diff options
| author | Mike Skec <skec@protonmail.ch> | 2020-12-27 16:47:34 +1100 |
|---|---|---|
| committer | Felix Queißner <felix@ib-queissner.de> | 2020-12-27 11:01:48 +0100 |
| commit | 5bfe89f71957910975ae576cf968cf1ec32db49e (patch) | |
| tree | 1aa06672ee6c31bdae91fd5688d7cc5de04cbd4c /src/widgets | |
| parent | 13ea5684612b85bd897e1e79d88737bc0e691b49 (diff) | |
| download | kristall-5bfe89f71957910975ae576cf968cf1ec32db49e.tar.gz | |
URL bar now has 'select all' behaviour on mouse release
Diffstat (limited to 'src/widgets')
| -rw-r--r-- | src/widgets/searchbar.cpp | 22 | ||||
| -rw-r--r-- | src/widgets/searchbar.hpp | 4 |
2 files changed, 26 insertions, 0 deletions
diff --git a/src/widgets/searchbar.cpp b/src/widgets/searchbar.cpp index 807a979..90537a1 100644 --- a/src/widgets/searchbar.cpp +++ b/src/widgets/searchbar.cpp @@ -30,3 +30,25 @@ void SearchBar::keyReleaseEvent(QKeyEvent *event) QLineEdit::keyReleaseEvent(event); } } + +void SearchBar::focusInEvent(QFocusEvent *event) +{ + QLineEdit::focusInEvent(event); + + // Allows only one "select all" on mouse release + // until next focus event. + this->selectall_flag = (event->reason() == Qt::MouseFocusReason); +} + +void SearchBar::mouseReleaseEvent(QMouseEvent *event) +{ + QLineEdit::mouseReleaseEvent(event); + + // Select all text if the bar was just focused and + // user did not select anything. + if (this->selectall_flag && QLineEdit::selectionLength() < 1) + { + QLineEdit::selectAll(); + } + this->selectall_flag = false; +} diff --git a/src/widgets/searchbar.hpp b/src/widgets/searchbar.hpp index e03331f..f986604 100644 --- a/src/widgets/searchbar.hpp +++ b/src/widgets/searchbar.hpp @@ -14,6 +14,10 @@ signals: public: void keyPressEvent(QKeyEvent *event) override; void keyReleaseEvent(QKeyEvent *event) override; + void focusInEvent(QFocusEvent *event) override; + void mouseReleaseEvent(QMouseEvent *event) override; +private: + bool selectall_flag; }; #endif // SEARCHBAR_HPP |
