summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSami Merila <sami.merila@nokia.com>2010-09-09 11:36:32 (GMT)
committerSami Merila <sami.merila@nokia.com>2010-09-09 11:36:32 (GMT)
commit8ed2b25f87bc632d0e7d375c3506fab1c59ca1a2 (patch)
treee7c29e3933f84779a7ea4382e7a80fe42005f906
parent647a3999bb073395ebb3df2137fb60e5b0435d16 (diff)
downloadQt-8ed2b25f87bc632d0e7d375c3506fab1c59ca1a2.zip
Qt-8ed2b25f87bc632d0e7d375c3506fab1c59ca1a2.tar.gz
Qt-8ed2b25f87bc632d0e7d375c3506fab1c59ca1a2.tar.bz2
Editable QComboBox popup immediately closes itself after a click
This is due that timer that blocks for while mouse release events (blockMouseReleaseTimer) is not started. There is an optimization in QComboBox that tries to avoid calling d->viewContainer() since that method creates the viewContainter if it doesn't exist. Unfortunately this optimization does not take into account if the container is already created. In this particular case, viewContainer is already created, but since QComboBox creates a QLineEdit, it skips the timer start, which leads to situation where combobox's popup menu receiving mouse release event and thus closes itself. As a fix, blockMouseReleaseTimer is started if the viewContainer is already created. Task-number: QTBUG-13231 Reviewed-by: axis
-rw-r--r--src/gui/widgets/qcombobox.cpp3
1 files changed, 2 insertions, 1 deletions
diff --git a/src/gui/widgets/qcombobox.cpp b/src/gui/widgets/qcombobox.cpp
index 917a325..96d2acd 100644
--- a/src/gui/widgets/qcombobox.cpp
+++ b/src/gui/widgets/qcombobox.cpp
@@ -2849,7 +2849,8 @@ void QComboBox::mousePressEvent(QMouseEvent *e)
if (sc == QStyle::SC_ComboBoxArrow)
d->updateArrow(QStyle::State_Sunken);
#ifdef QT_KEYPAD_NAVIGATION
- if (!d->lineEdit) {
+ //if the container already exists, then d->viewContainer() is safe to call
+ if (d->container) {
#endif
// We've restricted the next couple of lines, because by not calling
// viewContainer(), we avoid creating the QComboBoxPrivateContainer.