@@ -55,31 +55,34 @@ void FlatMenuProxyModel::setSourceModel(QAbstractItemModel *source)
5555 if (source) {
5656
5757 // FIXME - not working correctly with dynamic inserts/removes
58+ // FIXME 2 - We're using Queud connections as a workaround to QTBUG-32859
59+ // The signals from qmenumodel are coming straight off the glib event loop,
60+ // which is not supported and has the effect of listview delegates not to be deleted.
5861
5962 connect(source,
6063 SIGNAL(rowsAboutToBeInserted(QModelIndex,int,int)),
61− SLOT(onModelAboutToBeReset()));
64+ SLOT(onModelAboutToBeReset()), Qt::QueuedConnection);
6265 connect(source,
6366 SIGNAL(rowsInserted(QModelIndex,int,int)),
64− SLOT(onModelReset()));
67+ SLOT(onModelReset()), Qt::QueuedConnection);
6568
6669 connect(source,
6770 SIGNAL(rowsAboutToBeRemoved(QModelIndex,int,int)),
68− SLOT(onModelAboutToBeReset()));
71+ SLOT(onModelAboutToBeReset()), Qt::QueuedConnection);
6972 connect(source,
7073 SIGNAL(rowsRemoved(QModelIndex,int,int)),
71− SLOT(onModelReset()));
74+ SLOT(onModelReset()), Qt::QueuedConnection);
7275
7376 connect(source,
7477 SIGNAL(modelAboutToBeReset()),
75− SLOT(onModelAboutToBeReset()));
78+ SLOT(onModelAboutToBeReset()), Qt::QueuedConnection);
7679 connect(source,
7780 SIGNAL(modelReset()),
78− SLOT(onModelReset()));
81+ SLOT(onModelReset()), Qt::QueuedConnection);
7982
8083 connect(source,
8184 SIGNAL(statusChanged(DBusEnums::ConnectionStatus)),
82− SIGNAL(statusChanged()));
85+ SIGNAL(statusChanged()), Qt::QueuedConnection);
8386
8487 // initiliaze rowCount
8588 QModelIndex lastItem = source->index(source->rowCount() - 1, 0);