aboutsummaryrefslogtreecommitdiff
path: root/libqmenumodel
diff options
context:
space:
mode:
authorRenato Araujo Oliveira Filho <renato.filho@canonical.com>2012-10-16 07:56:41 +0000
committerTarmac <>2012-10-16 07:56:41 +0000
commit340e67d86483b2038d087b6ff2615e0d5c7cc5cc (patch)
tree5043b5daf97aa9e2bb2e87e7d5809b3a762e556e /libqmenumodel
parent5999e7a42962140b6479995d77a178186b6b2fcc (diff)
parent5c56d1288ba905ab162246c65fffbc69a831a14e (diff)
downloadqmenumodel-340e67d86483b2038d087b6ff2615e0d5c7cc5cc.tar.gz
qmenumodel-340e67d86483b2038d087b6ff2615e0d5c7cc5cc.tar.bz2
qmenumodel-340e67d86483b2038d087b6ff2615e0d5c7cc5cc.zip
Avoid emit model reset during QMenuModel destructor, to avoid crash in QML engine.. Approved by Olivier Tilloy, PS Jenkins bot, jenkins.
Diffstat (limited to 'libqmenumodel')
-rw-r--r--libqmenumodel/src/qmenumodel.cpp19
-rw-r--r--libqmenumodel/src/qmenumodel.h1
2 files changed, 14 insertions, 6 deletions
diff --git a/libqmenumodel/src/qmenumodel.cpp b/libqmenumodel/src/qmenumodel.cpp
index 1aaf210..a45e5ff 100644
--- a/libqmenumodel/src/qmenumodel.cpp
+++ b/libqmenumodel/src/qmenumodel.cpp
@@ -56,7 +56,7 @@ QMenuModel::QMenuModel(GMenuModel *other, QObject *parent)
/*! \internal */
QMenuModel::~QMenuModel()
{
- setMenuModel(NULL);
+ clearModel();
}
/*! \internal */
@@ -68,11 +68,7 @@ void QMenuModel::setMenuModel(GMenuModel *other)
beginResetModel();
- if (m_menuModel) {
- g_signal_handler_disconnect(m_menuModel, m_signalChangedId);
- m_signalChangedId = 0;
- g_object_unref(m_menuModel);
- }
+ clearModel();
m_menuModel = other;
@@ -95,6 +91,17 @@ GMenuModel *QMenuModel::menuModel() const
}
/*! \internal */
+void QMenuModel::clearModel()
+{
+ if (m_menuModel) {
+ g_signal_handler_disconnect(m_menuModel, m_signalChangedId);
+ m_signalChangedId = 0;
+ g_object_unref(m_menuModel);
+ m_menuModel = NULL;
+ }
+}
+
+/*! \internal */
QVariant QMenuModel::data(const QModelIndex &index, int role) const
{
QVariant attribute;
diff --git a/libqmenumodel/src/qmenumodel.h b/libqmenumodel/src/qmenumodel.h
index b5c76c0..22c30df 100644
--- a/libqmenumodel/src/qmenumodel.h
+++ b/libqmenumodel/src/qmenumodel.h
@@ -60,6 +60,7 @@ private:
QVariant getLink(const QModelIndex &index, const QString &linkName) const;
QVariant getExtraProperties(const QModelIndex &index) const;
QString parseExtraPropertyName(const QString &name) const;
+ void clearModel();
static void onItemsChanged(GMenuModel *model, gint position, gint removed, gint added, gpointer data);
};