From 87f4dc0a9d22060d379db2daa3f4271137a4edcc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Stig=20Bj=C3=B8rlykke?= Date: Wed, 25 Jan 2017 20:28:34 +0100 Subject: Qt: Preference editor improvements. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Use correct disconnect() signature to ensure everything is disconnected before connecting new signals. Without this all previous connects() are still active. This leads to gradually more and more syntax checks being called for each change, and possibility of a wrong syntax check (especially for strings which has no syntax check). Use the textEdited() signal to trigger a syntax check at startup. This gives consistency. Do not clear preferenceLineEdit when done because it looks weird when the preference text disappears while the widget is hiding. The entry is cleared before next show anyway. Change-Id: I21c6fd8ec6bb0ecff1b2c0b66fe97dc3eaecf9b3 Reviewed-on: https://code.wireshark.org/review/19788 Petri-Dish: Stig Bjørlykke Tested-by: Petri Dish Buildbot Reviewed-by: Anders Broman --- ui/qt/preference_editor_frame.cpp | 13 ++++--------- 1 file changed, 4 insertions(+), 9 deletions(-) diff --git a/ui/qt/preference_editor_frame.cpp b/ui/qt/preference_editor_frame.cpp index e9c008ea1c..5ac034c6b4 100644 --- a/ui/qt/preference_editor_frame.cpp +++ b/ui/qt/preference_editor_frame.cpp @@ -90,29 +90,25 @@ void PreferenceEditorFrame::editPreference(preference *pref, pref_module *module ui->preferenceLineEdit->clear(); ui->preferenceLineEdit->setSyntaxState(SyntaxLineEdit::Empty); - disconnect(ui->preferenceLineEdit); + disconnect(ui->preferenceLineEdit, 0, 0, 0); bool show = false; switch (prefs_get_type(pref_)) { case PREF_UINT: case PREF_DECODE_AS_UINT: - new_uint_ = prefs_get_uint_value_real(pref_, pref_stashed); - connect(ui->preferenceLineEdit, SIGNAL(textEdited(QString)), + connect(ui->preferenceLineEdit, SIGNAL(textChanged(QString)), this, SLOT(uintLineEditTextEdited(QString))); show = true; break; case PREF_STRING: - new_str_ = prefs_get_string_value(pref_, pref_stashed); - connect(ui->preferenceLineEdit, SIGNAL(textEdited(QString)), + connect(ui->preferenceLineEdit, SIGNAL(textChanged(QString)), this, SLOT(stringLineEditTextEdited(QString))); show = true; break; case PREF_RANGE: case PREF_DECODE_AS_RANGE: - wmem_free(NULL, new_range_); - new_range_ = range_copy(NULL, prefs_get_range_value_real(pref_, pref_stashed)); - connect(ui->preferenceLineEdit, SIGNAL(textEdited(QString)), + connect(ui->preferenceLineEdit, SIGNAL(textChanged(QString)), this, SLOT(rangeLineEditTextEdited(QString))); show = true; break; @@ -240,7 +236,6 @@ void PreferenceEditorFrame::on_buttonBox_rejected() module_ = NULL; wmem_free(NULL, new_range_); new_range_ = NULL; - ui->preferenceLineEdit->clear(); animatedHide(); } -- cgit v1.2.1