From 0162ba730a8c43744b2cfff44c484dc80989c966 Mon Sep 17 00:00:00 2001 From: Martin Mathieson Date: Fri, 3 Jul 2020 12:15:29 +0100 Subject: Enable display filter autocomplete on find packet search. Bug: 16638 Change-Id: Ifd9c9e4392fdc3d32b2aa4466d5a7f2835893338 Reviewed-on: https://code.wireshark.org/review/37682 Petri-Dish: Martin Mathieson Tested-by: Petri Dish Buildbot Reviewed-by: Anders Broman --- ui/qt/search_frame.cpp | 3 +++ ui/qt/search_frame.ui | 6 +++--- ui/qt/widgets/syntax_line_edit.cpp | 17 +++++++++++++++-- ui/qt/widgets/syntax_line_edit.h | 2 ++ 4 files changed, 23 insertions(+), 5 deletions(-) (limited to 'ui') diff --git a/ui/qt/search_frame.cpp b/ui/qt/search_frame.cpp index 8ef0e3c5f6..51c3ea145e 100644 --- a/ui/qt/search_frame.cpp +++ b/ui/qt/search_frame.cpp @@ -274,6 +274,9 @@ void SearchFrame::updateWidgets() return; } + // Enable completion only for display filter search. + sf_ui_->searchLineEdit->allowCompletion(search_type == df_search_); + if (sf_ui_->searchLineEdit->text().isEmpty() || sf_ui_->searchLineEdit->syntaxState() == SyntaxLineEdit::Invalid) { sf_ui_->findButton->setEnabled(false); } else { diff --git a/ui/qt/search_frame.ui b/ui/qt/search_frame.ui index 8d709d0f3d..c3bb99087c 100644 --- a/ui/qt/search_frame.ui +++ b/ui/qt/search_frame.ui @@ -147,7 +147,7 @@ - + 1 @@ -195,9 +195,9 @@ 1 - SyntaxLineEdit + DisplayFilterEdit QLineEdit -
widgets/syntax_line_edit.h
+
widgets/display_filter_edit.h
diff --git a/ui/qt/widgets/syntax_line_edit.cpp b/ui/qt/widgets/syntax_line_edit.cpp index 71128d0ee1..187f432ee8 100644 --- a/ui/qt/widgets/syntax_line_edit.cpp +++ b/ui/qt/widgets/syntax_line_edit.cpp @@ -38,7 +38,8 @@ const int max_completion_items_ = 20; SyntaxLineEdit::SyntaxLineEdit(QWidget *parent) : QLineEdit(parent), completer_(NULL), - completion_model_(NULL) + completion_model_(NULL), + completion_enabled_(false) { // Try to matche QLineEdit's placeholder text color (which sets the // alpha channel to 50%, which doesn't work in style sheets). @@ -70,6 +71,14 @@ void SyntaxLineEdit::setCompleter(QCompleter *c) completer_->setMaxVisibleItems(max_completion_items_); QObject::connect(completer_, static_cast(&QCompleter::activated), this, &SyntaxLineEdit::insertFieldCompletion); + + // Auto-completion is turned on. + completion_enabled_ = true; +} + +void SyntaxLineEdit::allowCompletion(bool enabled) +{ + completion_enabled_ = enabled; } void SyntaxLineEdit::setSyntaxState(SyntaxState state) { @@ -148,6 +157,10 @@ void SyntaxLineEdit::insertFilter(const QString &filter) void SyntaxLineEdit::checkDisplayFilter(QString filter) { + if (!completion_enabled_) { + return; + } + if (filter.isEmpty()) { setSyntaxState(SyntaxLineEdit::Empty); return; @@ -317,7 +330,7 @@ void SyntaxLineEdit::completionKeyPressEvent(QKeyEvent *event) // ...otherwise process the key ourselves. SyntaxLineEdit::keyPressEvent(event); - if (!completer_ || !completion_model_ || !prefs.gui_autocomplete_filter) return; + if (!completion_enabled_ || !completer_ || !completion_model_ || !prefs.gui_autocomplete_filter) return; // Do nothing on bare shift. if ((event->modifiers() & Qt::ShiftModifier) && event->text().isEmpty()) return; diff --git a/ui/qt/widgets/syntax_line_edit.h b/ui/qt/widgets/syntax_line_edit.h index 820795fd96..cc1b8461e3 100644 --- a/ui/qt/widgets/syntax_line_edit.h +++ b/ui/qt/widgets/syntax_line_edit.h @@ -36,6 +36,7 @@ public: void setCompleter(QCompleter *c); QCompleter *completer() const { return completer_; } + void allowCompletion(bool enabled); public slots: void setStyleSheet(const QString &style_sheet); @@ -70,6 +71,7 @@ private: QString syntax_error_message_; QString token_chars_; QColor busy_fg_; + bool completion_enabled_; private slots: void insertFieldCompletion(const QString &completion_text); -- cgit v1.2.3