From f1a857c079e11c8e298ec8f2dafef49039f8ca40 Mon Sep 17 00:00:00 2001 From: Gabriel de Dietrich Date: Fri, 25 Aug 2017 16:16:12 +0700 Subject: [PATCH] QCompleter: Add check before setting the widget This prevents unnecessarily removing and reinstalling the completer as event filter on the same widget. This does not prevent what's going on in QComboBox::focusInEvent(), where we'd set the line edit as widget just to immediately override it with combo box itself. Change-Id: I70c081a920f4daf4d7560e5cd7158e4070042d42 Reviewed-by: Friedemann Kleint --- src/widgets/util/qcompleter.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/widgets/util/qcompleter.cpp b/src/widgets/util/qcompleter.cpp index 9ae03840202..a9ab0c22c86 100644 --- a/src/widgets/util/qcompleter.cpp +++ b/src/widgets/util/qcompleter.cpp @@ -1013,11 +1013,15 @@ QCompleter::~QCompleter() void QCompleter::setWidget(QWidget *widget) { Q_D(QCompleter); + if (widget == d->widget) + return; + if (d->widget) d->widget->removeEventFilter(this); d->widget = widget; if (d->widget) d->widget->installEventFilter(this); + if (d->popup) { d->popup->hide(); d->popup->setFocusProxy(d->widget);