diff options
Diffstat (limited to 'src/widgets')
-rw-r--r-- | src/widgets/widgets/qcombobox.cpp | 37 |
1 files changed, 18 insertions, 19 deletions
diff --git a/src/widgets/widgets/qcombobox.cpp b/src/widgets/widgets/qcombobox.cpp index fabd4e9eed..33aa88fffb 100644 --- a/src/widgets/widgets/qcombobox.cpp +++ b/src/widgets/widgets/qcombobox.cpp @@ -2809,31 +2809,30 @@ void QComboBox::hidePopup() return; #if QT_CONFIG(effects) - // Flash selected/triggered item (if any). - if (style()->styleHint(QStyle::SH_Menu_FlashTriggeredItem)) { - QItemSelectionModel *selectionModel = d->container->itemView() - ? d->container->itemView()->selectionModel() : nullptr; - if (selectionModel && selectionModel->hasSelection()) { - const QItemSelection selection = selectionModel->selection(); - - QTimer::singleShot(0, d->container, [d, selection, selectionModel]{ + QItemSelectionModel *selectionModel = d->container->itemView() + ? d->container->itemView()->selectionModel() : nullptr; + // Flash selected/triggered item (if any) before hiding the popup. + if (style()->styleHint(QStyle::SH_Menu_FlashTriggeredItem) && + selectionModel && selectionModel->hasSelection()) { + const QItemSelection selection = selectionModel->selection(); + + QTimer::singleShot(0, d->container, [d, selection, selectionModel]{ + QSignalBlocker modelBlocker(d->model); + QSignalBlocker viewBlocker(d->container->itemView()); + QSignalBlocker containerBlocker(d->container); + + // Deselect item and wait 60 ms. + selectionModel->select(selection, QItemSelectionModel::Toggle); + QTimer::singleShot(60, d->container, [d, selection, selectionModel]{ QSignalBlocker modelBlocker(d->model); QSignalBlocker viewBlocker(d->container->itemView()); QSignalBlocker containerBlocker(d->container); - - // Deselect item and wait 60 ms. selectionModel->select(selection, QItemSelectionModel::Toggle); - QTimer::singleShot(60, d->container, [d, selection, selectionModel]{ - QSignalBlocker modelBlocker(d->model); - QSignalBlocker viewBlocker(d->container->itemView()); - QSignalBlocker containerBlocker(d->container); - selectionModel->select(selection, QItemSelectionModel::Toggle); - QTimer::singleShot(20, d->container, [d] { - d->doHidePopup(); - }); + QTimer::singleShot(20, d->container, [d] { + d->doHidePopup(); }); }); - } + }); } else #endif // QT_CONFIG(effects) { |