diff --git a/src/media/textrecording.cpp b/src/media/textrecording.cpp
index c4f04a39ae4271e86a8905bba5d998cf1465da25..da7317bdc5db72975d5e834983dadb00fdbaa8df 100644
--- a/src/media/textrecording.cpp
+++ b/src/media/textrecording.cpp
@@ -697,6 +697,8 @@ bool InstantMessagingModel::setData(const QModelIndex& idx, const QVariant &valu
     if (idx.column() || !idx.isValid())
         return false;
 
+    bool changed = false;
+
     ::TextMessageNode* n = m_pRecording->d_ptr->m_lNodes[idx.row()];
     switch (role) {
         case (int)Media::TextRecording::Role::IsRead               :
@@ -707,6 +709,7 @@ bool InstantMessagingModel::setData(const QModelIndex& idx, const QVariant &valu
                     emit n->m_pContactMethod->changed();
                 }
                 emit dataChanged(idx,idx);
+                changed = true;
             }
             break;
         default:
@@ -714,7 +717,8 @@ bool InstantMessagingModel::setData(const QModelIndex& idx, const QVariant &valu
     }
 
     //Save the conversation
-    m_pRecording->save();
+    if (changed)
+        m_pRecording->save();
     return true;
 }