diff options
author | Jocelyn Turcotte <jocelyn.turcotte@nokia.com> | 2010-06-18 14:05:16 (GMT) |
---|---|---|
committer | Jocelyn Turcotte <jocelyn.turcotte@nokia.com> | 2010-06-30 15:54:38 (GMT) |
commit | f6cd0264c6e6f0bdb451e4f44284372e32e1db91 (patch) | |
tree | f9d92bfc2f1f78271f90ae9084624d434f74d699 /src/gui | |
parent | 84756e043fa2bd9c83b24abffb280290ad3667cd (diff) | |
download | Qt-f6cd0264c6e6f0bdb451e4f44284372e32e1db91.zip Qt-f6cd0264c6e6f0bdb451e4f44284372e32e1db91.tar.gz Qt-f6cd0264c6e6f0bdb451e4f44284372e32e1db91.tar.bz2 |
QGraphicsProxyWidget: Fixes QComboBox popup closing issue.
This happens when the QComboBox popup gets closed by
QGraphicsScenePrivate::removePopup and then the QComboBox gets hidden.
If the QComboBox gets shown again, the popup will be shown as well
since it was not explicitly hidden.
Reviewed-by: Yoann Lopes
Diffstat (limited to 'src/gui')
-rw-r--r-- | src/gui/graphicsview/qgraphicsscene.cpp | 3 | ||||
-rw-r--r-- | src/gui/widgets/qcombobox.cpp | 5 |
2 files changed, 6 insertions, 2 deletions
diff --git a/src/gui/graphicsview/qgraphicsscene.cpp b/src/gui/graphicsview/qgraphicsscene.cpp index ca3b56f..b821551 100644 --- a/src/gui/graphicsview/qgraphicsscene.cpp +++ b/src/gui/graphicsview/qgraphicsscene.cpp @@ -885,8 +885,7 @@ void QGraphicsScenePrivate::removePopup(QGraphicsWidget *widget, bool itemIsDyin ungrabKeyboard(static_cast<QGraphicsItem *>(widget), itemIsDying); } if (!itemIsDying && widget->isVisible()) { - widget->hide(); - widget->QGraphicsItem::d_ptr->explicitlyHidden = 0; + widget->QGraphicsItem::d_ptr->setVisibleHelper(false, /* explicit = */ false); } } } diff --git a/src/gui/widgets/qcombobox.cpp b/src/gui/widgets/qcombobox.cpp index 1504066..dcc328f 100644 --- a/src/gui/widgets/qcombobox.cpp +++ b/src/gui/widgets/qcombobox.cpp @@ -704,6 +704,11 @@ void QComboBoxPrivateContainer::hideEvent(QHideEvent *) { emit resetButton(); combo->update(); + // QGraphicsScenePrivate::removePopup closes the combo box popup, it hides it non-explicitly. + // Hiding/showing the QComboBox after this will unexpectedly show the popup as well. + // Re-hiding the popup container makes sure it is explicitly hidden. + if (QGraphicsProxyWidget *proxy = graphicsProxyWidget()) + proxy->hide(); } void QComboBoxPrivateContainer::mousePressEvent(QMouseEvent *e) |