From db022622b6f98eeebc600e94829fb586583d61c7 Mon Sep 17 00:00:00 2001 From: deva Date: Tue, 7 Sep 2010 13:01:07 +0000 Subject: Fix wierd behaviour in combobox, when used in colaboration with luadb. --- client/widgets/combobox.cc | 44 +++++++++++++++++++------------------------- 1 file changed, 19 insertions(+), 25 deletions(-) diff --git a/client/widgets/combobox.cc b/client/widgets/combobox.cc index 9d783a2..5eb9b9e 100644 --- a/client/widgets/combobox.cc +++ b/client/widgets/combobox.cc @@ -103,22 +103,29 @@ ComboBox::ComboBox(QDomNode &node, MacroWindow *macrowindow) switch(combotype) { case SELECT: - combobox->setEditable(false); + { + combobox->setEditable(false); #ifndef STYLE_HACK - combobox->setEditable(true); - combobox->lineEdit()->setReadOnly(true); - combobox->lineEdit()->installEventFilter(this); + combobox->setEditable(true); + combobox->lineEdit()->setReadOnly(true); + combobox->lineEdit()->installEventFilter(this); #endif/*STYLE_HACK*/ - connect(combobox, SIGNAL(currentIndexChanged(QString)), - this, SLOT(changed())); + connect(combobox, SIGNAL(currentIndexChanged(QString)), + this, SLOT(changed())); + } break; case EDIT: - combobox->setEditable(true); - - connect(combobox, SIGNAL(editTextChanged(QString)), this, SLOT(changed())); + { + combobox->setEditable(true); + connect(combobox, SIGNAL(editTextChanged(QString)), + this, SLOT(changed())); + QCompleter *completer = combobox->completer(); + completer->setCaseSensitivity(Qt::CaseInsensitive); + completer->setCompletionMode(QCompleter::PopupCompletion); + } break; case SEARCH: @@ -170,7 +177,6 @@ void ComboBox::setValue(QString value, QString source) int idx = combobox->findData(value); - // printf("setValue(\"%s\") - %d\n", value.toStdString().c_str(), idx); if(combobox->currentIndex() != idx) { ischangingbyuser = false; combobox->setCurrentIndex(idx); @@ -178,8 +184,6 @@ void ComboBox::setValue(QString value, QString source) } else { emit eventOnChange(); } - // setInitialValue(value); - } bool ComboBox::preValid() @@ -194,8 +198,6 @@ bool ComboBox::preValid() void ComboBox::changed() { if(ignoreChangeEvents == true) return; - - WARN(ComboBox, "changed"); if(ischangingbyuser) emit wasChanged(); emit eventOnChange(); } @@ -203,8 +205,6 @@ void ComboBox::changed() bool ComboBox::eventFilter(QObject *obj, QEvent *event) { if(ignoreChangeEvents == true) return false; - - WARN(ComboBox, "eventFilter"); if(combotype == SELECT) { if(event->type() == QEvent::MouseButtonRelease) { if(enabled()) combobox->showPopup(); @@ -216,12 +216,7 @@ bool ComboBox::eventFilter(QObject *obj, QEvent *event) void ComboBox::changeEvent(QEvent *event) { - if(ignoreChangeEvents == true) return; - - WARN(ComboBox, "changeEvent"); - if(event->type() == QEvent::EnabledChange) { - changed(); - } + if(event->type() == QEvent::EnabledChange) changed(); } void ComboBox::setWdgValid(bool valid) @@ -243,7 +238,6 @@ void ComboBox::setWdgValid(bool valid) void ComboBox::clear() { ignoreChangeEvents = true; - WARN(ComboBox, "clear"); combobox->clear(); ignoreChangeEvents = false; } @@ -264,9 +258,9 @@ QString ComboBox::lineEditValue() void ComboBox::setLineEditValue(QString value) { + ignoreChangeEvents = true; if(combobox->lineEdit()) { - ignoreChangeEvents = true; combobox->lineEdit()->setText(value); - ignoreChangeEvents = false; } + ignoreChangeEvents = false; } -- cgit v1.2.3