diff options
Diffstat (limited to 'src/mm-sms.c')
-rw-r--r-- | src/mm-sms.c | 22 |
1 files changed, 19 insertions, 3 deletions
diff --git a/src/mm-sms.c b/src/mm-sms.c index 54fa4dbd..88a9ad3d 100644 --- a/src/mm-sms.c +++ b/src/mm-sms.c @@ -562,9 +562,20 @@ mm_sms_multipart_take_part (MMSms *self, mm_warn ("Couldn't assemble SMS: '%s'", inner_error->message); g_error_free (inner_error); - } else - /* Only export once properly assembled */ - mm_sms_export (self); + } else { + /* Completed AND assembled */ + MMSmsState state = MM_SMS_STATE_UNKNOWN; + + /* Change state RECEIVING->RECEIVED, and signal completeness */ + g_object_get (self, + "state", &state, + NULL); + if (state == MM_SMS_STATE_RECEIVING) { + g_object_set (self, + "state", MM_SMS_STATE_RECEIVED, + NULL); + } + } } return TRUE; @@ -613,6 +624,11 @@ mm_sms_multipart_new (MMBaseModem *modem, { MMSms *self; + /* If this is the first part of a RECEIVED SMS, we overwrite the state + * as RECEIVING, to indicate that it is not completed yet. */ + if (state == MM_SMS_STATE_RECEIVED) + state = MM_SMS_STATE_RECEIVING; + self = mm_sms_new (modem); g_object_set (self, MM_SMS_IS_MULTIPART, TRUE, |