[evolution-data-server] Use G_PARAM_EXPLICIT_NOTIFY flag to avoid false property change notifications



commit d43f9c2be80311edf1222ad9c465d0178caab9a9
Author: Milan Crha <mcrha redhat com>
Date:   Fri Oct 12 11:01:19 2018 +0200

    Use G_PARAM_EXPLICIT_NOTIFY flag to avoid false property change notifications
    
    Also introduce and use e_util_strcmp0(), which can avoid the most common mistake
    of comparing a NULL with an empty string, which are equal after e_util_strdup_strip(),
    but which caused a false property change notification.

 .../e-source-backend-summary-setup.c               |  4 +-
 src/addressbook/libedata-book/e-book-backend.c     |  2 +
 .../libedata-book/e-book-meta-backend.c            |  1 +
 src/calendar/libecal/e-cal-client.c                |  1 +
 src/calendar/libecal/e-reminder-watcher.c          |  2 +
 src/calendar/libedata-cal/e-cal-backend.c          |  2 +
 src/calendar/libedata-cal/e-cal-meta-backend.c     |  1 +
 src/camel/camel-data-cache.c                       |  6 ++-
 src/camel/camel-folder.c                           |  9 ++--
 src/camel/camel-gpg-context.c                      |  6 ++-
 src/camel/camel-local-settings.c                   |  3 ++
 src/camel/camel-medium.c                           |  3 +-
 src/camel/camel-message-info.c                     | 54 ++++++++++++++--------
 src/camel/camel-mime-part.c                        | 12 +++--
 src/camel/camel-object.c                           |  3 +-
 src/camel/camel-offline-folder.c                   |  1 +
 src/camel/camel-offline-settings.c                 |  5 ++
 src/camel/camel-sasl.c                             |  3 +-
 src/camel/camel-service.c                          |  4 ++
 src/camel/camel-session.c                          |  5 ++
 src/camel/camel-store-settings.c                   |  1 +
 src/camel/camel-stream.c                           |  1 +
 src/camel/camel-vee-folder.c                       |  1 +
 src/camel/camel-vee-store.c                        |  3 +-
 src/camel/providers/imapx/camel-imapx-folder.c     |  3 ++
 .../providers/imapx/camel-imapx-message-info.c     |  9 ++--
 src/camel/providers/imapx/camel-imapx-search.c     |  1 +
 src/camel/providers/imapx/camel-imapx-settings.c   | 21 +++++++++
 src/camel/providers/local/camel-local-folder.c     |  1 +
 src/camel/providers/local/camel-local-store.c      |  1 +
 .../providers/local/camel-maildir-message-info.c   |  3 +-
 .../providers/local/camel-mbox-message-info.c      |  3 +-
 src/camel/providers/local/camel-mh-settings.c      |  1 +
 src/camel/providers/local/camel-spool-settings.c   |  1 +
 src/camel/providers/nntp/camel-nntp-folder.c       |  1 +
 src/camel/providers/nntp/camel-nntp-settings.c     |  6 +++
 src/camel/providers/pop3/camel-pop3-settings.c     |  6 +++
 .../providers/sendmail/camel-sendmail-settings.c   |  5 ++
 src/libebackend/e-backend.c                        |  2 +
 src/libebackend/e-server-side-source.c             |  6 +++
 src/libedataserver/e-client.c                      |  2 +
 src/libedataserver/e-data-server-util.c            | 26 +++++++++++
 src/libedataserver/e-data-server-util.h            |  2 +
 src/libedataserver/e-network-monitor.c             |  1 +
 src/libedataserver/e-soup-session.c                |  1 +
 src/libedataserver/e-source-alarms.c               |  2 +
 src/libedataserver/e-source-authentication.c       | 15 ++++--
 src/libedataserver/e-source-autocomplete.c         |  1 +
 src/libedataserver/e-source-autoconfig.c           |  3 +-
 src/libedataserver/e-source-backend.c              |  3 +-
 src/libedataserver/e-source-collection.c           | 12 +++--
 src/libedataserver/e-source-contacts.c             |  1 +
 src/libedataserver/e-source-goa.c                  | 15 ++++--
 src/libedataserver/e-source-ldap.c                 | 13 ++++--
 src/libedataserver/e-source-local.c                |  1 +
 src/libedataserver/e-source-mail-account.c         |  3 ++
 src/libedataserver/e-source-mail-composition.c     | 15 ++++--
 src/libedataserver/e-source-mail-identity.c        | 17 ++++---
 src/libedataserver/e-source-mail-signature.c       |  3 +-
 src/libedataserver/e-source-mail-submission.c      |  6 ++-
 src/libedataserver/e-source-mdn.c                  |  1 +
 src/libedataserver/e-source-offline.c              |  1 +
 src/libedataserver/e-source-openpgp.c              | 11 ++++-
 src/libedataserver/e-source-proxy.c                | 28 ++++++++---
 src/libedataserver/e-source-refresh.c              |  2 +
 src/libedataserver/e-source-registry.c             |  6 +++
 src/libedataserver/e-source-resource.c             |  3 +-
 src/libedataserver/e-source-revision-guards.c      |  1 +
 src/libedataserver/e-source-security.c             |  5 +-
 src/libedataserver/e-source-selectable.c           |  4 +-
 src/libedataserver/e-source-smime.c                |  8 +++-
 src/libedataserver/e-source-uoa.c                  |  1 +
 src/libedataserver/e-source-weather.c              |  4 +-
 src/libedataserver/e-source-webdav.c               | 23 ++++++---
 src/libedataserver/e-source.c                      |  5 +-
 src/libedataserverui/e-credentials-prompter.c      |  1 +
 76 files changed, 359 insertions(+), 90 deletions(-)
---
diff --git a/src/addressbook/libebook-contacts/e-source-backend-summary-setup.c 
b/src/addressbook/libebook-contacts/e-source-backend-summary-setup.c
index 87da6ed50..6574c0a3c 100644
--- a/src/addressbook/libebook-contacts/e-source-backend-summary-setup.c
+++ b/src/addressbook/libebook-contacts/e-source-backend-summary-setup.c
@@ -118,7 +118,7 @@ source_backend_summary_setup_set_literal_fields (ESourceBackendSummarySetup *ext
 
        g_mutex_lock (&extension->priv->property_lock);
 
-       if (g_strcmp0 (*target, literal_fields) == 0) {
+       if (e_util_strcmp0 (*target, literal_fields) == 0) {
                g_mutex_unlock (&extension->priv->property_lock);
                return;
        }
@@ -212,6 +212,7 @@ e_source_backend_summary_setup_class_init (ESourceBackendSummarySetupClass *clas
                        NULL,
                        G_PARAM_READWRITE |
                        G_PARAM_CONSTRUCT |
+                       G_PARAM_EXPLICIT_NOTIFY |
                        G_PARAM_STATIC_STRINGS |
                        E_SOURCE_PARAM_SETTING));
 
@@ -226,6 +227,7 @@ e_source_backend_summary_setup_class_init (ESourceBackendSummarySetupClass *clas
                        NULL,
                        G_PARAM_READWRITE |
                        G_PARAM_CONSTRUCT |
+                       G_PARAM_EXPLICIT_NOTIFY |
                        G_PARAM_STATIC_STRINGS |
                        E_SOURCE_PARAM_SETTING));
 }
diff --git a/src/addressbook/libedata-book/e-book-backend.c b/src/addressbook/libedata-book/e-book-backend.c
index 210e07faf..7c10bd8c4 100644
--- a/src/addressbook/libedata-book/e-book-backend.c
+++ b/src/addressbook/libedata-book/e-book-backend.c
@@ -765,6 +765,7 @@ e_book_backend_class_init (EBookBackendClass *class)
                        "The backend's cache directory",
                        NULL,
                        G_PARAM_READWRITE |
+                       G_PARAM_EXPLICIT_NOTIFY |
                        G_PARAM_STATIC_STRINGS));
 
        g_object_class_install_property (
@@ -799,6 +800,7 @@ e_book_backend_class_init (EBookBackendClass *class)
                        "Whether the backend will accept changes",
                        FALSE,
                        G_PARAM_READWRITE |
+                       G_PARAM_EXPLICIT_NOTIFY |
                        G_PARAM_STATIC_STRINGS));
 
        /**
diff --git a/src/addressbook/libedata-book/e-book-meta-backend.c 
b/src/addressbook/libedata-book/e-book-meta-backend.c
index f2fa89b8e..bcec6fe59 100644
--- a/src/addressbook/libedata-book/e-book-meta-backend.c
+++ b/src/addressbook/libedata-book/e-book-meta-backend.c
@@ -2492,6 +2492,7 @@ e_book_meta_backend_class_init (EBookMetaBackendClass *klass)
                        "Book Cache",
                        E_TYPE_BOOK_CACHE,
                        G_PARAM_READWRITE |
+                       G_PARAM_EXPLICIT_NOTIFY |
                        G_PARAM_STATIC_STRINGS));
 
        /* This signal is meant for testing purposes mainly */
diff --git a/src/calendar/libecal/e-cal-client.c b/src/calendar/libecal/e-cal-client.c
index 93031aae8..47aa8e2dc 100644
--- a/src/calendar/libecal/e-cal-client.c
+++ b/src/calendar/libecal/e-cal-client.c
@@ -1574,6 +1574,7 @@ e_cal_client_class_init (ECalClientClass *class)
                        "Timezone used to resolve DATE "
                        "and floating DATE-TIME values",
                        G_PARAM_READWRITE |
+                       G_PARAM_EXPLICIT_NOTIFY |
                        G_PARAM_STATIC_STRINGS));
 
        g_object_class_install_property (
diff --git a/src/calendar/libecal/e-reminder-watcher.c b/src/calendar/libecal/e-reminder-watcher.c
index 03d40af86..e1416d433 100644
--- a/src/calendar/libecal/e-reminder-watcher.c
+++ b/src/calendar/libecal/e-reminder-watcher.c
@@ -2085,6 +2085,7 @@ e_reminder_watcher_class_init (EReminderWatcherClass *klass)
                        "The default time zone",
                        E_TYPE_REMINDER_WATCHER_ZONE,
                        G_PARAM_READWRITE |
+                       G_PARAM_EXPLICIT_NOTIFY |
                        G_PARAM_STATIC_STRINGS));
 
        /**
@@ -2107,6 +2108,7 @@ e_reminder_watcher_class_init (EReminderWatcherClass *klass)
                        "Whether can schedule timers",
                        TRUE,
                        G_PARAM_READWRITE |
+                       G_PARAM_EXPLICIT_NOTIFY |
                        G_PARAM_STATIC_STRINGS));
 
        /**
diff --git a/src/calendar/libedata-cal/e-cal-backend.c b/src/calendar/libedata-cal/e-cal-backend.c
index 8481e47a1..3f4d40e96 100644
--- a/src/calendar/libedata-cal/e-cal-backend.c
+++ b/src/calendar/libedata-cal/e-cal-backend.c
@@ -983,6 +983,7 @@ e_cal_backend_class_init (ECalBackendClass *class)
                        "The backend's cache directory",
                        NULL,
                        G_PARAM_READWRITE |
+                       G_PARAM_EXPLICIT_NOTIFY |
                        G_PARAM_STATIC_STRINGS));
 
        g_object_class_install_property (
@@ -1032,6 +1033,7 @@ e_cal_backend_class_init (ECalBackendClass *class)
                        "Whether the backend will accept changes",
                        FALSE,
                        G_PARAM_READWRITE |
+                       G_PARAM_EXPLICIT_NOTIFY |
                        G_PARAM_STATIC_STRINGS));
 
        /**
diff --git a/src/calendar/libedata-cal/e-cal-meta-backend.c b/src/calendar/libedata-cal/e-cal-meta-backend.c
index a2c82b643..2f15bc6fa 100644
--- a/src/calendar/libedata-cal/e-cal-meta-backend.c
+++ b/src/calendar/libedata-cal/e-cal-meta-backend.c
@@ -3369,6 +3369,7 @@ e_cal_meta_backend_class_init (ECalMetaBackendClass *klass)
                        "Calendar Cache",
                        E_TYPE_CAL_CACHE,
                        G_PARAM_READWRITE |
+                       G_PARAM_EXPLICIT_NOTIFY |
                        G_PARAM_STATIC_STRINGS));
 
        /* This signal is meant for testing purposes mainly */
diff --git a/src/camel/camel-data-cache.c b/src/camel/camel-data-cache.c
index 3be6943c7..1d00ff5a9 100644
--- a/src/camel/camel-data-cache.c
+++ b/src/camel/camel-data-cache.c
@@ -150,7 +150,8 @@ camel_data_cache_class_init (CamelDataCacheClass *class)
                        NULL,
                        NULL,
                        G_PARAM_READWRITE |
-                       G_PARAM_CONSTRUCT));
+                       G_PARAM_CONSTRUCT |
+                       G_PARAM_EXPLICIT_NOTIFY));
 
        g_object_class_install_property (
                object_class,
@@ -161,7 +162,8 @@ camel_data_cache_class_init (CamelDataCacheClass *class)
                        NULL,
                        TRUE,
                        G_PARAM_READWRITE |
-                       G_PARAM_CONSTRUCT));
+                       G_PARAM_CONSTRUCT |
+                       G_PARAM_EXPLICIT_NOTIFY));
 }
 
 static void
diff --git a/src/camel/camel-folder.c b/src/camel/camel-folder.c
index 1ecca75bb..9c21e5940 100644
--- a/src/camel/camel-folder.c
+++ b/src/camel/camel-folder.c
@@ -1221,7 +1221,8 @@ camel_folder_class_init (CamelFolderClass *class)
                        "The folder's description",
                        NULL,
                        G_PARAM_READWRITE |
-                       G_PARAM_CONSTRUCT));
+                       G_PARAM_CONSTRUCT |
+                       G_PARAM_EXPLICIT_NOTIFY));
 
        /**
         * CamelFolder:display-name
@@ -1237,7 +1238,8 @@ camel_folder_class_init (CamelFolderClass *class)
                        "The folder's display name",
                        NULL,
                        G_PARAM_READWRITE |
-                       G_PARAM_CONSTRUCT));
+                       G_PARAM_CONSTRUCT |
+                       G_PARAM_EXPLICIT_NOTIFY));
 
        /**
         * CamelFolder:full-name
@@ -1253,7 +1255,8 @@ camel_folder_class_init (CamelFolderClass *class)
                        "The folder's fully qualified name",
                        NULL,
                        G_PARAM_READWRITE |
-                       G_PARAM_CONSTRUCT));
+                       G_PARAM_CONSTRUCT |
+                       G_PARAM_EXPLICIT_NOTIFY));
 
        /**
         * CamelFolder:parent-store
diff --git a/src/camel/camel-gpg-context.c b/src/camel/camel-gpg-context.c
index 27214cdd3..4077df3d5 100644
--- a/src/camel/camel-gpg-context.c
+++ b/src/camel/camel-gpg-context.c
@@ -2866,7 +2866,8 @@ camel_gpg_context_class_init (CamelGpgContextClass *class)
                        NULL,
                        FALSE,
                        G_PARAM_READWRITE |
-                       G_PARAM_CONSTRUCT));
+                       G_PARAM_CONSTRUCT |
+                       G_PARAM_EXPLICIT_NOTIFY));
 
        g_object_class_install_property (
                object_class,
@@ -2877,7 +2878,8 @@ camel_gpg_context_class_init (CamelGpgContextClass *class)
                        NULL,
                        FALSE,
                        G_PARAM_READWRITE |
-                       G_PARAM_CONSTRUCT));
+                       G_PARAM_CONSTRUCT |
+                       G_PARAM_EXPLICIT_NOTIFY));
 }
 
 static void
diff --git a/src/camel/camel-local-settings.c b/src/camel/camel-local-settings.c
index 023cb5dc2..f10174d68 100644
--- a/src/camel/camel-local-settings.c
+++ b/src/camel/camel-local-settings.c
@@ -140,6 +140,7 @@ camel_local_settings_class_init (CamelLocalSettingsClass *class)
                        NULL,
                        G_PARAM_READWRITE |
                        G_PARAM_CONSTRUCT |
+                       G_PARAM_EXPLICIT_NOTIFY |
                        G_PARAM_STATIC_STRINGS));
 
        g_object_class_install_property (
@@ -152,6 +153,7 @@ camel_local_settings_class_init (CamelLocalSettingsClass *class)
                        FALSE,
                        G_PARAM_READWRITE |
                        G_PARAM_CONSTRUCT |
+                       G_PARAM_EXPLICIT_NOTIFY |
                        G_PARAM_STATIC_STRINGS));
 
        g_object_class_install_property (
@@ -164,6 +166,7 @@ camel_local_settings_class_init (CamelLocalSettingsClass *class)
                        TRUE,
                        G_PARAM_READWRITE |
                        G_PARAM_CONSTRUCT |
+                       G_PARAM_EXPLICIT_NOTIFY |
                        G_PARAM_STATIC_STRINGS));
 }
 
diff --git a/src/camel/camel-medium.c b/src/camel/camel-medium.c
index f35491adb..170db5bca 100644
--- a/src/camel/camel-medium.c
+++ b/src/camel/camel-medium.c
@@ -158,7 +158,8 @@ camel_medium_class_init (CamelMediumClass *class)
                        "Content",
                        NULL,
                        CAMEL_TYPE_DATA_WRAPPER,
-                       G_PARAM_READWRITE));
+                       G_PARAM_READWRITE |
+                       G_PARAM_EXPLICIT_NOTIFY));
 }
 
 static void
diff --git a/src/camel/camel-message-info.c b/src/camel/camel-message-info.c
index fc4bc8fce..85c469977 100644
--- a/src/camel/camel-message-info.c
+++ b/src/camel/camel-message-info.c
@@ -634,7 +634,8 @@ camel_message_info_class_init (CamelMessageInfoClass *class)
                        "UID",
                        NULL,
                        NULL,
-                       G_PARAM_READWRITE));
+                       G_PARAM_READWRITE |
+                       G_PARAM_EXPLICIT_NOTIFY));
 
        /**
         * CamelMessageInfo:dirty
@@ -652,7 +653,8 @@ camel_message_info_class_init (CamelMessageInfoClass *class)
                        "Dirty",
                        NULL,
                        FALSE,
-                       G_PARAM_READWRITE));
+                       G_PARAM_READWRITE |
+                       G_PARAM_EXPLICIT_NOTIFY));
 
        /**
         * CamelMessageInfo:folder-flagged
@@ -672,7 +674,8 @@ camel_message_info_class_init (CamelMessageInfoClass *class)
                        "Folder Flagged",
                        NULL,
                        FALSE,
-                       G_PARAM_READWRITE));
+                       G_PARAM_READWRITE |
+                       G_PARAM_EXPLICIT_NOTIFY));
 
        /**
         * CamelMessageInfo:folder-flagged-stamp
@@ -711,7 +714,8 @@ camel_message_info_class_init (CamelMessageInfoClass *class)
                        "Abort Notifications",
                        NULL,
                        FALSE,
-                       G_PARAM_READWRITE));
+                       G_PARAM_READWRITE |
+                       G_PARAM_EXPLICIT_NOTIFY));
 
        /**
         * CamelMessageInfo:flags
@@ -728,7 +732,8 @@ camel_message_info_class_init (CamelMessageInfoClass *class)
                        "Flags",
                        NULL,
                        0, G_MAXUINT32, 0,
-                       G_PARAM_READWRITE));
+                       G_PARAM_READWRITE |
+                       G_PARAM_EXPLICIT_NOTIFY));
 
        /**
         * CamelMessageInfo:user-flags
@@ -747,7 +752,8 @@ camel_message_info_class_init (CamelMessageInfoClass *class)
                        "User Flags",
                        NULL,
                        CAMEL_TYPE_NAMED_FLAGS,
-                       G_PARAM_READWRITE));
+                       G_PARAM_READWRITE |
+                       G_PARAM_EXPLICIT_NOTIFY));
 
        /**
         * CamelMessageInfo:user-tags
@@ -766,7 +772,8 @@ camel_message_info_class_init (CamelMessageInfoClass *class)
                        "User tags",
                        NULL,
                        CAMEL_TYPE_NAME_VALUE_ARRAY,
-                       G_PARAM_READWRITE));
+                       G_PARAM_READWRITE |
+                       G_PARAM_EXPLICIT_NOTIFY));
 
        /**
         * CamelMessageInfo:subject
@@ -783,7 +790,8 @@ camel_message_info_class_init (CamelMessageInfoClass *class)
                        "Subject",
                        NULL,
                        NULL,
-                       G_PARAM_READWRITE));
+                       G_PARAM_READWRITE |
+                       G_PARAM_EXPLICIT_NOTIFY));
 
        /**
         * CamelMessageInfo:from
@@ -800,7 +808,8 @@ camel_message_info_class_init (CamelMessageInfoClass *class)
                        "From",
                        NULL,
                        NULL,
-                       G_PARAM_READWRITE));
+                       G_PARAM_READWRITE |
+                       G_PARAM_EXPLICIT_NOTIFY));
 
        /**
         * CamelMessageInfo:to
@@ -817,7 +826,8 @@ camel_message_info_class_init (CamelMessageInfoClass *class)
                        "To",
                        NULL,
                        NULL,
-                       G_PARAM_READWRITE));
+                       G_PARAM_READWRITE |
+                       G_PARAM_EXPLICIT_NOTIFY));
 
        /**
         * CamelMessageInfo:cc
@@ -834,7 +844,8 @@ camel_message_info_class_init (CamelMessageInfoClass *class)
                        "CC",
                        NULL,
                        NULL,
-                       G_PARAM_READWRITE));
+                       G_PARAM_READWRITE |
+                       G_PARAM_EXPLICIT_NOTIFY));
 
        /**
         * CamelMessageInfo:mlist
@@ -851,7 +862,8 @@ camel_message_info_class_init (CamelMessageInfoClass *class)
                        "mlist",
                        NULL,
                        NULL,
-                       G_PARAM_READWRITE));
+                       G_PARAM_READWRITE |
+                       G_PARAM_EXPLICIT_NOTIFY));
 
        /**
         * CamelMessageInfo:size
@@ -868,7 +880,8 @@ camel_message_info_class_init (CamelMessageInfoClass *class)
                        "Size",
                        NULL,
                        0, G_MAXUINT32, 0,
-                       G_PARAM_READWRITE));
+                       G_PARAM_READWRITE |
+                       G_PARAM_EXPLICIT_NOTIFY));
 
        /**
         * CamelMessageInfo:date-sent
@@ -885,7 +898,8 @@ camel_message_info_class_init (CamelMessageInfoClass *class)
                        "Date Sent",
                        NULL,
                        G_MININT64, G_MAXINT64, 0,
-                       G_PARAM_READWRITE));
+                       G_PARAM_READWRITE |
+                       G_PARAM_EXPLICIT_NOTIFY));
 
        /**
         * CamelMessageInfo:date-received
@@ -902,7 +916,8 @@ camel_message_info_class_init (CamelMessageInfoClass *class)
                        "Date Received",
                        NULL,
                        G_MININT64, G_MAXINT64, 0,
-                       G_PARAM_READWRITE));
+                       G_PARAM_READWRITE |
+                       G_PARAM_EXPLICIT_NOTIFY));
 
        /**
         * CamelMessageInfo:message-id
@@ -920,7 +935,8 @@ camel_message_info_class_init (CamelMessageInfoClass *class)
                        "Message ID",
                        NULL,
                        0, G_MAXUINT64, 0,
-                       G_PARAM_READWRITE));
+                       G_PARAM_READWRITE |
+                       G_PARAM_EXPLICIT_NOTIFY));
 
        /**
         * CamelMessageInfo:references
@@ -939,7 +955,8 @@ camel_message_info_class_init (CamelMessageInfoClass *class)
                        "References",
                        NULL,
                        G_TYPE_ARRAY,
-                       G_PARAM_READWRITE));
+                       G_PARAM_READWRITE |
+                       G_PARAM_EXPLICIT_NOTIFY));
 
        /**
         * CamelMessageInfo:headers
@@ -956,7 +973,8 @@ camel_message_info_class_init (CamelMessageInfoClass *class)
                        "Headers",
                        NULL,
                        CAMEL_TYPE_NAME_VALUE_ARRAY,
-                       G_PARAM_READWRITE));
+                       G_PARAM_READWRITE |
+                       G_PARAM_EXPLICIT_NOTIFY));
 }
 
 static void
diff --git a/src/camel/camel-mime-part.c b/src/camel/camel-mime-part.c
index d46c3fe71..16814b896 100644
--- a/src/camel/camel-mime-part.c
+++ b/src/camel/camel-mime-part.c
@@ -1046,7 +1046,8 @@ camel_mime_part_class_init (CamelMimePartClass *class)
                        "Content ID",
                        NULL,
                        NULL,
-                       G_PARAM_READWRITE));
+                       G_PARAM_READWRITE |
+                       G_PARAM_EXPLICIT_NOTIFY));
 
        g_object_class_install_property (
                object_class,
@@ -1056,7 +1057,8 @@ camel_mime_part_class_init (CamelMimePartClass *class)
                        "Content MD5",
                        NULL,
                        NULL,
-                       G_PARAM_READWRITE));
+                       G_PARAM_READWRITE |
+                       G_PARAM_EXPLICIT_NOTIFY));
 
        g_object_class_install_property (
                object_class,
@@ -1066,7 +1068,8 @@ camel_mime_part_class_init (CamelMimePartClass *class)
                        "Description",
                        NULL,
                        NULL,
-                       G_PARAM_READWRITE));
+                       G_PARAM_READWRITE |
+                       G_PARAM_EXPLICIT_NOTIFY));
 
        g_object_class_install_property (
                object_class,
@@ -1076,7 +1079,8 @@ camel_mime_part_class_init (CamelMimePartClass *class)
                        "Disposition",
                        NULL,
                        NULL,
-                       G_PARAM_READWRITE));
+                       G_PARAM_READWRITE |
+                       G_PARAM_EXPLICIT_NOTIFY));
 
        init_header_name_table ();
 }
diff --git a/src/camel/camel-object.c b/src/camel/camel-object.c
index 6f9003d61..807c9acc5 100644
--- a/src/camel/camel-object.c
+++ b/src/camel/camel-object.c
@@ -397,7 +397,8 @@ camel_object_class_init (CamelObjectClass *class)
                        "File containing persistent property values",
                        NULL,
                        G_PARAM_READWRITE |
-                       G_PARAM_CONSTRUCT));
+                       G_PARAM_CONSTRUCT |
+                       G_PARAM_EXPLICIT_NOTIFY));
 }
 
 static void
diff --git a/src/camel/camel-offline-folder.c b/src/camel/camel-offline-folder.c
index dd6587c20..5d0d809b2 100644
--- a/src/camel/camel-offline-folder.c
+++ b/src/camel/camel-offline-folder.c
@@ -593,6 +593,7 @@ camel_offline_folder_class_init (CamelOfflineFolderClass *class)
                        CAMEL_TYPE_THREE_STATE,
                        CAMEL_THREE_STATE_INCONSISTENT,
                        G_PARAM_READWRITE |
+                       G_PARAM_EXPLICIT_NOTIFY |
                        CAMEL_PARAM_PERSISTENT));
 }
 
diff --git a/src/camel/camel-offline-settings.c b/src/camel/camel-offline-settings.c
index 04dab3363..098629035 100644
--- a/src/camel/camel-offline-settings.c
+++ b/src/camel/camel-offline-settings.c
@@ -156,6 +156,7 @@ camel_offline_settings_class_init (CamelOfflineSettingsClass *class)
                        FALSE,
                        G_PARAM_READWRITE |
                        G_PARAM_CONSTRUCT |
+                       G_PARAM_EXPLICIT_NOTIFY |
                        G_PARAM_STATIC_STRINGS));
 
        g_object_class_install_property (
@@ -170,6 +171,7 @@ camel_offline_settings_class_init (CamelOfflineSettingsClass *class)
                        3,
                        G_PARAM_READWRITE |
                        G_PARAM_CONSTRUCT |
+                       G_PARAM_EXPLICIT_NOTIFY |
                        G_PARAM_STATIC_STRINGS));
 
        g_object_class_install_property (
@@ -182,6 +184,7 @@ camel_offline_settings_class_init (CamelOfflineSettingsClass *class)
                        FALSE,
                        G_PARAM_READWRITE |
                        G_PARAM_CONSTRUCT |
+                       G_PARAM_EXPLICIT_NOTIFY |
                        G_PARAM_STATIC_STRINGS));
 
        g_object_class_install_property (
@@ -195,6 +198,7 @@ camel_offline_settings_class_init (CamelOfflineSettingsClass *class)
                        CAMEL_TIME_UNIT_YEARS,
                        G_PARAM_READWRITE |
                        G_PARAM_CONSTRUCT |
+                       G_PARAM_EXPLICIT_NOTIFY |
                        G_PARAM_STATIC_STRINGS));
 
        g_object_class_install_property (
@@ -209,6 +213,7 @@ camel_offline_settings_class_init (CamelOfflineSettingsClass *class)
                        1,
                        G_PARAM_READWRITE |
                        G_PARAM_CONSTRUCT |
+                       G_PARAM_EXPLICIT_NOTIFY |
                        G_PARAM_STATIC_STRINGS));
 }
 
diff --git a/src/camel/camel-sasl.c b/src/camel/camel-sasl.c
index 12b4be146..3a39c54a1 100644
--- a/src/camel/camel-sasl.c
+++ b/src/camel/camel-sasl.c
@@ -299,7 +299,8 @@ camel_sasl_class_init (CamelSaslClass *class)
                        "Authenticated",
                        NULL,
                        FALSE,
-                       G_PARAM_READWRITE));
+                       G_PARAM_READWRITE |
+                       G_PARAM_EXPLICIT_NOTIFY));
 
        g_object_class_install_property (
                object_class,
diff --git a/src/camel/camel-service.c b/src/camel/camel-service.c
index aff79a580..f44870277 100644
--- a/src/camel/camel-service.c
+++ b/src/camel/camel-service.c
@@ -976,6 +976,7 @@ camel_service_class_init (CamelServiceClass *class)
                        NULL,
                        G_PARAM_READWRITE |
                        G_PARAM_CONSTRUCT |
+                       G_PARAM_EXPLICIT_NOTIFY |
                        G_PARAM_STATIC_STRINGS));
 
        g_object_class_install_property (
@@ -988,6 +989,7 @@ camel_service_class_init (CamelServiceClass *class)
                        NULL,
                        G_PARAM_READWRITE |
                        G_PARAM_CONSTRUCT |
+                       G_PARAM_EXPLICIT_NOTIFY |
                        G_PARAM_STATIC_STRINGS));
 
        g_object_class_install_property (
@@ -1011,6 +1013,7 @@ camel_service_class_init (CamelServiceClass *class)
                        "The proxy resolver for the service",
                        G_TYPE_PROXY_RESOLVER,
                        G_PARAM_READWRITE |
+                       G_PARAM_EXPLICIT_NOTIFY |
                        G_PARAM_STATIC_STRINGS));
 
        g_object_class_install_property (
@@ -1035,6 +1038,7 @@ camel_service_class_init (CamelServiceClass *class)
                        CAMEL_TYPE_SETTINGS,
                        G_PARAM_READWRITE |
                        G_PARAM_CONSTRUCT |
+                       G_PARAM_EXPLICIT_NOTIFY |
                        G_PARAM_STATIC_STRINGS));
 
        g_object_class_install_property (
diff --git a/src/camel/camel-session.c b/src/camel/camel-session.c
index 8e090b195..1f8aad482 100644
--- a/src/camel/camel-session.c
+++ b/src/camel/camel-session.c
@@ -626,6 +626,7 @@ camel_session_class_init (CamelSessionClass *class)
                        "Classifies messages as junk or not junk",
                        CAMEL_TYPE_JUNK_FILTER,
                        G_PARAM_READWRITE |
+                       G_PARAM_EXPLICIT_NOTIFY |
                        G_PARAM_STATIC_STRINGS));
 
        g_object_class_install_property (
@@ -649,6 +650,7 @@ camel_session_class_init (CamelSessionClass *class)
                        NULL,
                        G_TYPE_NETWORK_MONITOR,
                        G_PARAM_READWRITE |
+                       G_PARAM_EXPLICIT_NOTIFY |
                        G_PARAM_STATIC_STRINGS));
 
        g_object_class_install_property (
@@ -661,6 +663,7 @@ camel_session_class_init (CamelSessionClass *class)
                        TRUE,
                        G_PARAM_READWRITE |
                        G_PARAM_CONSTRUCT |
+                       G_PARAM_EXPLICIT_NOTIFY |
                        G_PARAM_STATIC_STRINGS));
 
        g_object_class_install_property (
@@ -673,6 +676,7 @@ camel_session_class_init (CamelSessionClass *class)
                        NULL,
                        G_PARAM_READWRITE |
                        G_PARAM_CONSTRUCT |
+                       G_PARAM_EXPLICIT_NOTIFY |
                        G_PARAM_STATIC_STRINGS));
 
        g_object_class_install_property (
@@ -685,6 +689,7 @@ camel_session_class_init (CamelSessionClass *class)
                        NULL,
                        G_PARAM_READWRITE |
                        G_PARAM_CONSTRUCT |
+                       G_PARAM_EXPLICIT_NOTIFY |
                        G_PARAM_STATIC_STRINGS));
 
        signals[JOB_STARTED] = g_signal_new (
diff --git a/src/camel/camel-store-settings.c b/src/camel/camel-store-settings.c
index 884b8287c..fde537b70 100644
--- a/src/camel/camel-store-settings.c
+++ b/src/camel/camel-store-settings.c
@@ -91,6 +91,7 @@ camel_store_settings_class_init (CamelStoreSettingsClass *class)
                        TRUE,
                        G_PARAM_READWRITE |
                        G_PARAM_CONSTRUCT |
+                       G_PARAM_EXPLICIT_NOTIFY |
                        G_PARAM_STATIC_STRINGS));
 }
 
diff --git a/src/camel/camel-stream.c b/src/camel/camel-stream.c
index a6c6d0c44..73af12770 100644
--- a/src/camel/camel-stream.c
+++ b/src/camel/camel-stream.c
@@ -377,6 +377,7 @@ camel_stream_class_init (CamelStreamClass *class)
                        "The base GIOStream",
                        G_TYPE_IO_STREAM,
                        G_PARAM_READWRITE |
+                       G_PARAM_EXPLICIT_NOTIFY |
                        G_PARAM_STATIC_STRINGS));
 }
 
diff --git a/src/camel/camel-vee-folder.c b/src/camel/camel-vee-folder.c
index 75ff5b9e6..aae394c7c 100644
--- a/src/camel/camel-vee-folder.c
+++ b/src/camel/camel-vee-folder.c
@@ -1328,6 +1328,7 @@ camel_vee_folder_class_init (CamelVeeFolderClass *class)
                        _("Automatically _update on change in source folders"),
                        TRUE,
                        G_PARAM_READWRITE |
+                       G_PARAM_EXPLICIT_NOTIFY |
                        CAMEL_PARAM_PERSISTENT));
 }
 
diff --git a/src/camel/camel-vee-store.c b/src/camel/camel-vee-store.c
index 1d786db13..3ca024e94 100644
--- a/src/camel/camel-vee-store.c
+++ b/src/camel/camel-vee-store.c
@@ -553,7 +553,8 @@ camel_vee_store_class_init (CamelVeeStoreClass *class)
                        "Unmatched Enabled",
                        _("Enable _Unmatched folder"),
                        TRUE,
-                       G_PARAM_READWRITE));
+                       G_PARAM_READWRITE |
+                       G_PARAM_EXPLICIT_NOTIFY));
 }
 
 static void
diff --git a/src/camel/providers/imapx/camel-imapx-folder.c b/src/camel/providers/imapx/camel-imapx-folder.c
index 2b6470d0b..6e4f9235c 100644
--- a/src/camel/providers/imapx/camel-imapx-folder.c
+++ b/src/camel/providers/imapx/camel-imapx-folder.c
@@ -1119,6 +1119,7 @@ camel_imapx_folder_class_init (CamelIMAPXFolderClass *class)
                        _("Apply message _filters to this folder"),
                        FALSE,
                        G_PARAM_READWRITE |
+                       G_PARAM_EXPLICIT_NOTIFY |
                        CAMEL_PARAM_PERSISTENT));
 
        g_object_class_install_property (
@@ -1130,6 +1131,7 @@ camel_imapx_folder_class_init (CamelIMAPXFolderClass *class)
                        _("Always check for _new mail in this folder"),
                        FALSE,
                        G_PARAM_READWRITE |
+                       G_PARAM_EXPLICIT_NOTIFY |
                        CAMEL_PARAM_PERSISTENT));
 
        g_object_class_install_property (
@@ -1141,6 +1143,7 @@ camel_imapx_folder_class_init (CamelIMAPXFolderClass *class)
                        "IMAP mailbox for this folder",
                        CAMEL_TYPE_IMAPX_MAILBOX,
                        G_PARAM_READWRITE |
+                       G_PARAM_EXPLICIT_NOTIFY |
                        G_PARAM_STATIC_STRINGS));
 }
 
diff --git a/src/camel/providers/imapx/camel-imapx-message-info.c 
b/src/camel/providers/imapx/camel-imapx-message-info.c
index 4de796514..26b9cd71e 100644
--- a/src/camel/providers/imapx/camel-imapx-message-info.c
+++ b/src/camel/providers/imapx/camel-imapx-message-info.c
@@ -289,7 +289,8 @@ camel_imapx_message_info_class_init (CamelIMAPXMessageInfoClass *class)
                        "Server Flags",
                        NULL,
                        0, G_MAXUINT32, 0,
-                       G_PARAM_READWRITE));
+                       G_PARAM_READWRITE |
+                       G_PARAM_EXPLICIT_NOTIFY));
 
        /**
         * CamelIMAPXMessageInfo:server-user-flags
@@ -307,7 +308,8 @@ camel_imapx_message_info_class_init (CamelIMAPXMessageInfoClass *class)
                        "Server User Flags",
                        NULL,
                        CAMEL_TYPE_NAMED_FLAGS,
-                       G_PARAM_READWRITE));
+                       G_PARAM_READWRITE |
+                       G_PARAM_EXPLICIT_NOTIFY));
 
        /**
         * CamelIMAPXMessageInfo:server-user-tags
@@ -325,7 +327,8 @@ camel_imapx_message_info_class_init (CamelIMAPXMessageInfoClass *class)
                        "Server User tags",
                        NULL,
                        CAMEL_TYPE_NAME_VALUE_ARRAY,
-                       G_PARAM_READWRITE));
+                       G_PARAM_READWRITE |
+                       G_PARAM_EXPLICIT_NOTIFY));
 }
 
 static void
diff --git a/src/camel/providers/imapx/camel-imapx-search.c b/src/camel/providers/imapx/camel-imapx-search.c
index 3f2100d5d..b7b01c081 100644
--- a/src/camel/providers/imapx/camel-imapx-search.c
+++ b/src/camel/providers/imapx/camel-imapx-search.c
@@ -662,6 +662,7 @@ camel_imapx_search_class_init (CamelIMAPXSearchClass *class)
                        "IMAPX Store for server-side searches",
                        CAMEL_TYPE_IMAPX_STORE,
                        G_PARAM_READWRITE |
+                       G_PARAM_EXPLICIT_NOTIFY |
                        G_PARAM_STATIC_STRINGS));
 }
 
diff --git a/src/camel/providers/imapx/camel-imapx-settings.c 
b/src/camel/providers/imapx/camel-imapx-settings.c
index 1dca933ae..1bde18cda 100644
--- a/src/camel/providers/imapx/camel-imapx-settings.c
+++ b/src/camel/providers/imapx/camel-imapx-settings.c
@@ -497,6 +497,7 @@ camel_imapx_settings_class_init (CamelIMAPXSettingsClass *class)
                        FALSE,
                        G_PARAM_READWRITE |
                        G_PARAM_CONSTRUCT |
+                       G_PARAM_EXPLICIT_NOTIFY |
                        G_PARAM_STATIC_STRINGS));
 
        g_object_class_install_property (
@@ -509,6 +510,7 @@ camel_imapx_settings_class_init (CamelIMAPXSettingsClass *class)
                        FALSE,
                        G_PARAM_READWRITE |
                        G_PARAM_CONSTRUCT |
+                       G_PARAM_EXPLICIT_NOTIFY |
                        G_PARAM_STATIC_STRINGS));
 
        g_object_class_install_property (
@@ -521,6 +523,7 @@ camel_imapx_settings_class_init (CamelIMAPXSettingsClass *class)
                        FALSE,
                        G_PARAM_READWRITE |
                        G_PARAM_CONSTRUCT |
+                       G_PARAM_EXPLICIT_NOTIFY |
                        G_PARAM_STATIC_STRINGS));
 
        g_object_class_install_property (
@@ -535,6 +538,7 @@ camel_imapx_settings_class_init (CamelIMAPXSettingsClass *class)
                        3,
                        G_PARAM_READWRITE |
                        G_PARAM_CONSTRUCT |
+                       G_PARAM_EXPLICIT_NOTIFY |
                        G_PARAM_STATIC_STRINGS));
 
        g_object_class_install_property (
@@ -548,6 +552,7 @@ camel_imapx_settings_class_init (CamelIMAPXSettingsClass *class)
                        CAMEL_SORT_ASCENDING,
                        G_PARAM_READWRITE |
                        G_PARAM_CONSTRUCT |
+                       G_PARAM_EXPLICIT_NOTIFY |
                        G_PARAM_STATIC_STRINGS));
 
        g_object_class_install_property (
@@ -560,6 +565,7 @@ camel_imapx_settings_class_init (CamelIMAPXSettingsClass *class)
                        FALSE,
                        G_PARAM_READWRITE |
                        G_PARAM_CONSTRUCT |
+                       G_PARAM_EXPLICIT_NOTIFY |
                        G_PARAM_STATIC_STRINGS));
 
        g_object_class_install_property (
@@ -572,6 +578,7 @@ camel_imapx_settings_class_init (CamelIMAPXSettingsClass *class)
                        FALSE,
                        G_PARAM_READWRITE |
                        G_PARAM_CONSTRUCT |
+                       G_PARAM_EXPLICIT_NOTIFY |
                        G_PARAM_STATIC_STRINGS));
 
        g_object_class_install_property (
@@ -584,6 +591,7 @@ camel_imapx_settings_class_init (CamelIMAPXSettingsClass *class)
                        FALSE,
                        G_PARAM_READWRITE |
                        G_PARAM_CONSTRUCT |
+                       G_PARAM_EXPLICIT_NOTIFY |
                        G_PARAM_STATIC_STRINGS));
 
        /* Inherited from CamelNetworkSettings. */
@@ -602,6 +610,7 @@ camel_imapx_settings_class_init (CamelIMAPXSettingsClass *class)
                        NULL,
                        G_PARAM_READWRITE |
                        G_PARAM_CONSTRUCT |
+                       G_PARAM_EXPLICIT_NOTIFY |
                        G_PARAM_STATIC_STRINGS));
 
        /* Inherited from CamelNetworkSettings. */
@@ -620,6 +629,7 @@ camel_imapx_settings_class_init (CamelIMAPXSettingsClass *class)
                        NULL,
                        G_PARAM_READWRITE |
                        G_PARAM_CONSTRUCT |
+                       G_PARAM_EXPLICIT_NOTIFY |
                        G_PARAM_STATIC_STRINGS));
 
        g_object_class_install_property (
@@ -632,6 +642,7 @@ camel_imapx_settings_class_init (CamelIMAPXSettingsClass *class)
                        NULL,
                        G_PARAM_READWRITE |
                        G_PARAM_CONSTRUCT |
+                       G_PARAM_EXPLICIT_NOTIFY |
                        G_PARAM_STATIC_STRINGS));
 
        /* Inherited from CamelNetworkSettings. */
@@ -650,6 +661,7 @@ camel_imapx_settings_class_init (CamelIMAPXSettingsClass *class)
                        "ssh -C -l %u %h exec /usr/sbin/imapd",
                        G_PARAM_READWRITE |
                        G_PARAM_CONSTRUCT |
+                       G_PARAM_EXPLICIT_NOTIFY |
                        G_PARAM_STATIC_STRINGS));
 
        /* Inherited from CamelNetworkSettings. */
@@ -668,6 +680,7 @@ camel_imapx_settings_class_init (CamelIMAPXSettingsClass *class)
                        FALSE,
                        G_PARAM_READWRITE |
                        G_PARAM_CONSTRUCT |
+                       G_PARAM_EXPLICIT_NOTIFY |
                        G_PARAM_STATIC_STRINGS));
 
        g_object_class_install_property (
@@ -680,6 +693,7 @@ camel_imapx_settings_class_init (CamelIMAPXSettingsClass *class)
                        FALSE,
                        G_PARAM_READWRITE |
                        G_PARAM_CONSTRUCT |
+                       G_PARAM_EXPLICIT_NOTIFY |
                        G_PARAM_STATIC_STRINGS));
 
        g_object_class_install_property (
@@ -692,6 +706,7 @@ camel_imapx_settings_class_init (CamelIMAPXSettingsClass *class)
                        FALSE,
                        G_PARAM_READWRITE |
                        G_PARAM_CONSTRUCT |
+                       G_PARAM_EXPLICIT_NOTIFY |
                        G_PARAM_STATIC_STRINGS));
 
        g_object_class_install_property (
@@ -704,6 +719,7 @@ camel_imapx_settings_class_init (CamelIMAPXSettingsClass *class)
                        FALSE,
                        G_PARAM_READWRITE |
                        G_PARAM_CONSTRUCT |
+                       G_PARAM_EXPLICIT_NOTIFY |
                        G_PARAM_STATIC_STRINGS));
 
        g_object_class_install_property (
@@ -716,6 +732,7 @@ camel_imapx_settings_class_init (CamelIMAPXSettingsClass *class)
                        FALSE,
                        G_PARAM_READWRITE |
                        G_PARAM_CONSTRUCT |
+                       G_PARAM_EXPLICIT_NOTIFY |
                        G_PARAM_STATIC_STRINGS));
 
        g_object_class_install_property (
@@ -729,6 +746,7 @@ camel_imapx_settings_class_init (CamelIMAPXSettingsClass *class)
                        FALSE,
                        G_PARAM_READWRITE |
                        G_PARAM_CONSTRUCT |
+                       G_PARAM_EXPLICIT_NOTIFY |
                        G_PARAM_STATIC_STRINGS));
 
        g_object_class_install_property (
@@ -741,6 +759,7 @@ camel_imapx_settings_class_init (CamelIMAPXSettingsClass *class)
                        FALSE,
                        G_PARAM_READWRITE |
                        G_PARAM_CONSTRUCT |
+                       G_PARAM_EXPLICIT_NOTIFY |
                        G_PARAM_STATIC_STRINGS));
 
        g_object_class_install_property (
@@ -753,6 +772,7 @@ camel_imapx_settings_class_init (CamelIMAPXSettingsClass *class)
                        FALSE,
                        G_PARAM_READWRITE |
                        G_PARAM_CONSTRUCT |
+                       G_PARAM_EXPLICIT_NOTIFY |
                        G_PARAM_STATIC_STRINGS));
 
        g_object_class_install_property (
@@ -765,6 +785,7 @@ camel_imapx_settings_class_init (CamelIMAPXSettingsClass *class)
                        FALSE,
                        G_PARAM_READWRITE |
                        G_PARAM_CONSTRUCT |
+                       G_PARAM_EXPLICIT_NOTIFY |
                        G_PARAM_STATIC_STRINGS));
 }
 
diff --git a/src/camel/providers/local/camel-local-folder.c b/src/camel/providers/local/camel-local-folder.c
index e71b7e6a3..672b694ce 100644
--- a/src/camel/providers/local/camel-local-folder.c
+++ b/src/camel/providers/local/camel-local-folder.c
@@ -511,6 +511,7 @@ camel_local_folder_class_init (CamelLocalFolderClass *class)
                        _("_Index message body data"),
                        FALSE,
                        G_PARAM_READWRITE |
+                       G_PARAM_EXPLICIT_NOTIFY |
                        CAMEL_PARAM_PERSISTENT));
 }
 
diff --git a/src/camel/providers/local/camel-local-store.c b/src/camel/providers/local/camel-local-store.c
index 88e7abbf3..80e7eaa15 100644
--- a/src/camel/providers/local/camel-local-store.c
+++ b/src/camel/providers/local/camel-local-store.c
@@ -697,6 +697,7 @@ camel_local_store_class_init (CamelLocalStoreClass *class)
                        TRUE,
                        G_PARAM_READWRITE |
                        G_PARAM_CONSTRUCT |
+                       G_PARAM_EXPLICIT_NOTIFY |
                        G_PARAM_STATIC_STRINGS));
 }
 
diff --git a/src/camel/providers/local/camel-maildir-message-info.c 
b/src/camel/providers/local/camel-maildir-message-info.c
index 69bfc3a8f..5f74fae99 100644
--- a/src/camel/providers/local/camel-maildir-message-info.c
+++ b/src/camel/providers/local/camel-maildir-message-info.c
@@ -164,7 +164,8 @@ camel_maildir_message_info_class_init (CamelMaildirMessageInfoClass *class)
                        "Filename",
                        NULL,
                        NULL,
-                       G_PARAM_READWRITE));
+                       G_PARAM_READWRITE |
+                       G_PARAM_EXPLICIT_NOTIFY));
 }
 
 static void
diff --git a/src/camel/providers/local/camel-mbox-message-info.c 
b/src/camel/providers/local/camel-mbox-message-info.c
index b9e25a420..2c066bbfc 100644
--- a/src/camel/providers/local/camel-mbox-message-info.c
+++ b/src/camel/providers/local/camel-mbox-message-info.c
@@ -198,7 +198,8 @@ camel_mbox_message_info_class_init (CamelMboxMessageInfoClass *class)
                        "Offset",
                        NULL,
                        0, G_MAXINT64, 0,
-                       G_PARAM_READWRITE));
+                       G_PARAM_READWRITE |
+                       G_PARAM_EXPLICIT_NOTIFY));
 }
 
 static void
diff --git a/src/camel/providers/local/camel-mh-settings.c b/src/camel/providers/local/camel-mh-settings.c
index dbaa118f9..65603ec6d 100644
--- a/src/camel/providers/local/camel-mh-settings.c
+++ b/src/camel/providers/local/camel-mh-settings.c
@@ -91,6 +91,7 @@ camel_mh_settings_class_init (CamelMhSettingsClass *class)
                        FALSE,
                        G_PARAM_READWRITE |
                        G_PARAM_CONSTRUCT |
+                       G_PARAM_EXPLICIT_NOTIFY |
                        G_PARAM_STATIC_STRINGS));
 }
 
diff --git a/src/camel/providers/local/camel-spool-settings.c 
b/src/camel/providers/local/camel-spool-settings.c
index e0ac75c8a..cdd9a9046 100644
--- a/src/camel/providers/local/camel-spool-settings.c
+++ b/src/camel/providers/local/camel-spool-settings.c
@@ -91,6 +91,7 @@ camel_spool_settings_class_init (CamelSpoolSettingsClass *class)
                        FALSE,
                        G_PARAM_READWRITE |
                        G_PARAM_CONSTRUCT |
+                       G_PARAM_EXPLICIT_NOTIFY |
                        G_PARAM_STATIC_STRINGS));
 }
 
diff --git a/src/camel/providers/nntp/camel-nntp-folder.c b/src/camel/providers/nntp/camel-nntp-folder.c
index 22b04f5a9..349c330f3 100644
--- a/src/camel/providers/nntp/camel-nntp-folder.c
+++ b/src/camel/providers/nntp/camel-nntp-folder.c
@@ -841,6 +841,7 @@ camel_nntp_folder_class_init (CamelNNTPFolderClass *class)
                        _("Apply message _filters to this folder"),
                        FALSE,
                        G_PARAM_READWRITE |
+                       G_PARAM_EXPLICIT_NOTIFY |
                        CAMEL_PARAM_PERSISTENT));
 }
 
diff --git a/src/camel/providers/nntp/camel-nntp-settings.c b/src/camel/providers/nntp/camel-nntp-settings.c
index 155dc3d5b..c4e7407db 100644
--- a/src/camel/providers/nntp/camel-nntp-settings.c
+++ b/src/camel/providers/nntp/camel-nntp-settings.c
@@ -244,6 +244,7 @@ camel_nntp_settings_class_init (CamelNNTPSettingsClass *class)
                        FALSE,
                        G_PARAM_READWRITE |
                        G_PARAM_CONSTRUCT |
+                       G_PARAM_EXPLICIT_NOTIFY |
                        G_PARAM_STATIC_STRINGS));
 
        /* Inherited from CamelNetworkSettings. */
@@ -274,6 +275,7 @@ camel_nntp_settings_class_init (CamelNNTPSettingsClass *class)
                        FALSE,
                        G_PARAM_READWRITE |
                        G_PARAM_CONSTRUCT |
+                       G_PARAM_EXPLICIT_NOTIFY |
                        G_PARAM_STATIC_STRINGS));
 
        g_object_class_install_property (
@@ -286,6 +288,7 @@ camel_nntp_settings_class_init (CamelNNTPSettingsClass *class)
                        100, G_MAXUINT, 1000,
                        G_PARAM_READWRITE |
                        G_PARAM_CONSTRUCT |
+                       G_PARAM_EXPLICIT_NOTIFY |
                        G_PARAM_STATIC_STRINGS));
 
        g_object_class_install_property (
@@ -298,6 +301,7 @@ camel_nntp_settings_class_init (CamelNNTPSettingsClass *class)
                        FALSE,
                        G_PARAM_READWRITE |
                        G_PARAM_CONSTRUCT |
+                       G_PARAM_EXPLICIT_NOTIFY |
                        G_PARAM_STATIC_STRINGS));
 
        /* Inherited from CamelNetworkSettings. */
@@ -316,6 +320,7 @@ camel_nntp_settings_class_init (CamelNNTPSettingsClass *class)
                        FALSE,
                        G_PARAM_READWRITE |
                        G_PARAM_CONSTRUCT |
+                       G_PARAM_EXPLICIT_NOTIFY |
                        G_PARAM_STATIC_STRINGS));
 
        g_object_class_install_property (
@@ -328,6 +333,7 @@ camel_nntp_settings_class_init (CamelNNTPSettingsClass *class)
                        TRUE,
                        G_PARAM_READWRITE |
                        G_PARAM_CONSTRUCT |
+                       G_PARAM_EXPLICIT_NOTIFY |
                        G_PARAM_STATIC_STRINGS));
 }
 
diff --git a/src/camel/providers/pop3/camel-pop3-settings.c b/src/camel/providers/pop3/camel-pop3-settings.c
index f315e09fc..ad7158107 100644
--- a/src/camel/providers/pop3/camel-pop3-settings.c
+++ b/src/camel/providers/pop3/camel-pop3-settings.c
@@ -248,6 +248,7 @@ camel_pop3_settings_class_init (CamelPOP3SettingsClass *class)
                        0,
                        G_PARAM_READWRITE |
                        G_PARAM_CONSTRUCT |
+                       G_PARAM_EXPLICIT_NOTIFY |
                        G_PARAM_STATIC_STRINGS));
 
        g_object_class_install_property (
@@ -260,6 +261,7 @@ camel_pop3_settings_class_init (CamelPOP3SettingsClass *class)
                        FALSE,
                        G_PARAM_READWRITE |
                        G_PARAM_CONSTRUCT |
+                       G_PARAM_EXPLICIT_NOTIFY |
                        G_PARAM_STATIC_STRINGS));
 
        g_object_class_install_property (
@@ -272,6 +274,7 @@ camel_pop3_settings_class_init (CamelPOP3SettingsClass *class)
                        FALSE,
                        G_PARAM_READWRITE |
                        G_PARAM_CONSTRUCT |
+                       G_PARAM_EXPLICIT_NOTIFY |
                        G_PARAM_STATIC_STRINGS));
 
        /* Inherited from CamelNetworkSettings. */
@@ -290,6 +293,7 @@ camel_pop3_settings_class_init (CamelPOP3SettingsClass *class)
                        FALSE,
                        G_PARAM_READWRITE |
                        G_PARAM_CONSTRUCT |
+                       G_PARAM_EXPLICIT_NOTIFY |
                        G_PARAM_STATIC_STRINGS));
 
        g_object_class_install_property (
@@ -304,6 +308,7 @@ camel_pop3_settings_class_init (CamelPOP3SettingsClass *class)
                        0,
                        G_PARAM_READWRITE |
                        G_PARAM_CONSTRUCT |
+                       G_PARAM_EXPLICIT_NOTIFY |
                        G_PARAM_STATIC_STRINGS));
 
        g_object_class_install_property (
@@ -316,6 +321,7 @@ camel_pop3_settings_class_init (CamelPOP3SettingsClass *class)
                        TRUE,
                        G_PARAM_READWRITE |
                        G_PARAM_CONSTRUCT |
+                       G_PARAM_EXPLICIT_NOTIFY |
                        G_PARAM_STATIC_STRINGS));
 
        /* Inherited from CamelNetworkSettings. */
diff --git a/src/camel/providers/sendmail/camel-sendmail-settings.c 
b/src/camel/providers/sendmail/camel-sendmail-settings.c
index 856d07791..f3197548a 100644
--- a/src/camel/providers/sendmail/camel-sendmail-settings.c
+++ b/src/camel/providers/sendmail/camel-sendmail-settings.c
@@ -167,6 +167,7 @@ camel_sendmail_settings_class_init (CamelSendmailSettingsClass *class)
                        FALSE,
                        G_PARAM_READWRITE |
                        G_PARAM_CONSTRUCT |
+                       G_PARAM_EXPLICIT_NOTIFY |
                        G_PARAM_STATIC_STRINGS));
 
        g_object_class_install_property (
@@ -179,6 +180,7 @@ camel_sendmail_settings_class_init (CamelSendmailSettingsClass *class)
                        FALSE,
                        G_PARAM_READWRITE |
                        G_PARAM_CONSTRUCT |
+                       G_PARAM_EXPLICIT_NOTIFY |
                        G_PARAM_STATIC_STRINGS));
 
        g_object_class_install_property (
@@ -191,6 +193,7 @@ camel_sendmail_settings_class_init (CamelSendmailSettingsClass *class)
                        NULL,
                        G_PARAM_READWRITE |
                        G_PARAM_CONSTRUCT |
+                       G_PARAM_EXPLICIT_NOTIFY |
                        G_PARAM_STATIC_STRINGS));
 
        g_object_class_install_property (
@@ -203,6 +206,7 @@ camel_sendmail_settings_class_init (CamelSendmailSettingsClass *class)
                        NULL,
                        G_PARAM_READWRITE |
                        G_PARAM_CONSTRUCT |
+                       G_PARAM_EXPLICIT_NOTIFY |
                        G_PARAM_STATIC_STRINGS));
 
        g_object_class_install_property (
@@ -215,6 +219,7 @@ camel_sendmail_settings_class_init (CamelSendmailSettingsClass *class)
                        TRUE,
                        G_PARAM_READWRITE |
                        G_PARAM_CONSTRUCT |
+                       G_PARAM_EXPLICIT_NOTIFY |
                        G_PARAM_STATIC_STRINGS));
 }
 
diff --git a/src/libebackend/e-backend.c b/src/libebackend/e-backend.c
index d207d09f2..8e1cc4874 100644
--- a/src/libebackend/e-backend.c
+++ b/src/libebackend/e-backend.c
@@ -737,6 +737,7 @@ e_backend_class_init (EBackendClass *class)
                        "Socket endpoint of a network service",
                        G_TYPE_SOCKET_CONNECTABLE,
                        G_PARAM_READWRITE |
+                       G_PARAM_EXPLICIT_NOTIFY |
                        G_PARAM_STATIC_STRINGS));
 
        g_object_class_install_property (
@@ -760,6 +761,7 @@ e_backend_class_init (EBackendClass *class)
                        "Whether the backend is online",
                        TRUE,
                        G_PARAM_READWRITE |
+                       G_PARAM_EXPLICIT_NOTIFY |
                        G_PARAM_STATIC_STRINGS));
 
        g_object_class_install_property (
diff --git a/src/libebackend/e-server-side-source.c b/src/libebackend/e-server-side-source.c
index 3a1fd6ae5..d82ec03d9 100644
--- a/src/libebackend/e-server-side-source.c
+++ b/src/libebackend/e-server-side-source.c
@@ -1649,6 +1649,7 @@ e_server_side_source_class_init (EServerSideSourceClass *class)
                        "The object providing OAuth 2.0 support",
                        E_TYPE_OAUTH2_SUPPORT,
                        G_PARAM_READWRITE |
+                       G_PARAM_EXPLICIT_NOTIFY |
                        G_PARAM_STATIC_STRINGS));
 
        /* This overrides the "remote-creatable" property
@@ -1663,6 +1664,7 @@ e_server_side_source_class_init (EServerSideSourceClass *class)
                        "can create remote resources",
                        FALSE,
                        G_PARAM_READWRITE |
+                       G_PARAM_EXPLICIT_NOTIFY |
                        G_PARAM_STATIC_STRINGS));
 
        /* This overrides the "remote-deletable" property
@@ -1677,6 +1679,7 @@ e_server_side_source_class_init (EServerSideSourceClass *class)
                        "can delete remote resources",
                        FALSE,
                        G_PARAM_READWRITE |
+                       G_PARAM_EXPLICIT_NOTIFY |
                        G_PARAM_STATIC_STRINGS));
 
        /* This overrides the "removable" property
@@ -1690,6 +1693,7 @@ e_server_side_source_class_init (EServerSideSourceClass *class)
                        "Whether the data source is removable",
                        FALSE,
                        G_PARAM_READWRITE |
+                       G_PARAM_EXPLICIT_NOTIFY |
                        G_PARAM_STATIC_STRINGS));
 
        g_object_class_install_property (
@@ -1715,6 +1719,7 @@ e_server_side_source_class_init (EServerSideSourceClass *class)
                        "Whether the data source is writable",
                        FALSE,
                        G_PARAM_READWRITE |
+                       G_PARAM_EXPLICIT_NOTIFY |
                        G_PARAM_STATIC_STRINGS));
 
        /* Do not use G_PARAM_CONSTRUCT.  We initialize the
@@ -1728,6 +1733,7 @@ e_server_side_source_class_init (EServerSideSourceClass *class)
                        "Directory in which to write changes to disk",
                        NULL,
                        G_PARAM_READWRITE |
+                       G_PARAM_EXPLICIT_NOTIFY |
                        G_PARAM_STATIC_STRINGS));
 }
 
diff --git a/src/libedataserver/e-client.c b/src/libedataserver/e-client.c
index 3c8a5fe82..6e6a6af86 100644
--- a/src/libedataserver/e-client.c
+++ b/src/libedataserver/e-client.c
@@ -808,6 +808,7 @@ e_client_class_init (EClientClass *class)
                        "Capabilities",
                        "The capabilities of this client",
                        G_PARAM_READABLE |
+                       G_PARAM_EXPLICIT_NOTIFY |
                        G_PARAM_STATIC_STRINGS));
 
        /**
@@ -842,6 +843,7 @@ e_client_class_init (EClientClass *class)
                        "Whether this client is online",
                        FALSE,
                        G_PARAM_READWRITE |
+                       G_PARAM_EXPLICIT_NOTIFY |
                        G_PARAM_STATIC_STRINGS));
 
        /**
diff --git a/src/libedataserver/e-data-server-util.c b/src/libedataserver/e-data-server-util.c
index a1771d1c4..951a28977 100644
--- a/src/libedataserver/e-data-server-util.c
+++ b/src/libedataserver/e-data-server-util.c
@@ -198,6 +198,32 @@ e_util_strdup_strip (const gchar *string)
        return duplicate;
 }
 
+/**
+ * e_util_strcmp0:
+ * @str1: a C string on %NULL
+ * @str2: another C string or %NULL
+ *
+ * Compares @str1 and @str2 like g_strcmp0(), except it handles %NULL and
+ * empty strings as equal.
+ *
+ * Returns: an integer less than 0 when @str1 is before @str2; 0 when
+ *    the strings are equal and an integer greated than 0 when @str1 is after @str2.
+ *
+ * Since: 3.32
+ **/
+gint
+e_util_strcmp0 (const gchar *str1,
+               const gchar *str2)
+{
+       if (str1 && !*str1)
+               str1 = NULL;
+
+       if (str2 && !*str2)
+               str2 = NULL;
+
+       return g_strcmp0 (str1, str2);
+}
+
 /**
  * e_util_strstrcase:
  * @haystack: The string to search in.
diff --git a/src/libedataserver/e-data-server-util.h b/src/libedataserver/e-data-server-util.h
index 02d4a5ed7..7811ba335 100644
--- a/src/libedataserver/e-data-server-util.h
+++ b/src/libedataserver/e-data-server-util.h
@@ -44,6 +44,8 @@ const gchar * e_get_user_data_dir             (void);
 gboolean       e_util_strv_equal               (gconstpointer v1,
                                                 gconstpointer v2);
 gchar *                e_util_strdup_strip             (const gchar *string);
+gint           e_util_strcmp0                  (const gchar *str1,
+                                                const gchar *str2);
 gchar *                e_util_strstrcase               (const gchar *haystack,
                                                 const gchar *needle);
 gchar *                e_util_unicode_get_utf8         (const gchar *text,
diff --git a/src/libedataserver/e-network-monitor.c b/src/libedataserver/e-network-monitor.c
index 42df56089..e0d8b87d6 100644
--- a/src/libedataserver/e-network-monitor.c
+++ b/src/libedataserver/e-network-monitor.c
@@ -313,6 +313,7 @@ e_network_monitor_class_init (ENetworkMonitorClass *class)
                        NULL,
                        NULL,
                        G_PARAM_READWRITE |
+                       G_PARAM_EXPLICIT_NOTIFY |
                        G_PARAM_STATIC_STRINGS));
 
        g_object_class_override_property (object_class, PROP_NETWORK_AVAILABLE, "network-available");
diff --git a/src/libedataserver/e-soup-session.c b/src/libedataserver/e-soup-session.c
index 5b812b13c..74028c858 100644
--- a/src/libedataserver/e-soup-session.c
+++ b/src/libedataserver/e-soup-session.c
@@ -495,6 +495,7 @@ e_soup_session_class_init (ESoupSessionClass *klass)
                        NULL,
                        E_TYPE_NAMED_PARAMETERS,
                        G_PARAM_READWRITE |
+                       G_PARAM_EXPLICIT_NOTIFY |
                        G_PARAM_STATIC_STRINGS));
 }
 
diff --git a/src/libedataserver/e-source-alarms.c b/src/libedataserver/e-source-alarms.c
index 6644c9e77..5b7a42079 100644
--- a/src/libedataserver/e-source-alarms.c
+++ b/src/libedataserver/e-source-alarms.c
@@ -142,6 +142,7 @@ e_source_alarms_class_init (ESourceAlarmsClass *class)
                        TRUE,
                        G_PARAM_READWRITE |
                        G_PARAM_CONSTRUCT |
+                       G_PARAM_EXPLICIT_NOTIFY |
                        G_PARAM_STATIC_STRINGS |
                        E_SOURCE_PARAM_SETTING));
 
@@ -155,6 +156,7 @@ e_source_alarms_class_init (ESourceAlarmsClass *class)
                        NULL,
                        G_PARAM_READWRITE |
                        G_PARAM_CONSTRUCT |
+                       G_PARAM_EXPLICIT_NOTIFY |
                        G_PARAM_STATIC_STRINGS |
                        E_SOURCE_PARAM_SETTING));
 }
diff --git a/src/libedataserver/e-source-authentication.c b/src/libedataserver/e-source-authentication.c
index 3da9f6743..bf2514ce2 100644
--- a/src/libedataserver/e-source-authentication.c
+++ b/src/libedataserver/e-source-authentication.c
@@ -282,6 +282,7 @@ e_source_authentication_class_init (ESourceAuthenticationClass *class)
                        "",
                        G_PARAM_READWRITE |
                        G_PARAM_CONSTRUCT |
+                       G_PARAM_EXPLICIT_NOTIFY |
                        G_PARAM_STATIC_STRINGS |
                        E_SOURCE_PARAM_SETTING));
 
@@ -295,6 +296,7 @@ e_source_authentication_class_init (ESourceAuthenticationClass *class)
                        "none",
                        G_PARAM_READWRITE |
                        G_PARAM_CONSTRUCT |
+                       G_PARAM_EXPLICIT_NOTIFY |
                        G_PARAM_STATIC_STRINGS |
                        E_SOURCE_PARAM_SETTING));
 
@@ -308,6 +310,7 @@ e_source_authentication_class_init (ESourceAuthenticationClass *class)
                        0, G_MAXUINT16, 0,
                        G_PARAM_READWRITE |
                        G_PARAM_CONSTRUCT |
+                       G_PARAM_EXPLICIT_NOTIFY |
                        G_PARAM_STATIC_STRINGS |
                        E_SOURCE_PARAM_SETTING));
 
@@ -321,6 +324,7 @@ e_source_authentication_class_init (ESourceAuthenticationClass *class)
                        "system-proxy",
                        G_PARAM_READWRITE |
                        G_PARAM_CONSTRUCT |
+                       G_PARAM_EXPLICIT_NOTIFY |
                        G_PARAM_STATIC_STRINGS |
                        E_SOURCE_PARAM_SETTING));
 
@@ -335,6 +339,7 @@ e_source_authentication_class_init (ESourceAuthenticationClass *class)
                        TRUE,
                        G_PARAM_READWRITE |
                        G_PARAM_CONSTRUCT |
+                       G_PARAM_EXPLICIT_NOTIFY |
                        G_PARAM_STATIC_STRINGS |
                        E_SOURCE_PARAM_SETTING));
 
@@ -348,6 +353,7 @@ e_source_authentication_class_init (ESourceAuthenticationClass *class)
                        NULL,
                        G_PARAM_READWRITE |
                        G_PARAM_CONSTRUCT |
+                       G_PARAM_EXPLICIT_NOTIFY |
                        G_PARAM_STATIC_STRINGS |
                        E_SOURCE_PARAM_SETTING));
 
@@ -363,6 +369,7 @@ e_source_authentication_class_init (ESourceAuthenticationClass *class)
                        NULL,
                        G_PARAM_READWRITE |
                        G_PARAM_CONSTRUCT |
+                       G_PARAM_EXPLICIT_NOTIFY |
                        G_PARAM_STATIC_STRINGS |
                        E_SOURCE_PARAM_SETTING));
 }
@@ -501,7 +508,7 @@ e_source_authentication_set_host (ESourceAuthentication *extension,
 
        e_source_extension_property_lock (E_SOURCE_EXTENSION (extension));
 
-       if (g_strcmp0 (extension->priv->host, host) == 0) {
+       if (e_util_strcmp0 (extension->priv->host, host) == 0) {
                e_source_extension_property_unlock (E_SOURCE_EXTENSION (extension));
                return;
        }
@@ -593,7 +600,7 @@ e_source_authentication_set_method (ESourceAuthentication *extension,
 
        e_source_extension_property_lock (E_SOURCE_EXTENSION (extension));
 
-       if (g_strcmp0 (extension->priv->method, method) == 0) {
+       if (e_util_strcmp0 (extension->priv->method, method) == 0) {
                e_source_extension_property_unlock (E_SOURCE_EXTENSION (extension));
                return;
        }
@@ -858,7 +865,7 @@ e_source_authentication_set_user (ESourceAuthentication *extension,
 
        e_source_extension_property_lock (E_SOURCE_EXTENSION (extension));
 
-       if (g_strcmp0 (extension->priv->user, user) == 0) {
+       if (e_util_strcmp0 (extension->priv->user, user) == 0) {
                e_source_extension_property_unlock (E_SOURCE_EXTENSION (extension));
                return;
        }
@@ -947,7 +954,7 @@ e_source_authentication_set_credential_name (ESourceAuthentication *extension,
 
        e_source_extension_property_lock (E_SOURCE_EXTENSION (extension));
 
-       if (g_strcmp0 (extension->priv->credential_name, credential_name) == 0) {
+       if (e_util_strcmp0 (extension->priv->credential_name, credential_name) == 0) {
                e_source_extension_property_unlock (E_SOURCE_EXTENSION (extension));
                return;
        }
diff --git a/src/libedataserver/e-source-autocomplete.c b/src/libedataserver/e-source-autocomplete.c
index fe5ad8cc8..eecefb8d9 100644
--- a/src/libedataserver/e-source-autocomplete.c
+++ b/src/libedataserver/e-source-autocomplete.c
@@ -114,6 +114,7 @@ e_source_autocomplete_class_init (ESourceAutocompleteClass *class)
                        TRUE,
                        G_PARAM_READWRITE |
                        G_PARAM_CONSTRUCT |
+                       G_PARAM_EXPLICIT_NOTIFY |
                        G_PARAM_STATIC_STRINGS |
                        E_SOURCE_PARAM_SETTING));
 }
diff --git a/src/libedataserver/e-source-autoconfig.c b/src/libedataserver/e-source-autoconfig.c
index 6135bded6..1ab031998 100644
--- a/src/libedataserver/e-source-autoconfig.c
+++ b/src/libedataserver/e-source-autoconfig.c
@@ -128,6 +128,7 @@ e_source_autoconfig_class_init (ESourceAutoconfigClass *class)
                        "",
                        G_PARAM_READWRITE |
                        G_PARAM_CONSTRUCT |
+                       G_PARAM_EXPLICIT_NOTIFY |
                        G_PARAM_STATIC_STRINGS |
                        E_SOURCE_PARAM_SETTING));
 }
@@ -221,7 +222,7 @@ e_source_autoconfig_set_revision (ESourceAutoconfig *extension,
 
        e_source_extension_property_lock (E_SOURCE_EXTENSION (extension));
 
-       if (g_strcmp0 (extension->priv->revision, revision) == 0) {
+       if (e_util_strcmp0 (extension->priv->revision, revision) == 0) {
                e_source_extension_property_unlock (E_SOURCE_EXTENSION (extension));
                return;
        }
diff --git a/src/libedataserver/e-source-backend.c b/src/libedataserver/e-source-backend.c
index 8716a4771..2ea21890a 100644
--- a/src/libedataserver/e-source-backend.c
+++ b/src/libedataserver/e-source-backend.c
@@ -120,6 +120,7 @@ e_source_backend_class_init (ESourceBackendClass *class)
                        NULL,
                        G_PARAM_READWRITE |
                        G_PARAM_CONSTRUCT |
+                       G_PARAM_EXPLICIT_NOTIFY |
                        G_PARAM_STATIC_STRINGS |
                        E_SOURCE_PARAM_SETTING));
 }
@@ -200,7 +201,7 @@ e_source_backend_set_backend_name (ESourceBackend *extension,
 
        e_source_extension_property_lock (E_SOURCE_EXTENSION (extension));
 
-       if (g_strcmp0 (extension->priv->backend_name, backend_name) == 0) {
+       if (e_util_strcmp0 (extension->priv->backend_name, backend_name) == 0) {
                e_source_extension_property_unlock (E_SOURCE_EXTENSION (extension));
                return;
        }
diff --git a/src/libedataserver/e-source-collection.c b/src/libedataserver/e-source-collection.c
index dab5f2869..4e95765a0 100644
--- a/src/libedataserver/e-source-collection.c
+++ b/src/libedataserver/e-source-collection.c
@@ -214,6 +214,7 @@ e_source_collection_class_init (ESourceCollectionClass *class)
                        TRUE,
                        G_PARAM_READWRITE |
                        G_PARAM_CONSTRUCT |
+                       G_PARAM_EXPLICIT_NOTIFY |
                        G_PARAM_STATIC_STRINGS |
                        E_SOURCE_PARAM_SETTING));
 
@@ -227,6 +228,7 @@ e_source_collection_class_init (ESourceCollectionClass *class)
                        TRUE,
                        G_PARAM_READWRITE |
                        G_PARAM_CONSTRUCT |
+                       G_PARAM_EXPLICIT_NOTIFY |
                        G_PARAM_STATIC_STRINGS |
                        E_SOURCE_PARAM_SETTING));
 
@@ -241,6 +243,7 @@ e_source_collection_class_init (ESourceCollectionClass *class)
                        NULL,
                        G_PARAM_READWRITE |
                        G_PARAM_CONSTRUCT |
+                       G_PARAM_EXPLICIT_NOTIFY |
                        G_PARAM_STATIC_STRINGS |
                        E_SOURCE_PARAM_SETTING));
 
@@ -254,6 +257,7 @@ e_source_collection_class_init (ESourceCollectionClass *class)
                        TRUE,
                        G_PARAM_READWRITE |
                        G_PARAM_CONSTRUCT |
+                       G_PARAM_EXPLICIT_NOTIFY |
                        G_PARAM_STATIC_STRINGS |
                        E_SOURCE_PARAM_SETTING));
 
@@ -267,6 +271,7 @@ e_source_collection_class_init (ESourceCollectionClass *class)
                        NULL,
                        G_PARAM_READWRITE |
                        G_PARAM_CONSTRUCT |
+                       G_PARAM_EXPLICIT_NOTIFY |
                        G_PARAM_STATIC_STRINGS |
                        E_SOURCE_PARAM_SETTING));
 
@@ -280,6 +285,7 @@ e_source_collection_class_init (ESourceCollectionClass *class)
                        NULL,
                        G_PARAM_READWRITE |
                        G_PARAM_CONSTRUCT |
+                       G_PARAM_EXPLICIT_NOTIFY |
                        G_PARAM_STATIC_STRINGS |
                        E_SOURCE_PARAM_SETTING));
 }
@@ -362,7 +368,7 @@ e_source_collection_set_identity (ESourceCollection *extension,
 
        e_source_extension_property_lock (E_SOURCE_EXTENSION (extension));
 
-       if (g_strcmp0 (extension->priv->identity, identity) == 0) {
+       if (e_util_strcmp0 (extension->priv->identity, identity) == 0) {
                e_source_extension_property_unlock (E_SOURCE_EXTENSION (extension));
                return;
        }
@@ -606,7 +612,7 @@ e_source_collection_set_calendar_url (ESourceCollection *extension,
 
        e_source_extension_property_lock (E_SOURCE_EXTENSION (extension));
 
-       if (g_strcmp0 (extension->priv->calendar_url, calendar_url) == 0) {
+       if (e_util_strcmp0 (extension->priv->calendar_url, calendar_url) == 0) {
                e_source_extension_property_unlock (E_SOURCE_EXTENSION (extension));
                return;
        }
@@ -689,7 +695,7 @@ e_source_collection_set_contacts_url (ESourceCollection *extension,
 
        e_source_extension_property_lock (E_SOURCE_EXTENSION (extension));
 
-       if (g_strcmp0 (extension->priv->contacts_url, contacts_url) == 0) {
+       if (e_util_strcmp0 (extension->priv->contacts_url, contacts_url) == 0) {
                e_source_extension_property_unlock (E_SOURCE_EXTENSION (extension));
                return;
        }
diff --git a/src/libedataserver/e-source-contacts.c b/src/libedataserver/e-source-contacts.c
index 7107ff607..d12931d6c 100644
--- a/src/libedataserver/e-source-contacts.c
+++ b/src/libedataserver/e-source-contacts.c
@@ -129,6 +129,7 @@ e_source_contacts_class_init (ESourceContactsClass *class)
                        "Include this address book in the contacts calendar",
                        FALSE,  /* see constructed () */
                        G_PARAM_READWRITE |
+                       G_PARAM_EXPLICIT_NOTIFY |
                        E_SOURCE_PARAM_SETTING));
 }
 
diff --git a/src/libedataserver/e-source-goa.c b/src/libedataserver/e-source-goa.c
index 4efccf1db..06e723aff 100644
--- a/src/libedataserver/e-source-goa.c
+++ b/src/libedataserver/e-source-goa.c
@@ -195,6 +195,7 @@ e_source_goa_class_init (ESourceGoaClass *class)
                        NULL,
                        G_PARAM_READWRITE |
                        G_PARAM_CONSTRUCT |
+                       G_PARAM_EXPLICIT_NOTIFY |
                        G_PARAM_STATIC_STRINGS |
                        E_SOURCE_PARAM_SETTING));
 
@@ -208,6 +209,7 @@ e_source_goa_class_init (ESourceGoaClass *class)
                        NULL,
                        G_PARAM_READWRITE |
                        G_PARAM_CONSTRUCT |
+                       G_PARAM_EXPLICIT_NOTIFY |
                        G_PARAM_STATIC_STRINGS |
                        E_SOURCE_PARAM_SETTING));
 
@@ -221,6 +223,7 @@ e_source_goa_class_init (ESourceGoaClass *class)
                        NULL,
                        G_PARAM_READWRITE |
                        G_PARAM_CONSTRUCT |
+                       G_PARAM_EXPLICIT_NOTIFY |
                        G_PARAM_STATIC_STRINGS |
                        E_SOURCE_PARAM_SETTING));
 
@@ -234,6 +237,7 @@ e_source_goa_class_init (ESourceGoaClass *class)
                        NULL,
                        G_PARAM_READWRITE |
                        G_PARAM_CONSTRUCT |
+                       G_PARAM_EXPLICIT_NOTIFY |
                        G_PARAM_STATIC_STRINGS |
                        E_SOURCE_PARAM_SETTING));
 
@@ -247,6 +251,7 @@ e_source_goa_class_init (ESourceGoaClass *class)
                        NULL,
                        G_PARAM_READWRITE |
                        G_PARAM_CONSTRUCT |
+                       G_PARAM_EXPLICIT_NOTIFY |
                        G_PARAM_STATIC_STRINGS |
                        E_SOURCE_PARAM_SETTING));
 }
@@ -329,7 +334,7 @@ e_source_goa_set_account_id (ESourceGoa *extension,
 
        e_source_extension_property_lock (E_SOURCE_EXTENSION (extension));
 
-       if (g_strcmp0 (extension->priv->account_id, account_id) == 0) {
+       if (e_util_strcmp0 (extension->priv->account_id, account_id) == 0) {
                e_source_extension_property_unlock (E_SOURCE_EXTENSION (extension));
                return;
        }
@@ -416,7 +421,7 @@ e_source_goa_set_calendar_url (ESourceGoa *extension,
 
        e_source_extension_property_lock (E_SOURCE_EXTENSION (extension));
 
-       if (g_strcmp0 (extension->priv->calendar_url, calendar_url) == 0) {
+       if (e_util_strcmp0 (extension->priv->calendar_url, calendar_url) == 0) {
                e_source_extension_property_unlock (E_SOURCE_EXTENSION (extension));
                return;
        }
@@ -503,7 +508,7 @@ e_source_goa_set_contacts_url (ESourceGoa *extension,
 
        e_source_extension_property_lock (E_SOURCE_EXTENSION (extension));
 
-       if (g_strcmp0 (extension->priv->contacts_url, contacts_url) == 0) {
+       if (e_util_strcmp0 (extension->priv->contacts_url, contacts_url) == 0) {
                e_source_extension_property_unlock (E_SOURCE_EXTENSION (extension));
                return;
        }
@@ -589,7 +594,7 @@ e_source_goa_set_name (ESourceGoa *extension,
 
        e_source_extension_property_lock (E_SOURCE_EXTENSION (extension));
 
-       if (g_strcmp0 (extension->priv->name, name) == 0) {
+       if (e_util_strcmp0 (extension->priv->name, name) == 0) {
                e_source_extension_property_unlock (E_SOURCE_EXTENSION (extension));
                return;
        }
@@ -675,7 +680,7 @@ e_source_goa_set_address (ESourceGoa *extension,
 
        e_source_extension_property_lock (E_SOURCE_EXTENSION (extension));
 
-       if (g_strcmp0 (extension->priv->address, address) == 0) {
+       if (e_util_strcmp0 (extension->priv->address, address) == 0) {
                e_source_extension_property_unlock (E_SOURCE_EXTENSION (extension));
                return;
        }
diff --git a/src/libedataserver/e-source-ldap.c b/src/libedataserver/e-source-ldap.c
index 8e2daf248..751a6585c 100644
--- a/src/libedataserver/e-source-ldap.c
+++ b/src/libedataserver/e-source-ldap.c
@@ -362,7 +362,8 @@ e_source_ldap_class_init (ESourceLDAPClass *class)
                        "LDAP authentication method",
                        E_TYPE_SOURCE_LDAP_AUTHENTICATION,
                        E_SOURCE_LDAP_AUTHENTICATION_NONE,
-                       G_PARAM_READWRITE));
+                       G_PARAM_READWRITE |
+                       G_PARAM_EXPLICIT_NOTIFY));
 
        g_object_class_install_property (
                object_class,
@@ -374,6 +375,7 @@ e_source_ldap_class_init (ESourceLDAPClass *class)
                        FALSE,
                        G_PARAM_READWRITE |
                        G_PARAM_CONSTRUCT |
+                       G_PARAM_EXPLICIT_NOTIFY |
                        E_SOURCE_PARAM_SETTING));
 
        g_object_class_install_property (
@@ -386,6 +388,7 @@ e_source_ldap_class_init (ESourceLDAPClass *class)
                        "",
                        G_PARAM_READWRITE |
                        G_PARAM_CONSTRUCT |
+                       G_PARAM_EXPLICIT_NOTIFY |
                        E_SOURCE_PARAM_SETTING));
 
        g_object_class_install_property (
@@ -398,6 +401,7 @@ e_source_ldap_class_init (ESourceLDAPClass *class)
                        0, G_MAXUINT, 100,
                        G_PARAM_READWRITE |
                        G_PARAM_CONSTRUCT |
+                       G_PARAM_EXPLICIT_NOTIFY |
                        E_SOURCE_PARAM_SETTING));
 
        g_object_class_install_property (
@@ -410,6 +414,7 @@ e_source_ldap_class_init (ESourceLDAPClass *class)
                        "",
                        G_PARAM_READWRITE |
                        G_PARAM_CONSTRUCT |
+                       G_PARAM_EXPLICIT_NOTIFY |
                        E_SOURCE_PARAM_SETTING));
 
        g_object_class_install_property (
@@ -423,6 +428,7 @@ e_source_ldap_class_init (ESourceLDAPClass *class)
                        E_SOURCE_LDAP_SCOPE_ONELEVEL,
                        G_PARAM_READWRITE |
                        G_PARAM_CONSTRUCT |
+                       G_PARAM_EXPLICIT_NOTIFY |
                        E_SOURCE_PARAM_SETTING));
 
        /* This is bound to the security extension.
@@ -436,7 +442,8 @@ e_source_ldap_class_init (ESourceLDAPClass *class)
                        "LDAP security method",
                        E_TYPE_SOURCE_LDAP_SECURITY,
                        E_SOURCE_LDAP_SECURITY_NONE,
-                       G_PARAM_READWRITE));
+                       G_PARAM_READWRITE |
+                       G_PARAM_EXPLICIT_NOTIFY));
 }
 
 static void
@@ -606,7 +613,7 @@ e_source_ldap_set_root_dn (ESourceLDAP *extension,
 
        e_source_extension_property_lock (E_SOURCE_EXTENSION (extension));
 
-       if (g_strcmp0 (extension->priv->root_dn, root_dn) == 0) {
+       if (e_util_strcmp0 (extension->priv->root_dn, root_dn) == 0) {
                e_source_extension_property_unlock (E_SOURCE_EXTENSION (extension));
                return;
        }
diff --git a/src/libedataserver/e-source-local.c b/src/libedataserver/e-source-local.c
index c8a3261d9..1215e03f2 100644
--- a/src/libedataserver/e-source-local.c
+++ b/src/libedataserver/e-source-local.c
@@ -114,6 +114,7 @@ e_source_local_class_init (ESourceLocalClass *class)
                        G_TYPE_FILE,
                        G_PARAM_READWRITE |
                        G_PARAM_CONSTRUCT |
+                       G_PARAM_EXPLICIT_NOTIFY |
                        E_SOURCE_PARAM_SETTING));
 }
 
diff --git a/src/libedataserver/e-source-mail-account.c b/src/libedataserver/e-source-mail-account.c
index 7679043e2..6b27fe6d6 100644
--- a/src/libedataserver/e-source-mail-account.c
+++ b/src/libedataserver/e-source-mail-account.c
@@ -163,6 +163,7 @@ e_source_mail_account_class_init (ESourceMailAccountClass *class)
                        "self",
                        G_PARAM_READWRITE |
                        G_PARAM_CONSTRUCT |
+                       G_PARAM_EXPLICIT_NOTIFY |
                        G_PARAM_STATIC_STRINGS |
                        E_SOURCE_PARAM_SETTING));
 
@@ -176,6 +177,7 @@ e_source_mail_account_class_init (ESourceMailAccountClass *class)
                        "",
                        G_PARAM_READWRITE |
                        G_PARAM_CONSTRUCT |
+                       G_PARAM_EXPLICIT_NOTIFY |
                        G_PARAM_STATIC_STRINGS |
                        E_SOURCE_PARAM_SETTING));
 
@@ -189,6 +191,7 @@ e_source_mail_account_class_init (ESourceMailAccountClass *class)
                        TRUE,
                        G_PARAM_READWRITE |
                        G_PARAM_CONSTRUCT |
+                       G_PARAM_EXPLICIT_NOTIFY |
                        G_PARAM_STATIC_STRINGS |
                        E_SOURCE_PARAM_SETTING));
 }
diff --git a/src/libedataserver/e-source-mail-composition.c b/src/libedataserver/e-source-mail-composition.c
index ced0c6224..7c14474ed 100644
--- a/src/libedataserver/e-source-mail-composition.c
+++ b/src/libedataserver/e-source-mail-composition.c
@@ -259,6 +259,7 @@ e_source_mail_composition_class_init (ESourceMailCompositionClass *class)
                        G_TYPE_STRV,
                        G_PARAM_READWRITE |
                        G_PARAM_CONSTRUCT |
+                       G_PARAM_EXPLICIT_NOTIFY |
                        G_PARAM_STATIC_STRINGS |
                        E_SOURCE_PARAM_SETTING));
 
@@ -272,6 +273,7 @@ e_source_mail_composition_class_init (ESourceMailCompositionClass *class)
                        G_TYPE_STRV,
                        G_PARAM_READWRITE |
                        G_PARAM_CONSTRUCT |
+                       G_PARAM_EXPLICIT_NOTIFY |
                        G_PARAM_STATIC_STRINGS |
                        E_SOURCE_PARAM_SETTING));
 
@@ -285,6 +287,7 @@ e_source_mail_composition_class_init (ESourceMailCompositionClass *class)
                        NULL,
                        G_PARAM_READWRITE |
                        G_PARAM_CONSTRUCT |
+                       G_PARAM_EXPLICIT_NOTIFY |
                        G_PARAM_STATIC_STRINGS |
                        E_SOURCE_PARAM_SETTING));
 
@@ -299,6 +302,7 @@ e_source_mail_composition_class_init (ESourceMailCompositionClass *class)
                        E_SOURCE_MAIL_COMPOSITION_REPLY_STYLE_DEFAULT,
                        G_PARAM_READWRITE |
                        G_PARAM_CONSTRUCT |
+                       G_PARAM_EXPLICIT_NOTIFY |
                        G_PARAM_STATIC_STRINGS |
                        E_SOURCE_PARAM_SETTING));
 
@@ -312,6 +316,7 @@ e_source_mail_composition_class_init (ESourceMailCompositionClass *class)
                        TRUE,
                        G_PARAM_READWRITE |
                        G_PARAM_CONSTRUCT |
+                       G_PARAM_EXPLICIT_NOTIFY |
                        G_PARAM_STATIC_STRINGS |
                        E_SOURCE_PARAM_SETTING));
 
@@ -326,6 +331,7 @@ e_source_mail_composition_class_init (ESourceMailCompositionClass *class)
                        E_THREE_STATE_INCONSISTENT,
                        G_PARAM_READWRITE |
                        G_PARAM_CONSTRUCT |
+                       G_PARAM_EXPLICIT_NOTIFY |
                        G_PARAM_STATIC_STRINGS |
                        E_SOURCE_PARAM_SETTING));
 
@@ -339,6 +345,7 @@ e_source_mail_composition_class_init (ESourceMailCompositionClass *class)
                        NULL,
                        G_PARAM_READWRITE |
                        G_PARAM_CONSTRUCT |
+                       G_PARAM_EXPLICIT_NOTIFY |
                        G_PARAM_STATIC_STRINGS |
                        E_SOURCE_PARAM_SETTING));
 
@@ -353,6 +360,7 @@ e_source_mail_composition_class_init (ESourceMailCompositionClass *class)
                        E_THREE_STATE_INCONSISTENT,
                        G_PARAM_READWRITE |
                        G_PARAM_CONSTRUCT |
+                       G_PARAM_EXPLICIT_NOTIFY |
                        G_PARAM_STATIC_STRINGS |
                        E_SOURCE_PARAM_SETTING));
 
@@ -366,6 +374,7 @@ e_source_mail_composition_class_init (ESourceMailCompositionClass *class)
                        NULL,
                        G_PARAM_READWRITE |
                        G_PARAM_CONSTRUCT |
+                       G_PARAM_EXPLICIT_NOTIFY |
                        G_PARAM_STATIC_STRINGS |
                        E_SOURCE_PARAM_SETTING));
 }
@@ -625,7 +634,7 @@ e_source_mail_composition_set_drafts_folder (ESourceMailComposition *extension,
 
        e_source_extension_property_lock (E_SOURCE_EXTENSION (extension));
 
-       if (g_strcmp0 (extension->priv->drafts_folder, drafts_folder) == 0) {
+       if (e_util_strcmp0 (extension->priv->drafts_folder, drafts_folder) == 0) {
                e_source_extension_property_unlock (E_SOURCE_EXTENSION (extension));
                return;
        }
@@ -756,7 +765,7 @@ e_source_mail_composition_set_templates_folder (ESourceMailComposition *extensio
 
        e_source_extension_property_lock (E_SOURCE_EXTENSION (extension));
 
-       if (g_strcmp0 (extension->priv->templates_folder, templates_folder) == 0) {
+       if (e_util_strcmp0 (extension->priv->templates_folder, templates_folder) == 0) {
                e_source_extension_property_unlock (E_SOURCE_EXTENSION (extension));
                return;
        }
@@ -974,7 +983,7 @@ e_source_mail_composition_set_language (ESourceMailComposition *extension,
 
        e_source_extension_property_lock (E_SOURCE_EXTENSION (extension));
 
-       if (g_strcmp0 (extension->priv->language, language) == 0) {
+       if (e_util_strcmp0 (extension->priv->language, language) == 0) {
                e_source_extension_property_unlock (E_SOURCE_EXTENSION (extension));
                return;
        }
diff --git a/src/libedataserver/e-source-mail-identity.c b/src/libedataserver/e-source-mail-identity.c
index 919052693..61bd241d1 100644
--- a/src/libedataserver/e-source-mail-identity.c
+++ b/src/libedataserver/e-source-mail-identity.c
@@ -215,6 +215,7 @@ e_source_mail_identity_class_init (ESourceMailIdentityClass *class)
                        NULL,
                        G_PARAM_READWRITE |
                        G_PARAM_CONSTRUCT |
+                       G_PARAM_EXPLICIT_NOTIFY |
                        G_PARAM_STATIC_STRINGS |
                        E_SOURCE_PARAM_SETTING));
 
@@ -228,6 +229,7 @@ e_source_mail_identity_class_init (ESourceMailIdentityClass *class)
                        NULL,
                        G_PARAM_READWRITE |
                        G_PARAM_CONSTRUCT |
+                       G_PARAM_EXPLICIT_NOTIFY |
                        G_PARAM_STATIC_STRINGS |
                        E_SOURCE_PARAM_SETTING));
 
@@ -241,6 +243,7 @@ e_source_mail_identity_class_init (ESourceMailIdentityClass *class)
                        NULL,
                        G_PARAM_READWRITE |
                        G_PARAM_CONSTRUCT |
+                       G_PARAM_EXPLICIT_NOTIFY |
                        G_PARAM_STATIC_STRINGS |
                        E_SOURCE_PARAM_SETTING));
 
@@ -254,6 +257,7 @@ e_source_mail_identity_class_init (ESourceMailIdentityClass *class)
                        NULL,
                        G_PARAM_READWRITE |
                        G_PARAM_CONSTRUCT |
+                       G_PARAM_EXPLICIT_NOTIFY |
                        G_PARAM_STATIC_STRINGS |
                        E_SOURCE_PARAM_SETTING));
 
@@ -267,6 +271,7 @@ e_source_mail_identity_class_init (ESourceMailIdentityClass *class)
                        NULL,
                        G_PARAM_READWRITE |
                        G_PARAM_CONSTRUCT |
+                       G_PARAM_EXPLICIT_NOTIFY |
                        G_PARAM_STATIC_STRINGS |
                        E_SOURCE_PARAM_SETTING));
 
@@ -280,6 +285,7 @@ e_source_mail_identity_class_init (ESourceMailIdentityClass *class)
                        "none",
                        G_PARAM_READWRITE |
                        G_PARAM_CONSTRUCT |
+                       G_PARAM_EXPLICIT_NOTIFY |
                        G_PARAM_STATIC_STRINGS |
                        E_SOURCE_PARAM_SETTING));
 }
@@ -361,7 +367,7 @@ e_source_mail_identity_set_address (ESourceMailIdentity *extension,
 
        e_source_extension_property_lock (E_SOURCE_EXTENSION (extension));
 
-       if (g_strcmp0 (extension->priv->address, address) == 0) {
+       if (e_util_strcmp0 (extension->priv->address, address) == 0) {
                e_source_extension_property_unlock (E_SOURCE_EXTENSION (extension));
                return;
        }
@@ -443,8 +449,7 @@ e_source_mail_identity_set_name (ESourceMailIdentity *extension,
 
        e_source_extension_property_lock (E_SOURCE_EXTENSION (extension));
 
-       if (extension->priv->name != NULL &&
-           g_strcmp0 (extension->priv->name, name) == 0) {
+       if (e_util_strcmp0 (extension->priv->name, name) == 0) {
                e_source_extension_property_unlock (E_SOURCE_EXTENSION (extension));
                return;
        }
@@ -527,7 +532,7 @@ e_source_mail_identity_set_organization (ESourceMailIdentity *extension,
 
        e_source_extension_property_lock (E_SOURCE_EXTENSION (extension));
 
-       if (g_strcmp0 (extension->priv->organization, organization) == 0) {
+       if (e_util_strcmp0 (extension->priv->organization, organization) == 0) {
                e_source_extension_property_unlock (E_SOURCE_EXTENSION (extension));
                return;
        }
@@ -612,7 +617,7 @@ e_source_mail_identity_set_reply_to (ESourceMailIdentity *extension,
 
        e_source_extension_property_lock (E_SOURCE_EXTENSION (extension));
 
-       if (g_strcmp0 (extension->priv->reply_to, reply_to) == 0) {
+       if (e_util_strcmp0 (extension->priv->reply_to, reply_to) == 0) {
                e_source_extension_property_unlock (E_SOURCE_EXTENSION (extension));
                return;
        }
@@ -792,7 +797,7 @@ e_source_mail_identity_set_aliases (ESourceMailIdentity *extension,
 
        e_source_extension_property_lock (E_SOURCE_EXTENSION (extension));
 
-       if (g_strcmp0 (extension->priv->aliases, aliases) == 0) {
+       if (e_util_strcmp0 (extension->priv->aliases, aliases) == 0) {
                e_source_extension_property_unlock (E_SOURCE_EXTENSION (extension));
                return;
        }
diff --git a/src/libedataserver/e-source-mail-signature.c b/src/libedataserver/e-source-mail-signature.c
index 3807fcdf2..ded4d2e55 100644
--- a/src/libedataserver/e-source-mail-signature.c
+++ b/src/libedataserver/e-source-mail-signature.c
@@ -224,6 +224,7 @@ e_source_mail_signature_class_init (ESourceMailSignatureClass *class)
                        NULL,
                        G_PARAM_READWRITE |
                        G_PARAM_CONSTRUCT |
+                       G_PARAM_EXPLICIT_NOTIFY |
                        G_PARAM_STATIC_STRINGS |
                        E_SOURCE_PARAM_SETTING));
 }
@@ -335,7 +336,7 @@ e_source_mail_signature_set_mime_type (ESourceMailSignature *extension,
 
        e_source_extension_property_lock (E_SOURCE_EXTENSION (extension));
 
-       if (g_strcmp0 (extension->priv->mime_type, mime_type) == 0) {
+       if (e_util_strcmp0 (extension->priv->mime_type, mime_type) == 0) {
                e_source_extension_property_unlock (E_SOURCE_EXTENSION (extension));
                return;
        }
diff --git a/src/libedataserver/e-source-mail-submission.c b/src/libedataserver/e-source-mail-submission.c
index 53686c86b..954367b28 100644
--- a/src/libedataserver/e-source-mail-submission.c
+++ b/src/libedataserver/e-source-mail-submission.c
@@ -178,6 +178,7 @@ e_source_mail_submission_class_init (ESourceMailSubmissionClass *class)
                        NULL,
                        G_PARAM_READWRITE |
                        G_PARAM_CONSTRUCT |
+                       G_PARAM_EXPLICIT_NOTIFY |
                        G_PARAM_STATIC_STRINGS |
                        E_SOURCE_PARAM_SETTING));
 
@@ -191,6 +192,7 @@ e_source_mail_submission_class_init (ESourceMailSubmissionClass *class)
                        TRUE,
                        G_PARAM_READWRITE |
                        G_PARAM_CONSTRUCT |
+                       G_PARAM_EXPLICIT_NOTIFY |
                        G_PARAM_STATIC_STRINGS |
                        E_SOURCE_PARAM_SETTING));
 
@@ -204,6 +206,7 @@ e_source_mail_submission_class_init (ESourceMailSubmissionClass *class)
                        NULL,
                        G_PARAM_READWRITE |
                        G_PARAM_CONSTRUCT |
+                       G_PARAM_EXPLICIT_NOTIFY |
                        G_PARAM_STATIC_STRINGS |
                        E_SOURCE_PARAM_SETTING));
 
@@ -218,6 +221,7 @@ e_source_mail_submission_class_init (ESourceMailSubmissionClass *class)
                        FALSE,
                        G_PARAM_READWRITE |
                        G_PARAM_CONSTRUCT |
+                       G_PARAM_EXPLICIT_NOTIFY |
                        G_PARAM_STATIC_STRINGS |
                        E_SOURCE_PARAM_SETTING));
 }
@@ -301,7 +305,7 @@ e_source_mail_submission_set_sent_folder (ESourceMailSubmission *extension,
 
        e_source_extension_property_lock (E_SOURCE_EXTENSION (extension));
 
-       if (g_strcmp0 (extension->priv->sent_folder, sent_folder) == 0) {
+       if (e_util_strcmp0 (extension->priv->sent_folder, sent_folder) == 0) {
                e_source_extension_property_unlock (E_SOURCE_EXTENSION (extension));
                return;
        }
diff --git a/src/libedataserver/e-source-mdn.c b/src/libedataserver/e-source-mdn.c
index 5bcd229d1..1cdf27c3a 100644
--- a/src/libedataserver/e-source-mdn.c
+++ b/src/libedataserver/e-source-mdn.c
@@ -118,6 +118,7 @@ e_source_mdn_class_init (ESourceMDNClass *class)
                        E_MDN_RESPONSE_POLICY_ASK,
                        G_PARAM_READWRITE |
                        G_PARAM_CONSTRUCT |
+                       G_PARAM_EXPLICIT_NOTIFY |
                        G_PARAM_STATIC_STRINGS |
                        E_SOURCE_PARAM_SETTING));
 }
diff --git a/src/libedataserver/e-source-offline.c b/src/libedataserver/e-source-offline.c
index 5361dbcc8..a974ff5db 100644
--- a/src/libedataserver/e-source-offline.c
+++ b/src/libedataserver/e-source-offline.c
@@ -114,6 +114,7 @@ e_source_offline_class_init (ESourceOfflineClass *class)
                        FALSE,
                        G_PARAM_READWRITE |
                        G_PARAM_CONSTRUCT |
+                       G_PARAM_EXPLICIT_NOTIFY |
                        G_PARAM_STATIC_STRINGS |
                        E_SOURCE_PARAM_SETTING));
 }
diff --git a/src/libedataserver/e-source-openpgp.c b/src/libedataserver/e-source-openpgp.c
index ddf7cf1b9..59678ce5a 100644
--- a/src/libedataserver/e-source-openpgp.c
+++ b/src/libedataserver/e-source-openpgp.c
@@ -222,6 +222,7 @@ e_source_openpgp_class_init (ESourceOpenPGPClass *class)
                        FALSE,
                        G_PARAM_READWRITE |
                        G_PARAM_CONSTRUCT |
+                       G_PARAM_EXPLICIT_NOTIFY |
                        G_PARAM_STATIC_STRINGS |
                        E_SOURCE_PARAM_SETTING));
 
@@ -235,6 +236,7 @@ e_source_openpgp_class_init (ESourceOpenPGPClass *class)
                        TRUE,
                        G_PARAM_READWRITE |
                        G_PARAM_CONSTRUCT |
+                       G_PARAM_EXPLICIT_NOTIFY |
                        G_PARAM_STATIC_STRINGS |
                        E_SOURCE_PARAM_SETTING));
 
@@ -248,6 +250,7 @@ e_source_openpgp_class_init (ESourceOpenPGPClass *class)
                        NULL,
                        G_PARAM_READWRITE |
                        G_PARAM_CONSTRUCT |
+                       G_PARAM_EXPLICIT_NOTIFY |
                        G_PARAM_STATIC_STRINGS |
                        E_SOURCE_PARAM_SETTING));
 
@@ -261,6 +264,7 @@ e_source_openpgp_class_init (ESourceOpenPGPClass *class)
                        NULL,
                        G_PARAM_READWRITE |
                        G_PARAM_CONSTRUCT |
+                       G_PARAM_EXPLICIT_NOTIFY |
                        G_PARAM_STATIC_STRINGS |
                        E_SOURCE_PARAM_SETTING));
 
@@ -274,6 +278,7 @@ e_source_openpgp_class_init (ESourceOpenPGPClass *class)
                        FALSE,
                        G_PARAM_READWRITE |
                        G_PARAM_CONSTRUCT |
+                       G_PARAM_EXPLICIT_NOTIFY |
                        G_PARAM_STATIC_STRINGS |
                        E_SOURCE_PARAM_SETTING));
 
@@ -287,6 +292,7 @@ e_source_openpgp_class_init (ESourceOpenPGPClass *class)
                        FALSE,
                        G_PARAM_READWRITE |
                        G_PARAM_CONSTRUCT |
+                       G_PARAM_EXPLICIT_NOTIFY |
                        G_PARAM_STATIC_STRINGS |
                        E_SOURCE_PARAM_SETTING));
 
@@ -300,6 +306,7 @@ e_source_openpgp_class_init (ESourceOpenPGPClass *class)
                        FALSE,
                        G_PARAM_READWRITE |
                        G_PARAM_CONSTRUCT |
+                       G_PARAM_EXPLICIT_NOTIFY |
                        G_PARAM_STATIC_STRINGS |
                        E_SOURCE_PARAM_SETTING));
 }
@@ -464,7 +471,7 @@ e_source_openpgp_set_key_id (ESourceOpenPGP *extension,
 
        e_source_extension_property_lock (E_SOURCE_EXTENSION (extension));
 
-       if (g_strcmp0 (extension->priv->key_id, key_id) == 0) {
+       if (e_util_strcmp0 (extension->priv->key_id, key_id) == 0) {
                e_source_extension_property_unlock (E_SOURCE_EXTENSION (extension));
                return;
        }
@@ -549,7 +556,7 @@ e_source_openpgp_set_signing_algorithm (ESourceOpenPGP *extension,
 
        e_source_extension_property_lock (E_SOURCE_EXTENSION (extension));
 
-       if (g_strcmp0 (extension->priv->signing_algorithm, signing_algorithm) == 0) {
+       if (e_util_strcmp0 (extension->priv->signing_algorithm, signing_algorithm) == 0) {
                e_source_extension_property_unlock (E_SOURCE_EXTENSION (extension));
                return;
        }
diff --git a/src/libedataserver/e-source-proxy.c b/src/libedataserver/e-source-proxy.c
index 3003f948b..93cdfb255 100644
--- a/src/libedataserver/e-source-proxy.c
+++ b/src/libedataserver/e-source-proxy.c
@@ -460,6 +460,7 @@ e_source_proxy_class_init (ESourceProxyClass *class)
                        NULL,
                        G_PARAM_READWRITE |
                        G_PARAM_CONSTRUCT |
+                       G_PARAM_EXPLICIT_NOTIFY |
                        G_PARAM_STATIC_STRINGS |
                        E_SOURCE_PARAM_SETTING));
 
@@ -473,6 +474,7 @@ e_source_proxy_class_init (ESourceProxyClass *class)
                        NULL,
                        G_PARAM_READWRITE |
                        G_PARAM_CONSTRUCT |
+                       G_PARAM_EXPLICIT_NOTIFY |
                        G_PARAM_STATIC_STRINGS |
                        E_SOURCE_PARAM_SETTING));
 
@@ -486,6 +488,7 @@ e_source_proxy_class_init (ESourceProxyClass *class)
                        0, G_MAXUINT16, 0,
                        G_PARAM_READWRITE |
                        G_PARAM_CONSTRUCT |
+                       G_PARAM_EXPLICIT_NOTIFY |
                        G_PARAM_STATIC_STRINGS |
                        E_SOURCE_PARAM_SETTING));
 
@@ -499,6 +502,7 @@ e_source_proxy_class_init (ESourceProxyClass *class)
                        NULL,
                        G_PARAM_READWRITE |
                        G_PARAM_CONSTRUCT |
+                       G_PARAM_EXPLICIT_NOTIFY |
                        G_PARAM_STATIC_STRINGS |
                        E_SOURCE_PARAM_SETTING));
 
@@ -512,6 +516,7 @@ e_source_proxy_class_init (ESourceProxyClass *class)
                        NULL,
                        G_PARAM_READWRITE |
                        G_PARAM_CONSTRUCT |
+                       G_PARAM_EXPLICIT_NOTIFY |
                        G_PARAM_STATIC_STRINGS |
                        E_SOURCE_PARAM_SETTING));
 
@@ -525,6 +530,7 @@ e_source_proxy_class_init (ESourceProxyClass *class)
                        NULL,
                        G_PARAM_READWRITE |
                        G_PARAM_CONSTRUCT |
+                       G_PARAM_EXPLICIT_NOTIFY |
                        G_PARAM_STATIC_STRINGS |
                        E_SOURCE_PARAM_SETTING));
 
@@ -538,6 +544,7 @@ e_source_proxy_class_init (ESourceProxyClass *class)
                        0, G_MAXUINT16, 8080,
                        G_PARAM_READWRITE |
                        G_PARAM_CONSTRUCT |
+                       G_PARAM_EXPLICIT_NOTIFY |
                        G_PARAM_STATIC_STRINGS |
                        E_SOURCE_PARAM_SETTING));
 
@@ -552,6 +559,7 @@ e_source_proxy_class_init (ESourceProxyClass *class)
                        FALSE,
                        G_PARAM_READWRITE |
                        G_PARAM_CONSTRUCT |
+                       G_PARAM_EXPLICIT_NOTIFY |
                        G_PARAM_STATIC_STRINGS |
                        E_SOURCE_PARAM_SETTING));
 
@@ -565,6 +573,7 @@ e_source_proxy_class_init (ESourceProxyClass *class)
                        NULL,
                        G_PARAM_READWRITE |
                        G_PARAM_CONSTRUCT |
+                       G_PARAM_EXPLICIT_NOTIFY |
                        G_PARAM_STATIC_STRINGS |
                        E_SOURCE_PARAM_SETTING));
 
@@ -578,6 +587,7 @@ e_source_proxy_class_init (ESourceProxyClass *class)
                        0, G_MAXUINT16, 0,
                        G_PARAM_READWRITE |
                        G_PARAM_CONSTRUCT |
+                       G_PARAM_EXPLICIT_NOTIFY |
                        G_PARAM_STATIC_STRINGS |
                        E_SOURCE_PARAM_SETTING));
 
@@ -591,6 +601,7 @@ e_source_proxy_class_init (ESourceProxyClass *class)
                        G_TYPE_STRV,
                        G_PARAM_READWRITE |
                        G_PARAM_CONSTRUCT |
+                       G_PARAM_EXPLICIT_NOTIFY |
                        G_PARAM_STATIC_STRINGS |
                        E_SOURCE_PARAM_SETTING));
 
@@ -605,6 +616,7 @@ e_source_proxy_class_init (ESourceProxyClass *class)
                        E_PROXY_METHOD_DEFAULT,
                        G_PARAM_READWRITE |
                        G_PARAM_CONSTRUCT |
+                       G_PARAM_EXPLICIT_NOTIFY |
                        G_PARAM_STATIC_STRINGS |
                        E_SOURCE_PARAM_SETTING));
 
@@ -618,6 +630,7 @@ e_source_proxy_class_init (ESourceProxyClass *class)
                        NULL,
                        G_PARAM_READWRITE |
                        G_PARAM_CONSTRUCT |
+                       G_PARAM_EXPLICIT_NOTIFY |
                        G_PARAM_STATIC_STRINGS |
                        E_SOURCE_PARAM_SETTING));
 
@@ -631,6 +644,7 @@ e_source_proxy_class_init (ESourceProxyClass *class)
                        0, G_MAXUINT16, 0,
                        G_PARAM_READWRITE |
                        G_PARAM_CONSTRUCT |
+                       G_PARAM_EXPLICIT_NOTIFY |
                        G_PARAM_STATIC_STRINGS |
                        E_SOURCE_PARAM_SETTING));
 }
@@ -760,7 +774,7 @@ e_source_proxy_set_autoconfig_url (ESourceProxy *extension,
 
        e_source_extension_property_lock (E_SOURCE_EXTENSION (extension));
 
-       if (g_strcmp0 (autoconfig_url, extension->priv->autoconfig_url) == 0) {
+       if (e_util_strcmp0 (autoconfig_url, extension->priv->autoconfig_url) == 0) {
                e_source_extension_property_unlock (E_SOURCE_EXTENSION (extension));
                return;
        }
@@ -941,7 +955,7 @@ e_source_proxy_set_ftp_host (ESourceProxy *extension,
 
        e_source_extension_property_lock (E_SOURCE_EXTENSION (extension));
 
-       if (g_strcmp0 (ftp_host, extension->priv->ftp_host) == 0) {
+       if (e_util_strcmp0 (ftp_host, extension->priv->ftp_host) == 0) {
                e_source_extension_property_unlock (E_SOURCE_EXTENSION (extension));
                return;
        }
@@ -1065,7 +1079,7 @@ e_source_proxy_set_http_host (ESourceProxy *extension,
 
        e_source_extension_property_lock (E_SOURCE_EXTENSION (extension));
 
-       if (g_strcmp0 (http_host, extension->priv->http_host) == 0) {
+       if (e_util_strcmp0 (http_host, extension->priv->http_host) == 0) {
                e_source_extension_property_unlock (E_SOURCE_EXTENSION (extension));
                return;
        }
@@ -1240,7 +1254,7 @@ e_source_proxy_set_http_auth_user (ESourceProxy *extension,
 
        e_source_extension_property_lock (E_SOURCE_EXTENSION (extension));
 
-       if (g_strcmp0 (http_auth_user, extension->priv->http_auth_user) == 0) {
+       if (e_util_strcmp0 (http_auth_user, extension->priv->http_auth_user) == 0) {
                e_source_extension_property_unlock (E_SOURCE_EXTENSION (extension));
                return;
        }
@@ -1321,7 +1335,7 @@ e_source_proxy_set_http_auth_password (ESourceProxy *extension,
 
        e_source_extension_property_lock (E_SOURCE_EXTENSION (extension));
 
-       if (g_strcmp0 (http_auth_password, extension->priv->http_auth_password) == 0) {
+       if (e_util_strcmp0 (http_auth_password, extension->priv->http_auth_password) == 0) {
                e_source_extension_property_unlock (E_SOURCE_EXTENSION (extension));
                return;
        }
@@ -1402,7 +1416,7 @@ e_source_proxy_set_https_host (ESourceProxy *extension,
 
        e_source_extension_property_lock (E_SOURCE_EXTENSION (extension));
 
-       if (g_strcmp0 (https_host, extension->priv->https_host) == 0) {
+       if (e_util_strcmp0 (https_host, extension->priv->https_host) == 0) {
                e_source_extension_property_unlock (E_SOURCE_EXTENSION (extension));
                return;
        }
@@ -1526,7 +1540,7 @@ e_source_proxy_set_socks_host (ESourceProxy *extension,
 
        e_source_extension_property_lock (E_SOURCE_EXTENSION (extension));
 
-       if (g_strcmp0 (socks_host, extension->priv->socks_host) == 0) {
+       if (e_util_strcmp0 (socks_host, extension->priv->socks_host) == 0) {
                e_source_extension_property_unlock (E_SOURCE_EXTENSION (extension));
                return;
        }
diff --git a/src/libedataserver/e-source-refresh.c b/src/libedataserver/e-source-refresh.c
index 253ee03d1..b7c1a029b 100644
--- a/src/libedataserver/e-source-refresh.c
+++ b/src/libedataserver/e-source-refresh.c
@@ -351,6 +351,7 @@ e_source_refresh_class_init (ESourceRefreshClass *class)
                        TRUE,
                        G_PARAM_READWRITE |
                        G_PARAM_CONSTRUCT |
+                       G_PARAM_EXPLICIT_NOTIFY |
                        G_PARAM_STATIC_STRINGS |
                        E_SOURCE_PARAM_SETTING));
 
@@ -364,6 +365,7 @@ e_source_refresh_class_init (ESourceRefreshClass *class)
                        0, G_MAXUINT, 60,
                        G_PARAM_READWRITE |
                        G_PARAM_CONSTRUCT |
+                       G_PARAM_EXPLICIT_NOTIFY |
                        G_PARAM_STATIC_STRINGS |
                        E_SOURCE_PARAM_SETTING));
 }
diff --git a/src/libedataserver/e-source-registry.c b/src/libedataserver/e-source-registry.c
index 9c166dbaf..979e70974 100644
--- a/src/libedataserver/e-source-registry.c
+++ b/src/libedataserver/e-source-registry.c
@@ -1505,6 +1505,7 @@ e_source_registry_class_init (ESourceRegistryClass *class)
                        "The default address book ESource",
                        E_TYPE_SOURCE,
                        G_PARAM_READWRITE |
+                       G_PARAM_EXPLICIT_NOTIFY |
                        G_PARAM_STATIC_STRINGS));
 
        /**
@@ -1521,6 +1522,7 @@ e_source_registry_class_init (ESourceRegistryClass *class)
                        "The default calendar ESource",
                        E_TYPE_SOURCE,
                        G_PARAM_READWRITE |
+                       G_PARAM_EXPLICIT_NOTIFY |
                        G_PARAM_STATIC_STRINGS));
 
        /**
@@ -1537,6 +1539,7 @@ e_source_registry_class_init (ESourceRegistryClass *class)
                        "The default mail account ESource",
                        E_TYPE_SOURCE,
                        G_PARAM_READWRITE |
+                       G_PARAM_EXPLICIT_NOTIFY |
                        G_PARAM_STATIC_STRINGS));
 
        /**
@@ -1553,6 +1556,7 @@ e_source_registry_class_init (ESourceRegistryClass *class)
                        "The default mail identity ESource",
                        E_TYPE_SOURCE,
                        G_PARAM_READWRITE |
+                       G_PARAM_EXPLICIT_NOTIFY |
                        G_PARAM_STATIC_STRINGS));
 
        /**
@@ -1569,6 +1573,7 @@ e_source_registry_class_init (ESourceRegistryClass *class)
                        "The default memo list ESource",
                        E_TYPE_SOURCE,
                        G_PARAM_READWRITE |
+                       G_PARAM_EXPLICIT_NOTIFY |
                        G_PARAM_STATIC_STRINGS));
 
        /**
@@ -1585,6 +1590,7 @@ e_source_registry_class_init (ESourceRegistryClass *class)
                        "The default task list ESource",
                        E_TYPE_SOURCE,
                        G_PARAM_READWRITE |
+                       G_PARAM_EXPLICIT_NOTIFY |
                        G_PARAM_STATIC_STRINGS));
 
        /**
diff --git a/src/libedataserver/e-source-resource.c b/src/libedataserver/e-source-resource.c
index ea9bd63cb..669a59893 100644
--- a/src/libedataserver/e-source-resource.c
+++ b/src/libedataserver/e-source-resource.c
@@ -136,6 +136,7 @@ e_source_resource_class_init (ESourceResourceClass *class)
                        NULL,
                        G_PARAM_READWRITE |
                        G_PARAM_CONSTRUCT |
+                       G_PARAM_EXPLICIT_NOTIFY |
                        G_PARAM_STATIC_STRINGS |
                        E_SOURCE_PARAM_SETTING));
 }
@@ -218,7 +219,7 @@ e_source_resource_set_identity (ESourceResource *extension,
 
        e_source_extension_property_lock (E_SOURCE_EXTENSION (extension));
 
-       if (g_strcmp0 (extension->priv->identity, identity) == 0) {
+       if (e_util_strcmp0 (extension->priv->identity, identity) == 0) {
                e_source_extension_property_unlock (E_SOURCE_EXTENSION (extension));
                return;
        }
diff --git a/src/libedataserver/e-source-revision-guards.c b/src/libedataserver/e-source-revision-guards.c
index 78fe1a1bd..b7f21f605 100644
--- a/src/libedataserver/e-source-revision-guards.c
+++ b/src/libedataserver/e-source-revision-guards.c
@@ -123,6 +123,7 @@ e_source_revision_guards_class_init (ESourceRevisionGuardsClass *class)
                        FALSE,
                        G_PARAM_READWRITE |
                        G_PARAM_CONSTRUCT |
+                       G_PARAM_EXPLICIT_NOTIFY |
                        E_SOURCE_PARAM_SETTING));
 }
 
diff --git a/src/libedataserver/e-source-security.c b/src/libedataserver/e-source-security.c
index 8e2366e87..de61428f0 100644
--- a/src/libedataserver/e-source-security.c
+++ b/src/libedataserver/e-source-security.c
@@ -146,6 +146,7 @@ e_source_security_class_init (ESourceSecurityClass *class)
                        "none",
                        G_PARAM_READWRITE |
                        G_PARAM_CONSTRUCT |
+                       G_PARAM_EXPLICIT_NOTIFY |
                        G_PARAM_STATIC_STRINGS |
                        E_SOURCE_PARAM_SETTING));
 
@@ -158,6 +159,7 @@ e_source_security_class_init (ESourceSecurityClass *class)
                        "Secure the network connection",
                        FALSE,
                        G_PARAM_READWRITE |
+                       G_PARAM_EXPLICIT_NOTIFY |
                        G_PARAM_STATIC_STRINGS));
 }
 
@@ -243,8 +245,7 @@ e_source_security_set_method (ESourceSecurity *extension,
 
        e_source_extension_property_lock (E_SOURCE_EXTENSION (extension));
 
-       if (extension->priv->method &&
-           g_strcmp0 (extension->priv->method, method) == 0) {
+       if (e_util_strcmp0 (extension->priv->method, method) == 0) {
                e_source_extension_property_unlock (E_SOURCE_EXTENSION (extension));
                return;
        }
diff --git a/src/libedataserver/e-source-selectable.c b/src/libedataserver/e-source-selectable.c
index a9fb78a27..9acf5dc83 100644
--- a/src/libedataserver/e-source-selectable.c
+++ b/src/libedataserver/e-source-selectable.c
@@ -135,6 +135,7 @@ e_source_selectable_class_init (ESourceSelectableClass *class)
                        "#becedd",
                        G_PARAM_READWRITE |
                        G_PARAM_CONSTRUCT |
+                       G_PARAM_EXPLICIT_NOTIFY |
                        G_PARAM_STATIC_STRINGS |
                        E_SOURCE_PARAM_SETTING));
 
@@ -148,6 +149,7 @@ e_source_selectable_class_init (ESourceSelectableClass *class)
                        TRUE,
                        G_PARAM_READWRITE |
                        G_PARAM_CONSTRUCT |
+                       G_PARAM_EXPLICIT_NOTIFY |
                        G_PARAM_STATIC_STRINGS |
                        E_SOURCE_PARAM_SETTING));
 }
@@ -232,7 +234,7 @@ e_source_selectable_set_color (ESourceSelectable *extension,
 
        e_source_extension_property_lock (E_SOURCE_EXTENSION (extension));
 
-       if (g_strcmp0 (extension->priv->color, color) == 0) {
+       if (e_util_strcmp0 (extension->priv->color, color) == 0) {
                e_source_extension_property_unlock (E_SOURCE_EXTENSION (extension));
                return;
        }
diff --git a/src/libedataserver/e-source-smime.c b/src/libedataserver/e-source-smime.c
index 2b155ea1b..3b60da489 100644
--- a/src/libedataserver/e-source-smime.c
+++ b/src/libedataserver/e-source-smime.c
@@ -208,6 +208,7 @@ e_source_smime_class_init (ESourceSMIMEClass *class)
                        NULL,
                        G_PARAM_READWRITE |
                        G_PARAM_CONSTRUCT |
+                       G_PARAM_EXPLICIT_NOTIFY |
                        G_PARAM_STATIC_STRINGS |
                        E_SOURCE_PARAM_SETTING));
 
@@ -221,6 +222,7 @@ e_source_smime_class_init (ESourceSMIMEClass *class)
                        FALSE,
                        G_PARAM_READWRITE |
                        G_PARAM_CONSTRUCT |
+                       G_PARAM_EXPLICIT_NOTIFY |
                        G_PARAM_STATIC_STRINGS |
                        E_SOURCE_PARAM_SETTING));
 
@@ -234,6 +236,7 @@ e_source_smime_class_init (ESourceSMIMEClass *class)
                        TRUE,
                        G_PARAM_READWRITE |
                        G_PARAM_CONSTRUCT |
+                       G_PARAM_EXPLICIT_NOTIFY |
                        G_PARAM_STATIC_STRINGS |
                        E_SOURCE_PARAM_SETTING));
 
@@ -247,6 +250,7 @@ e_source_smime_class_init (ESourceSMIMEClass *class)
                        NULL,
                        G_PARAM_READWRITE |
                        G_PARAM_CONSTRUCT |
+                       G_PARAM_EXPLICIT_NOTIFY |
                        G_PARAM_STATIC_STRINGS |
                        E_SOURCE_PARAM_SETTING));
 
@@ -260,6 +264,7 @@ e_source_smime_class_init (ESourceSMIMEClass *class)
                        NULL,
                        G_PARAM_READWRITE |
                        G_PARAM_CONSTRUCT |
+                       G_PARAM_EXPLICIT_NOTIFY |
                        G_PARAM_STATIC_STRINGS |
                        E_SOURCE_PARAM_SETTING));
 
@@ -273,6 +278,7 @@ e_source_smime_class_init (ESourceSMIMEClass *class)
                        FALSE,
                        G_PARAM_READWRITE |
                        G_PARAM_CONSTRUCT |
+                       G_PARAM_EXPLICIT_NOTIFY |
                        G_PARAM_STATIC_STRINGS |
                        E_SOURCE_PARAM_SETTING));
 }
@@ -527,7 +533,7 @@ e_source_smime_set_signing_algorithm (ESourceSMIME *extension,
 
        e_source_extension_property_lock (E_SOURCE_EXTENSION (extension));
 
-       if (g_strcmp0 (extension->priv->signing_algorithm, signing_algorithm) == 0) {
+       if (e_util_strcmp0 (extension->priv->signing_algorithm, signing_algorithm) == 0) {
                e_source_extension_property_unlock (E_SOURCE_EXTENSION (extension));
                return;
        }
diff --git a/src/libedataserver/e-source-uoa.c b/src/libedataserver/e-source-uoa.c
index 28faab131..6aeab764f 100644
--- a/src/libedataserver/e-source-uoa.c
+++ b/src/libedataserver/e-source-uoa.c
@@ -117,6 +117,7 @@ e_source_uoa_class_init (ESourceUoaClass *class)
                        0, G_MAXUINT, 0,
                        G_PARAM_READWRITE |
                        G_PARAM_CONSTRUCT |
+                       G_PARAM_EXPLICIT_NOTIFY |
                        G_PARAM_STATIC_STRINGS |
                        E_SOURCE_PARAM_SETTING));
 }
diff --git a/src/libedataserver/e-source-weather.c b/src/libedataserver/e-source-weather.c
index a0e4fa495..c164480f6 100644
--- a/src/libedataserver/e-source-weather.c
+++ b/src/libedataserver/e-source-weather.c
@@ -127,6 +127,7 @@ e_source_weather_class_init (ESourceWeatherClass *class)
                        NULL,
                        G_PARAM_READWRITE |
                        G_PARAM_CONSTRUCT |
+                       G_PARAM_EXPLICIT_NOTIFY |
                        E_SOURCE_PARAM_SETTING));
 
        g_object_class_install_property (
@@ -140,6 +141,7 @@ e_source_weather_class_init (ESourceWeatherClass *class)
                        E_SOURCE_WEATHER_UNITS_CENTIGRADE,
                        G_PARAM_READWRITE |
                        G_PARAM_CONSTRUCT |
+                       G_PARAM_EXPLICIT_NOTIFY |
                        E_SOURCE_PARAM_SETTING));
 }
 
@@ -183,7 +185,7 @@ e_source_weather_set_location (ESourceWeather *extension,
 
        e_source_extension_property_lock (E_SOURCE_EXTENSION (extension));
 
-       if (g_strcmp0 (extension->priv->location, location) == 0) {
+       if (e_util_strcmp0 (extension->priv->location, location) == 0) {
                e_source_extension_property_unlock (E_SOURCE_EXTENSION (extension));
                return;
        }
diff --git a/src/libedataserver/e-source-webdav.c b/src/libedataserver/e-source-webdav.c
index 1f12215ac..7f98e1756 100644
--- a/src/libedataserver/e-source-webdav.c
+++ b/src/libedataserver/e-source-webdav.c
@@ -513,6 +513,7 @@ e_source_webdav_class_init (ESourceWebdavClass *class)
                        FALSE,
                        G_PARAM_READWRITE |
                        G_PARAM_CONSTRUCT |
+                       G_PARAM_EXPLICIT_NOTIFY |
                        E_SOURCE_PARAM_SETTING));
 
        g_object_class_install_property (
@@ -526,6 +527,7 @@ e_source_webdav_class_init (ESourceWebdavClass *class)
                        FALSE,
                        G_PARAM_READWRITE |
                        G_PARAM_CONSTRUCT |
+                       G_PARAM_EXPLICIT_NOTIFY |
                        E_SOURCE_PARAM_SETTING));
 
        g_object_class_install_property (
@@ -538,6 +540,7 @@ e_source_webdav_class_init (ESourceWebdavClass *class)
                        "",
                        G_PARAM_READWRITE |
                        G_PARAM_CONSTRUCT |
+                       G_PARAM_EXPLICIT_NOTIFY |
                        E_SOURCE_PARAM_SETTING));
 
        g_object_class_install_property (
@@ -550,6 +553,7 @@ e_source_webdav_class_init (ESourceWebdavClass *class)
                        "",
                        G_PARAM_READWRITE |
                        G_PARAM_CONSTRUCT |
+                       G_PARAM_EXPLICIT_NOTIFY |
                        E_SOURCE_PARAM_SETTING));
 
        g_object_class_install_property (
@@ -562,6 +566,7 @@ e_source_webdav_class_init (ESourceWebdavClass *class)
                        "",
                        G_PARAM_READWRITE |
                        G_PARAM_CONSTRUCT |
+                       G_PARAM_EXPLICIT_NOTIFY |
                        E_SOURCE_PARAM_SETTING));
 
        g_object_class_install_property (
@@ -574,6 +579,7 @@ e_source_webdav_class_init (ESourceWebdavClass *class)
                        NULL,
                        G_PARAM_READWRITE |
                        G_PARAM_CONSTRUCT |
+                       G_PARAM_EXPLICIT_NOTIFY |
                        E_SOURCE_PARAM_SETTING));
 
        g_object_class_install_property (
@@ -586,6 +592,7 @@ e_source_webdav_class_init (ESourceWebdavClass *class)
                        NULL,
                        G_PARAM_READWRITE |
                        G_PARAM_CONSTRUCT |
+                       G_PARAM_EXPLICIT_NOTIFY |
                        E_SOURCE_PARAM_SETTING));
 
        g_object_class_install_property (
@@ -596,7 +603,8 @@ e_source_webdav_class_init (ESourceWebdavClass *class)
                        "SoupURI",
                        "WebDAV service as a SoupURI",
                        SOUP_TYPE_URI,
-                       G_PARAM_READWRITE));
+                       G_PARAM_READWRITE |
+                       G_PARAM_EXPLICIT_NOTIFY));
 
        g_object_class_install_property (
                object_class,
@@ -608,6 +616,7 @@ e_source_webdav_class_init (ESourceWebdavClass *class)
                        NULL,
                        G_PARAM_READWRITE |
                        G_PARAM_CONSTRUCT |
+                       G_PARAM_EXPLICIT_NOTIFY |
                        E_SOURCE_PARAM_SETTING));
 }
 
@@ -798,7 +807,7 @@ e_source_webdav_set_display_name (ESourceWebdav *extension,
 
        e_source_extension_property_lock (E_SOURCE_EXTENSION (extension));
 
-       if (g_strcmp0 (extension->priv->display_name, display_name) == 0) {
+       if (e_util_strcmp0 (extension->priv->display_name, display_name) == 0) {
                e_source_extension_property_unlock (E_SOURCE_EXTENSION (extension));
                return;
        }
@@ -881,7 +890,7 @@ e_source_webdav_set_color (ESourceWebdav *extension,
 
        e_source_extension_property_lock (E_SOURCE_EXTENSION (extension));
 
-       if (g_strcmp0 (extension->priv->color, color) == 0) {
+       if (e_util_strcmp0 (extension->priv->color, color) == 0) {
                e_source_extension_property_unlock (E_SOURCE_EXTENSION (extension));
                return;
        }
@@ -966,7 +975,7 @@ e_source_webdav_set_email_address (ESourceWebdav *extension,
 
        e_source_extension_property_lock (E_SOURCE_EXTENSION (extension));
 
-       if (g_strcmp0 (extension->priv->email_address, email_address) == 0) {
+       if (e_util_strcmp0 (extension->priv->email_address, email_address) == 0) {
                e_source_extension_property_unlock (E_SOURCE_EXTENSION (extension));
                return;
        }
@@ -1050,7 +1059,7 @@ e_source_webdav_set_resource_path (ESourceWebdav *extension,
 
        e_source_extension_property_lock (E_SOURCE_EXTENSION (extension));
 
-       if (g_strcmp0 (extension->priv->resource_path, resource_path) == 0) {
+       if (e_util_strcmp0 (extension->priv->resource_path, resource_path) == 0) {
                e_source_extension_property_unlock (E_SOURCE_EXTENSION (extension));
                return;
        }
@@ -1144,7 +1153,7 @@ e_source_webdav_set_resource_query (ESourceWebdav *extension,
 
        e_source_extension_property_lock (E_SOURCE_EXTENSION (extension));
 
-       if (g_strcmp0 (extension->priv->resource_query, resource_query) == 0) {
+       if (e_util_strcmp0 (extension->priv->resource_query, resource_query) == 0) {
                e_source_extension_property_unlock (E_SOURCE_EXTENSION (extension));
                return;
        }
@@ -1231,7 +1240,7 @@ e_source_webdav_set_ssl_trust (ESourceWebdav *extension,
 
        e_source_extension_property_lock (E_SOURCE_EXTENSION (extension));
 
-       if (g_strcmp0 (extension->priv->ssl_trust, ssl_trust) == 0) {
+       if (e_util_strcmp0 (extension->priv->ssl_trust, ssl_trust) == 0) {
                e_source_extension_property_unlock (E_SOURCE_EXTENSION (extension));
                return;
        }
diff --git a/src/libedataserver/e-source.c b/src/libedataserver/e-source.c
index 7177c8e33..c12f714d9 100644
--- a/src/libedataserver/e-source.c
+++ b/src/libedataserver/e-source.c
@@ -2173,6 +2173,7 @@ e_source_class_init (ESourceClass *class)
                        _("Unnamed"),
                        G_PARAM_READWRITE |
                        G_PARAM_CONSTRUCT |
+                       G_PARAM_EXPLICIT_NOTIFY |
                        G_PARAM_STATIC_STRINGS |
                        E_SOURCE_PARAM_SETTING));
 
@@ -2186,6 +2187,7 @@ e_source_class_init (ESourceClass *class)
                        TRUE,
                        G_PARAM_READWRITE |
                        G_PARAM_CONSTRUCT |
+                       G_PARAM_EXPLICIT_NOTIFY |
                        G_PARAM_STATIC_STRINGS |
                        E_SOURCE_PARAM_SETTING));
 
@@ -2211,6 +2213,7 @@ e_source_class_init (ESourceClass *class)
                        "The unique identity of the parent data source",
                        NULL,
                        G_PARAM_READWRITE |
+                       G_PARAM_EXPLICIT_NOTIFY |
                        G_PARAM_STATIC_STRINGS |
                        E_SOURCE_PARAM_SETTING));
 
@@ -2723,7 +2726,7 @@ e_source_set_parent (ESource *source,
 
        g_mutex_lock (&source->priv->property_lock);
 
-       if (g_strcmp0 (source->priv->parent, parent) == 0) {
+       if (e_util_strcmp0 (source->priv->parent, parent) == 0) {
                g_mutex_unlock (&source->priv->property_lock);
                return;
        }
diff --git a/src/libedataserverui/e-credentials-prompter.c b/src/libedataserverui/e-credentials-prompter.c
index 437f2edcf..840b7e949 100644
--- a/src/libedataserverui/e-credentials-prompter.c
+++ b/src/libedataserverui/e-credentials-prompter.c
@@ -1095,6 +1095,7 @@ e_credentials_prompter_class_init (ECredentialsPrompterClass *class)
                        TRUE,
                        G_PARAM_READWRITE |
                        G_PARAM_CONSTRUCT |
+                       G_PARAM_EXPLICIT_NOTIFY |
                        G_PARAM_STATIC_STRINGS));
 
        /**


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]