aboutsummaryrefslogtreecommitdiff
path: root/src/widgets
diff options
context:
space:
mode:
authorMike Skec <skec@protonmail.ch>2020-12-27 16:47:34 +1100
committerFelix Queißner <felix@ib-queissner.de>2020-12-27 11:01:48 +0100
commit5bfe89f71957910975ae576cf968cf1ec32db49e (patch)
tree1aa06672ee6c31bdae91fd5688d7cc5de04cbd4c /src/widgets
parent13ea5684612b85bd897e1e79d88737bc0e691b49 (diff)
downloadkristall-5bfe89f71957910975ae576cf968cf1ec32db49e.tar.gz
URL bar now has 'select all' behaviour on mouse release
Diffstat (limited to 'src/widgets')
-rw-r--r--src/widgets/searchbar.cpp22
-rw-r--r--src/widgets/searchbar.hpp4
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