diff options
Diffstat (limited to 'e-util')
28 files changed, 374 insertions, 52 deletions
diff --git a/e-util/e-action-combo-box.c b/e-util/e-action-combo-box.c index 14731a7983..1b784b8ee8 100644 --- a/e-util/e-action-combo-box.c +++ b/e-util/e-action-combo-box.c @@ -21,6 +21,7 @@ #endif #include "e-action-combo-box.h" +#include "e-misc-utils.h" #include <glib/gi18n.h> @@ -513,13 +514,13 @@ e_action_combo_box_set_action (EActionComboBox *combo_box, if (combo_box->priv->action_group != NULL) { combo_box->priv->group_sensitive_handler_id = - g_signal_connect ( + e_signal_connect_notify ( combo_box->priv->action_group, "notify::sensitive", G_CALLBACK ( action_combo_box_action_group_notify_cb), combo_box); combo_box->priv->group_visible_handler_id = - g_signal_connect ( + e_signal_connect_notify ( combo_box->priv->action_group, "notify::visible", G_CALLBACK ( action_combo_box_action_group_notify_cb), diff --git a/e-util/e-activity-bar.c b/e-util/e-activity-bar.c index 0edf019878..f90e51df94 100644 --- a/e-util/e-activity-bar.c +++ b/e-util/e-activity-bar.c @@ -16,6 +16,7 @@ */ #include "e-activity-bar.h" +#include "e-misc-utils.h" #include <config.h> @@ -388,7 +389,7 @@ e_activity_bar_set_activity (EActivityBar *bar, G_OBJECT (activity), (GWeakNotify) activity_bar_weak_notify_cb, bar); - g_signal_connect_swapped ( + e_signal_connect_notify_swapped ( activity, "notify::state", G_CALLBACK (activity_bar_feedback), bar); diff --git a/e-util/e-activity-proxy.c b/e-util/e-activity-proxy.c index bf8ab6778b..bb21a5bc8a 100644 --- a/e-util/e-activity-proxy.c +++ b/e-util/e-activity-proxy.c @@ -19,6 +19,7 @@ */ #include "e-activity-proxy.h" +#include "e-misc-utils.h" #include <config.h> #include <glib/gi18n.h> @@ -361,7 +362,7 @@ e_activity_proxy_set_activity (EActivityProxy *proxy, G_OBJECT (activity), (GWeakNotify) activity_proxy_weak_notify_cb, proxy); - g_signal_connect_swapped ( + e_signal_connect_notify_swapped ( activity, "notify::state", G_CALLBACK (activity_proxy_feedback), proxy); diff --git a/e-util/e-attachment-bar.c b/e-util/e-attachment-bar.c index 3a14ba76b8..83c3c69430 100644 --- a/e-util/e-attachment-bar.c +++ b/e-util/e-attachment-bar.c @@ -29,6 +29,7 @@ #include "e-attachment-store.h" #include "e-attachment-icon-view.h" #include "e-attachment-tree-view.h" +#include "e-misc-utils.h" #define E_ATTACHMENT_BAR_GET_PRIVATE(obj) \ (G_TYPE_INSTANCE_GET_PRIVATE \ @@ -132,12 +133,12 @@ attachment_bar_set_store (EAttachmentBar *bar, GTK_TREE_VIEW (bar->priv->tree_view), bar->priv->model); - g_signal_connect_object ( + e_signal_connect_notify_object ( bar->priv->model, "notify::num-attachments", G_CALLBACK (attachment_bar_update_status), bar, G_CONNECT_SWAPPED); - g_signal_connect_object ( + e_signal_connect_notify_object ( bar->priv->model, "notify::total-size", G_CALLBACK (attachment_bar_update_status), bar, G_CONNECT_SWAPPED); diff --git a/e-util/e-attachment-button.c b/e-util/e-attachment-button.c index 5d38a213d8..016e293f72 100644 --- a/e-util/e-attachment-button.c +++ b/e-util/e-attachment-button.c @@ -25,6 +25,7 @@ #endif #include "e-attachment-button.h" +#include "e-misc-utils.h" #define E_ATTACHMENT_BUTTON_GET_PRIVATE(obj) \ (G_TYPE_INSTANCE_GET_PRIVATE \ @@ -776,7 +777,7 @@ e_attachment_button_set_attachment (EAttachmentButton *button, G_BINDING_SYNC_CREATE); button->priv->shown_binding = binding; - handler_id = g_signal_connect_swapped ( + handler_id = e_signal_connect_notify_swapped ( attachment, "notify::reference", G_CALLBACK (attachment_button_update_cell_view), button); diff --git a/e-util/e-attachment-paned.c b/e-util/e-attachment-paned.c index 98772db873..34f0a2e5b9 100644 --- a/e-util/e-attachment-paned.c +++ b/e-util/e-attachment-paned.c @@ -26,6 +26,7 @@ #include <glib/gi18n.h> +#include "e-misc-utils.h" #include "e-attachment-view.h" #include "e-attachment-store.h" #include "e-attachment-icon-view.h" @@ -744,15 +745,15 @@ e_attachment_paned_init (EAttachmentPaned *paned) paned->priv->status_label = g_object_ref (widget); gtk_widget_hide (widget); - g_signal_connect_swapped ( + e_signal_connect_notify_swapped ( paned->priv->expander, "notify::expanded", G_CALLBACK (attachment_paned_notify_cb), paned); - g_signal_connect_swapped ( + e_signal_connect_notify_swapped ( paned->priv->model, "notify::num-attachments", G_CALLBACK (attachment_paned_update_status), paned); - g_signal_connect_swapped ( + e_signal_connect_notify_swapped ( paned->priv->model, "notify::total-size", G_CALLBACK (attachment_paned_update_status), paned); diff --git a/e-util/e-attachment.c b/e-util/e-attachment.c index 06018e8130..1ce400767d 100644 --- a/e-util/e-attachment.c +++ b/e-util/e-attachment.c @@ -33,6 +33,7 @@ #include "e-attachment-store.h" #include "e-icon-factory.h" #include "e-mktemp.h" +#include "e-misc-utils.h" #define E_ATTACHMENT_GET_PRIVATE(obj) \ (G_TYPE_INSTANCE_GET_PRIVATE \ @@ -997,51 +998,51 @@ e_attachment_init (EAttachment *attachment) g_mutex_init (&attachment->priv->property_lock); g_mutex_init (&attachment->priv->idle_lock); - g_signal_connect ( + e_signal_connect_notify ( attachment, "notify::encrypted", G_CALLBACK (attachment_update_icon_column), NULL); - g_signal_connect ( + e_signal_connect_notify ( attachment, "notify::file-info", G_CALLBACK (attachment_update_file_info_columns), NULL); - g_signal_connect ( + e_signal_connect_notify ( attachment, "notify::file-info", G_CALLBACK (attachment_update_icon_column), NULL); - g_signal_connect ( + e_signal_connect_notify ( attachment, "notify::loading", G_CALLBACK (attachment_update_icon_column), NULL); - g_signal_connect ( + e_signal_connect_notify ( attachment, "notify::loading", G_CALLBACK (attachment_update_progress_columns), NULL); - g_signal_connect ( + e_signal_connect_notify ( attachment, "notify::percent", G_CALLBACK (attachment_update_progress_columns), NULL); - g_signal_connect ( + e_signal_connect_notify ( attachment, "notify::reference", G_CALLBACK (attachment_update_file_info_columns), NULL); - g_signal_connect ( + e_signal_connect_notify ( attachment, "notify::reference", G_CALLBACK (attachment_update_icon_column), NULL); - g_signal_connect ( + e_signal_connect_notify ( attachment, "notify::reference", G_CALLBACK (attachment_update_progress_columns), NULL); - g_signal_connect ( + e_signal_connect_notify ( attachment, "notify::saving", G_CALLBACK (attachment_update_icon_column), NULL); - g_signal_connect ( + e_signal_connect_notify ( attachment, "notify::saving", G_CALLBACK (attachment_update_progress_columns), NULL); - g_signal_connect ( + e_signal_connect_notify ( attachment, "notify::signed", G_CALLBACK (attachment_update_icon_column), NULL); diff --git a/e-util/e-buffer-tagger.c b/e-util/e-buffer-tagger.c index c3c923aa7b..ccd23dc158 100644 --- a/e-util/e-buffer-tagger.c +++ b/e-util/e-buffer-tagger.c @@ -609,7 +609,7 @@ e_buffer_tagger_connect (GtkTextView *textview) g_signal_connect ( buffer, "delete-range", G_CALLBACK (buffer_delete_range), NULL); - g_signal_connect ( + e_signal_connect_notify ( buffer, "notify::cursor-position", G_CALLBACK (buffer_cursor_position), NULL); diff --git a/e-util/e-category-completion.c b/e-util/e-category-completion.c index cc8ed8936e..39e26e2edf 100644 --- a/e-util/e-category-completion.c +++ b/e-util/e-category-completion.c @@ -25,6 +25,8 @@ #include <libedataserver/libedataserver.h> +#include "e-misc-utils.h" + #define E_CATEGORY_COMPLETION_GET_PRIVATE(obj) \ (G_TYPE_INSTANCE_GET_PRIVATE \ ((obj), E_TYPE_CATEGORY_COMPLETION, ECategoryCompletionPrivate)) @@ -356,11 +358,11 @@ category_completion_track_entry (GtkEntryCompletion *completion) g_object_ref (priv->last_known_entry); - g_signal_connect_swapped ( + e_signal_connect_notify_swapped ( priv->last_known_entry, "notify::cursor-position", G_CALLBACK (category_completion_update_prefix), completion); - g_signal_connect_swapped ( + e_signal_connect_notify_swapped ( priv->last_known_entry, "notify::text", G_CALLBACK (category_completion_update_prefix), completion); diff --git a/e-util/e-charset-combo-box.c b/e-util/e-charset-combo-box.c index 240c28582f..2d67ceb749 100644 --- a/e-util/e-charset-combo-box.c +++ b/e-util/e-charset-combo-box.c @@ -276,7 +276,7 @@ charset_combo_box_constructed (GObject *object) e_action_combo_box_add_separator_after ( E_ACTION_COMBO_BOX (object), g_slist_length (group)); - g_signal_connect ( + e_signal_connect_notify ( object, "notify::charset", G_CALLBACK (charset_combo_box_notify_charset_cb), NULL); } diff --git a/e-util/e-filter-rule.c b/e-util/e-filter-rule.c index 721ed748a7..3211e166fe 100644 --- a/e-util/e-filter-rule.c +++ b/e-util/e-filter-rule.c @@ -33,6 +33,7 @@ #include "e-dialog-widgets.h" #include "e-filter-rule.h" #include "e-rule-context.h" +#include "e-misc-utils.h" #define E_FILTER_RULE_GET_PRIVATE(obj) \ (G_TYPE_INSTANCE_GET_PRIVATE \ @@ -903,10 +904,10 @@ filter_rule_get_widget (EFilterRule *rule, vadj = GTK_ADJUSTMENT (gtk_adjustment_new (0.0, 0.0, 1.0, 1.0, 1.0, 1.0)); scrolledwindow = gtk_scrolled_window_new (hadj, vadj); - g_signal_connect ( + e_signal_connect_notify ( hadj, "notify::upper", G_CALLBACK (ensure_scrolled_width_cb), scrolledwindow); - g_signal_connect ( + e_signal_connect_notify ( vadj, "notify::upper", G_CALLBACK (ensure_scrolled_height_cb), scrolledwindow); diff --git a/e-util/e-interval-chooser.c b/e-util/e-interval-chooser.c index 5e27471942..df6805cd3d 100644 --- a/e-util/e-interval-chooser.c +++ b/e-util/e-interval-chooser.c @@ -21,6 +21,7 @@ #include <glib/gi18n-lib.h> #include "e-util-enums.h" +#include "e-misc-utils.h" #define E_INTERVAL_CHOOSER_GET_PRIVATE(obj) \ (G_TYPE_INSTANCE_GET_PRIVATE \ @@ -129,7 +130,7 @@ e_interval_chooser_init (EIntervalChooser *chooser) chooser->priv->spin_button = GTK_SPIN_BUTTON (widget); gtk_widget_show (widget); - g_signal_connect_swapped ( + e_signal_connect_notify_swapped ( widget, "notify::value", G_CALLBACK (interval_chooser_notify_interval), chooser); @@ -144,7 +145,7 @@ e_interval_chooser_init (EIntervalChooser *chooser) chooser->priv->combo_box = GTK_COMBO_BOX (widget); gtk_widget_show (widget); - g_signal_connect_swapped ( + e_signal_connect_notify_swapped ( widget, "notify::active", G_CALLBACK (interval_chooser_notify_interval), chooser); } diff --git a/e-util/e-menu-tool-button.c b/e-util/e-menu-tool-button.c index d181d5ee36..cffadd0f08 100644 --- a/e-util/e-menu-tool-button.c +++ b/e-util/e-menu-tool-button.c @@ -23,6 +23,7 @@ #endif #include "e-menu-tool-button.h" +#include "e-misc-utils.h" #define E_MENU_TOOL_BUTTON_GET_PRIVATE(obj) \ (G_TYPE_INSTANCE_GET_PRIVATE \ @@ -241,7 +242,7 @@ e_menu_tool_button_init (EMenuToolButton *button) button->priv->prefer_item = NULL; - g_signal_connect ( + e_signal_connect_notify ( button, "notify::menu", G_CALLBACK (menu_tool_button_update_button), NULL); } diff --git a/e-util/e-misc-utils.c b/e-util/e-misc-utils.c index 3a52292af4..f7be7af5ac 100644 --- a/e-util/e-misc-utils.c +++ b/e-util/e-misc-utils.c @@ -2256,3 +2256,239 @@ e_binding_bind_object_text_property (gpointer source, e_binding_transform_text_non_null, NULL, NULL); } + +typedef struct _EConnectNotifyData { + GConnectFlags flags; + GValue *old_value; + + GCallback c_handler; + gpointer user_data; +} EConnectNotifyData; + +static EConnectNotifyData * +e_connect_notify_data_new (GCallback c_handler, + gpointer user_data, + guint32 connect_flags) +{ + EConnectNotifyData *connect_data; + + connect_data = g_new0 (EConnectNotifyData, 1); + connect_data->flags = connect_flags; + connect_data->c_handler = c_handler; + connect_data->user_data = user_data; + + return connect_data; +} + +static void +e_connect_notify_data_free (EConnectNotifyData *data) +{ + if (!data) + return; + + if (data->old_value) { + g_value_unset (data->old_value); + g_free (data->old_value); + } + g_free (data); +} + +static gboolean +e_value_equal (GValue *value1, + GValue *value2) +{ + if (value1 == value2) + return TRUE; + + if (!value1 || !value2) + return FALSE; + + #define testType(_uc,_lc) G_STMT_START { \ + if (G_VALUE_HOLDS_ ## _uc (value1)) \ + return g_value_get_ ## _lc (value1) == g_value_get_ ## _lc (value2); \ + } G_STMT_END + + testType (BOOLEAN, boolean); + testType (BOXED, boxed); + testType (CHAR, schar); + testType (DOUBLE, double); + testType (ENUM, enum); + testType (FLAGS, flags); + testType (FLOAT, float); + testType (GTYPE, gtype); + testType (INT, int); + testType (INT64, int64); + testType (LONG, long); + testType (OBJECT, object); + testType (POINTER, pointer); + testType (UCHAR, uchar); + testType (UINT, uint); + testType (UINT64, uint64); + testType (ULONG, ulong); + + #undef testType + + if (G_VALUE_HOLDS_PARAM (value1)) { + GParamSpec *param1, *param2; + + param1 = g_value_get_param (value1); + param2 = g_value_get_param (value2); + + return param1 && param2 && + g_strcmp0 (param1->name, param2->name) == 0 && + param1->flags == param2->flags && + param1->value_type == param2->value_type && + param1->owner_type == param2->owner_type; + } else if (G_VALUE_HOLDS_STRING (value1)) { + const gchar *string1, *string2; + + string1 = g_value_get_string (value1); + string2 = g_value_get_string (value2); + + return g_strcmp0 (string1, string2) == 0; + } else if (G_VALUE_HOLDS_VARIANT (value1)) { + GVariant *variant1, *variant2; + + variant1 = g_value_get_variant (value1); + variant2 = g_value_get_variant (value2); + + return variant1 == variant2 || + (variant1 && variant2 && g_variant_equal (variant1, variant2)); + } + + return FALSE; +} + +static void +e_signal_connect_notify_cb (gpointer instance, + GParamSpec *param, + gpointer user_data) +{ + EConnectNotifyData *connect_data = user_data; + GValue *value; + + g_return_if_fail (connect_data != NULL); + + value = g_new0 (GValue, 1); + g_value_init (value, param->value_type); + g_object_get_property (instance, param->name, value); + + if (!e_value_equal (connect_data->old_value, value)) { + typedef void (* NotifyCBType) (gpointer instance, GParamSpec *param, gpointer user_data); + NotifyCBType c_handler = (NotifyCBType) connect_data->c_handler; + + if (connect_data->old_value) { + g_value_unset (connect_data->old_value); + g_free (connect_data->old_value); + } + connect_data->old_value = value; + + if (connect_data->flags == G_CONNECT_SWAPPED) { + c_handler (connect_data->user_data, param, instance); + } else { + c_handler (instance, param, connect_data->user_data); + } + } else { + g_value_unset (value); + g_free (value); + } +} + +gulong +e_signal_connect_notify (gpointer instance, + const gchar *notify_name, + GCallback c_handler, + gpointer user_data) +{ + EConnectNotifyData *connect_data; + + g_return_val_if_fail (g_str_has_prefix (notify_name, "notify::"), 0); + + connect_data = e_connect_notify_data_new (c_handler, user_data, 0); + + return g_signal_connect_data (instance, + notify_name, + G_CALLBACK (e_signal_connect_notify_cb), + connect_data, + (GClosureNotify) e_connect_notify_data_free, + 0); +} + +gulong +e_signal_connect_notify_after (gpointer instance, + const gchar *notify_name, + GCallback c_handler, + gpointer user_data) +{ + EConnectNotifyData *connect_data; + + g_return_val_if_fail (g_str_has_prefix (notify_name, "notify::"), 0); + + connect_data = e_connect_notify_data_new (c_handler, user_data, G_CONNECT_AFTER); + + return g_signal_connect_data (instance, + notify_name, + G_CALLBACK (e_signal_connect_notify_cb), + connect_data, + (GClosureNotify) e_connect_notify_data_free, + G_CONNECT_AFTER); +} + +gulong +e_signal_connect_notify_swapped (gpointer instance, + const gchar *notify_name, + GCallback c_handler, + gpointer user_data) +{ + EConnectNotifyData *connect_data; + + g_return_val_if_fail (g_str_has_prefix (notify_name, "notify::"), 0); + + connect_data = e_connect_notify_data_new (c_handler, user_data, G_CONNECT_SWAPPED); + + return g_signal_connect_data (instance, + notify_name, + G_CALLBACK (e_signal_connect_notify_cb), + connect_data, + (GClosureNotify) e_connect_notify_data_free, + 0); +} + +gulong +e_signal_connect_notify_object (gpointer instance, + const gchar *notify_name, + GCallback c_handler, + gpointer gobject, + GConnectFlags connect_flags) +{ + EConnectNotifyData *connect_data; + GClosure *closure; + + g_return_val_if_fail (g_str_has_prefix (notify_name, "notify::"), 0); + + if (!gobject) { + if ((connect_flags & G_CONNECT_SWAPPED) != 0) + return e_signal_connect_notify_swapped (instance, notify_name, c_handler, gobject); + else if ((connect_flags & G_CONNECT_AFTER) != 0) + e_signal_connect_notify_after (instance, notify_name, c_handler, gobject); + else + g_warn_if_fail (connect_flags == 0); + + return e_signal_connect_notify (instance, notify_name, c_handler, gobject); + } + + g_return_val_if_fail (G_IS_OBJECT (gobject), 0); + + connect_data = e_connect_notify_data_new (c_handler, gobject, connect_flags & G_CONNECT_SWAPPED); + closure = g_cclosure_new ( + G_CALLBACK (e_signal_connect_notify_cb), + connect_data, + (GClosureNotify) e_connect_notify_data_free); + + g_object_watch_closure (G_OBJECT (gobject), closure); + + return g_signal_connect_closure (instance, + notify_name, + closure, + connect_flags & G_CONNECT_AFTER); +} diff --git a/e-util/e-misc-utils.h b/e-util/e-misc-utils.h index 33d8978a31..06de228899 100644 --- a/e-util/e-misc-utils.h +++ b/e-util/e-misc-utils.h @@ -211,6 +211,24 @@ GBinding * e_binding_bind_object_text_property const gchar *target_property, GBindingFlags flags); +gulong e_signal_connect_notify (gpointer instance, + const gchar *notify_name, + GCallback c_handler, + gpointer user_data); +gulong e_signal_connect_notify_after (gpointer instance, + const gchar *notify_name, + GCallback c_handler, + gpointer user_data); +gulong e_signal_connect_notify_swapped (gpointer instance, + const gchar *notify_name, + GCallback c_handler, + gpointer user_data); +gulong e_signal_connect_notify_object (gpointer instance, + const gchar *notify_name, + GCallback c_handler, + gpointer gobject, + GConnectFlags connect_flags); + G_END_DECLS #endif /* E_MISC_UTILS_H */ diff --git a/e-util/e-online-button.c b/e-util/e-online-button.c index 0589c197f4..b2bd68792e 100644 --- a/e-util/e-online-button.c +++ b/e-util/e-online-button.c @@ -22,6 +22,8 @@ #include <glib/gi18n.h> +#include "e-misc-utils.h" + #define E_ONLINE_BUTTON_GET_PRIVATE(obj) \ (G_TYPE_INSTANCE_GET_PRIVATE \ ((obj), E_TYPE_ONLINE_BUTTON, EOnlineButtonPrivate)) @@ -154,11 +156,11 @@ e_online_button_init (EOnlineButton *button) button->priv->image = g_object_ref (widget); gtk_widget_show (widget); - g_signal_connect ( + e_signal_connect_notify ( button, "notify::online", G_CALLBACK (online_button_update_tooltip), NULL); - g_signal_connect ( + e_signal_connect_notify ( button, "notify::sensitive", G_CALLBACK (online_button_update_tooltip), NULL); } diff --git a/e-util/e-paned.c b/e-util/e-paned.c index f56a06796c..b4a0914163 100644 --- a/e-util/e-paned.c +++ b/e-util/e-paned.c @@ -26,6 +26,8 @@ #include <glib/gi18n-lib.h> +#include "e-misc-utils.h" + #define E_PANED_GET_PRIVATE(obj) \ (G_TYPE_INSTANCE_GET_PRIVATE \ ((obj), E_TYPE_PANED, EPanedPrivate)) @@ -375,11 +377,11 @@ e_paned_init (EPaned *paned) paned->priv->proportion = 0.5; paned->priv->fixed_resize = TRUE; - g_signal_connect ( + e_signal_connect_notify ( paned, "notify::orientation", G_CALLBACK (paned_notify_orientation_cb), NULL); - g_signal_connect ( + e_signal_connect_notify ( paned, "notify::position", G_CALLBACK (paned_notify_position_cb), NULL); } @@ -471,6 +473,9 @@ e_paned_set_proportion (EPaned *paned, g_return_if_fail (E_IS_PANED (paned)); g_return_if_fail (CLAMP (proportion, 0.0, 1.0) == proportion); + if (paned->priv->proportion == proportion) + return; + paned->priv->proportion = proportion; paned->priv->sync_request = SYNC_REQUEST_PROPORTION; diff --git a/e-util/e-picture-gallery.c b/e-util/e-picture-gallery.c index 117602877b..71e48e01a0 100644 --- a/e-util/e-picture-gallery.c +++ b/e-util/e-picture-gallery.c @@ -25,6 +25,7 @@ #include "e-picture-gallery.h" #include "e-icon-factory.h" +#include "e-misc-utils.h" #define E_PICTURE_GALLERY_GET_PRIVATE(obj) \ (G_TYPE_INSTANCE_GET_PRIVATE \ @@ -377,7 +378,7 @@ picture_gallery_constructed (GObject *object) gtk_target_table_free (targets, n_targets); gtk_target_list_unref (list); - g_signal_connect (object, "notify::visible", G_CALLBACK (visible_cb), NULL); + e_signal_connect_notify (object, "notify::visible", G_CALLBACK (visible_cb), NULL); } static void diff --git a/e-util/e-search-bar.c b/e-util/e-search-bar.c index 13b4ee6f87..d3ade3540d 100644 --- a/e-util/e-search-bar.c +++ b/e-util/e-search-bar.c @@ -28,6 +28,7 @@ #include <gdk/gdkkeysyms.h> #include "e-dialog-widgets.h" +#include "e-misc-utils.h" #define E_SEARCH_BAR_GET_PRIVATE(obj) \ (G_TYPE_INSTANCE_GET_PRIVATE \ @@ -235,7 +236,7 @@ search_bar_set_web_view (ESearchBar *search_bar, search_bar->priv->web_view = g_object_ref (web_view); - g_signal_connect ( + e_signal_connect_notify ( web_view, "notify::load-status", G_CALLBACK (web_view_load_status_changed_cb), search_bar); } diff --git a/e-util/e-source-config-dialog.c b/e-util/e-source-config-dialog.c index 507f8c459b..f5d1b72b16 100644 --- a/e-util/e-source-config-dialog.c +++ b/e-util/e-source-config-dialog.c @@ -26,6 +26,7 @@ #include "e-alert-bar.h" #include "e-alert-dialog.h" #include "e-alert-sink.h" +#include "e-misc-utils.h" #define E_SOURCE_CONFIG_DIALOG_GET_PRIVATE(obj) \ (G_TYPE_INSTANCE_GET_PRIVATE \ @@ -275,7 +276,7 @@ source_config_dialog_constructed (GObject *object) priv->alert_bar = g_object_ref (widget); /* EAlertBar controls its own visibility. */ - handler_id = g_signal_connect ( + handler_id = e_signal_connect_notify ( priv->alert_bar, "notify::visible", G_CALLBACK (source_config_alert_bar_visible_cb), object); diff --git a/e-util/e-spell-entry.c b/e-util/e-spell-entry.c index cea403948b..75c7a6a9c8 100644 --- a/e-util/e-spell-entry.c +++ b/e-util/e-spell-entry.c @@ -26,6 +26,7 @@ #include <editor/gtkhtml-spell-language.h> #include <editor/gtkhtml-spell-checker.h> +#include "e-misc-utils.h" #include "e-spell-entry.h" #define E_SPELL_ENTRY_GET_PRIVATE(obj) \ @@ -878,7 +879,7 @@ e_spell_entry_init (ESpellEntry *spell_entry) g_signal_connect ( spell_entry, "changed", G_CALLBACK (spell_entry_changed), NULL); - g_signal_connect ( + e_signal_connect_notify ( spell_entry, "notify::scroll-offset", G_CALLBACK (spell_entry_notify_scroll_offset), NULL); diff --git a/e-util/e-table-click-to-add.c b/e-util/e-table-click-to-add.c index b0af6eaac6..77422534c4 100644 --- a/e-util/e-table-click-to-add.c +++ b/e-util/e-table-click-to-add.c @@ -414,7 +414,7 @@ finish_editing (ETableClickToAdd *etcta) etcta->row, "key_press", G_CALLBACK (item_key_press), etcta); - g_signal_connect ( + e_signal_connect_notify ( etcta->row, "notify::is-editing", G_CALLBACK (table_click_to_add_row_is_editing_changed_cb), etcta); @@ -472,7 +472,7 @@ etcta_event (GnomeCanvasItem *item, etcta->row, "key_press", G_CALLBACK (item_key_press), etcta); - g_signal_connect ( + e_signal_connect_notify ( etcta->row, "notify::is-editing", G_CALLBACK (table_click_to_add_row_is_editing_changed_cb), etcta); diff --git a/e-util/e-table-group-leaf.c b/e-util/e-table-group-leaf.c index 4cb5f18374..88ea6b0e8d 100644 --- a/e-util/e-table-group-leaf.c +++ b/e-util/e-table-group-leaf.c @@ -368,7 +368,7 @@ etgl_realize (GnomeCanvasItem *item) etgl->item, "start_drag", G_CALLBACK (etgl_start_drag), etgl); - g_signal_connect ( + e_signal_connect_notify ( etgl->item, "notify::is-editing", G_CALLBACK (etgl_item_is_editing_changed_cb), etgl); diff --git a/e-util/e-table.c b/e-util/e-table.c index 0dd02a2422..096313549e 100644 --- a/e-util/e-table.c +++ b/e-util/e-table.c @@ -1147,7 +1147,7 @@ et_build_groups (ETable *et) g_signal_connect ( et->group, "start_drag", G_CALLBACK (group_start_drag), et); - g_signal_connect ( + e_signal_connect_notify ( et->group, "notify::is-editing", G_CALLBACK (group_is_editing_changed_cb), et); @@ -1529,7 +1529,7 @@ e_table_setup_table (ETable *e_table, g_signal_connect ( e_table->click_to_add, "cursor_change", G_CALLBACK (click_to_add_cursor_change), e_table); - g_signal_connect ( + e_signal_connect_notify ( e_table->click_to_add, "notify::is-editing", G_CALLBACK (click_to_add_is_editing_changed_cb), e_table); } @@ -2211,7 +2211,7 @@ et_set_property (GObject *object, etable->click_to_add, "cursor_change", G_CALLBACK (click_to_add_cursor_change), etable); - g_signal_connect ( + e_signal_connect_notify ( etable->click_to_add, "notify::is-editing", G_CALLBACK (click_to_add_is_editing_changed_cb), etable); } else { diff --git a/e-util/e-tree-view-frame.c b/e-util/e-tree-view-frame.c index d3f70c6283..bde8b9fafa 100644 --- a/e-util/e-tree-view-frame.c +++ b/e-util/e-tree-view-frame.c @@ -29,10 +29,16 @@ * extended through e_tree_view_frame_insert_toolbar_action(). **/ -#include "e-tree-view-frame.h" +#ifdef HAVE_CONFIG_H +#include <config.h> +#endif #include <libebackend/libebackend.h> +#include "e-misc-utils.h" + +#include "e-tree-view-frame.h" + #define E_TREE_VIEW_FRAME_GET_PRIVATE(obj) \ (G_TYPE_INSTANCE_GET_PRIVATE \ ((obj), E_TYPE_TREE_VIEW_FRAME, ETreeViewFramePrivate)) @@ -937,13 +943,13 @@ e_tree_view_frame_set_tree_view (ETreeViewFrame *tree_view_frame, selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (tree_view)); - handler_id = g_signal_connect ( + handler_id = e_signal_connect_notify ( tree_view, "notify::reorderable", G_CALLBACK (tree_view_frame_notify_reorderable_cb), tree_view_frame); tree_view_frame->priv->notify_reorderable_handler_id = handler_id; - handler_id = g_signal_connect ( + handler_id = e_signal_connect_notify ( selection, "notify::mode", G_CALLBACK (tree_view_frame_notify_select_mode_cb), tree_view_frame); diff --git a/e-util/e-tree.c b/e-util/e-tree.c index d56456b4ad..30d20fc4c8 100644 --- a/e-util/e-tree.c +++ b/e-util/e-tree.c @@ -1165,7 +1165,7 @@ et_build_item (ETree *tree) g_signal_connect ( tree->priv->item, "start_drag", G_CALLBACK (item_start_drag), tree); - g_signal_connect ( + e_signal_connect_notify ( tree->priv->item, "notify::is-editing", G_CALLBACK (tree_item_is_editing_changed_cb), tree); } @@ -1283,7 +1283,7 @@ et_setup_table_canvas_vadjustment (ETree *tree) if (vadjustment) { tree->priv->table_canvas_vadjustment = g_object_ref (vadjustment); - g_signal_connect ( + e_signal_connect_notify ( vadjustment, "notify::value", G_CALLBACK (e_tree_table_canvas_scrolled_cb), tree); } @@ -1336,7 +1336,7 @@ e_tree_setup_table (ETree *tree) G_CALLBACK (tree_canvas_reflow), tree); et_setup_table_canvas_vadjustment (tree); - g_signal_connect_swapped ( + e_signal_connect_notify_swapped ( tree->priv->table_canvas, "notify::vadjustment", G_CALLBACK (et_setup_table_canvas_vadjustment), tree); diff --git a/e-util/e-web-view-gtkhtml.c b/e-util/e-web-view-gtkhtml.c index 799240d45d..7963a1cbf9 100644 --- a/e-util/e-web-view-gtkhtml.c +++ b/e-util/e-web-view-gtkhtml.c @@ -1791,6 +1791,9 @@ e_web_view_gtkhtml_set_animate (EWebViewGtkHTML *web_view, g_return_if_fail (E_IS_WEB_VIEW_GTKHTML (web_view)); + if (gtk_html_get_animate (GTK_HTML (web_view)) == animate) + return; + gtk_html_set_animate (GTK_HTML (web_view), animate); g_object_notify (G_OBJECT (web_view), "animate"); @@ -1817,6 +1820,9 @@ e_web_view_gtkhtml_set_caret_mode (EWebViewGtkHTML *web_view, g_return_if_fail (E_IS_WEB_VIEW_GTKHTML (web_view)); + if (gtk_html_get_caret_mode (GTK_HTML (web_view)) == caret_mode) + return; + gtk_html_set_caret_mode (GTK_HTML (web_view), caret_mode); g_object_notify (G_OBJECT (web_view), "caret-mode"); @@ -1844,6 +1850,9 @@ e_web_view_gtkhtml_set_disable_printing (EWebViewGtkHTML *web_view, { g_return_if_fail (E_IS_WEB_VIEW_GTKHTML (web_view)); + if (web_view->priv->disable_printing == disable_printing) + return; + web_view->priv->disable_printing = disable_printing; g_object_notify (G_OBJECT (web_view), "disable-printing"); @@ -1863,6 +1872,9 @@ e_web_view_gtkhtml_set_disable_save_to_disk (EWebViewGtkHTML *web_view, { g_return_if_fail (E_IS_WEB_VIEW_GTKHTML (web_view)); + if (web_view->priv->disable_save_to_disk == disable_save_to_disk) + return; + web_view->priv->disable_save_to_disk = disable_save_to_disk; g_object_notify (G_OBJECT (web_view), "disable-save-to-disk"); @@ -1889,6 +1901,9 @@ e_web_view_gtkhtml_set_editable (EWebViewGtkHTML *web_view, g_return_if_fail (E_IS_WEB_VIEW_GTKHTML (web_view)); + if (gtk_html_get_editable (GTK_HTML (web_view)) == editable) + return; + gtk_html_set_editable (GTK_HTML (web_view), editable); g_object_notify (G_OBJECT (web_view), "editable"); @@ -1915,6 +1930,9 @@ e_web_view_gtkhtml_set_inline_spelling (EWebViewGtkHTML *web_view, g_return_if_fail (E_IS_WEB_VIEW_GTKHTML (web_view)); + if (gtk_html_get_inline_spelling (GTK_HTML (web_view)) == inline_spelling) + return; + gtk_html_set_inline_spelling (GTK_HTML (web_view), inline_spelling); g_object_notify (G_OBJECT (web_view), "inline-spelling"); @@ -1941,6 +1959,9 @@ e_web_view_gtkhtml_set_magic_links (EWebViewGtkHTML *web_view, g_return_if_fail (E_IS_WEB_VIEW_GTKHTML (web_view)); + if (gtk_html_get_magic_links (GTK_HTML (web_view)) == magic_links) + return; + gtk_html_set_magic_links (GTK_HTML (web_view), magic_links); g_object_notify (G_OBJECT (web_view), "magic-links"); @@ -1967,6 +1988,9 @@ e_web_view_gtkhtml_set_magic_smileys (EWebViewGtkHTML *web_view, g_return_if_fail (E_IS_WEB_VIEW_GTKHTML (web_view)); + if (gtk_html_get_magic_smileys (GTK_HTML (web_view)) == magic_smileys) + return; + gtk_html_set_magic_smileys (GTK_HTML (web_view), magic_smileys); g_object_notify (G_OBJECT (web_view), "magic-smileys"); @@ -1986,6 +2010,9 @@ e_web_view_gtkhtml_set_selected_uri (EWebViewGtkHTML *web_view, { g_return_if_fail (E_IS_WEB_VIEW_GTKHTML (web_view)); + if (g_strcmp0 (web_view->priv->selected_uri, selected_uri) == 0) + return; + g_free (web_view->priv->selected_uri); web_view->priv->selected_uri = g_strdup (selected_uri); @@ -2006,6 +2033,9 @@ e_web_view_gtkhtml_set_cursor_image (EWebViewGtkHTML *web_view, { g_return_if_fail (E_IS_WEB_VIEW_GTKHTML (web_view)); + if (web_view->priv->cursor_image == image) + return; + if (image != NULL) g_object_ref (image); @@ -2031,6 +2061,9 @@ e_web_view_gtkhtml_set_open_proxy (EWebViewGtkHTML *web_view, { g_return_if_fail (E_IS_WEB_VIEW_GTKHTML (web_view)); + if (web_view->priv->open_proxy == open_proxy) + return; + if (open_proxy != NULL) { g_return_if_fail (GTK_IS_ACTION (open_proxy)); g_object_ref (open_proxy); @@ -2066,6 +2099,9 @@ e_web_view_gtkhtml_set_print_proxy (EWebViewGtkHTML *web_view, { g_return_if_fail (E_IS_WEB_VIEW_GTKHTML (web_view)); + if (web_view->priv->print_proxy == print_proxy) + return; + if (print_proxy != NULL) { g_return_if_fail (GTK_IS_ACTION (print_proxy)); g_object_ref (print_proxy); @@ -2093,6 +2129,9 @@ e_web_view_gtkhtml_set_save_as_proxy (EWebViewGtkHTML *web_view, { g_return_if_fail (E_IS_WEB_VIEW_GTKHTML (web_view)); + if (web_view->priv->save_as_proxy == save_as_proxy) + return; + if (save_as_proxy != NULL) { g_return_if_fail (GTK_IS_ACTION (save_as_proxy)); g_object_ref (save_as_proxy); diff --git a/e-util/e-web-view.c b/e-util/e-web-view.c index bb02bd16f1..398540128d 100644 --- a/e-util/e-web-view.c +++ b/e-util/e-web-view.c @@ -1699,7 +1699,7 @@ e_web_view_init (EWebView *web_view) web_view, "document-load-finished", G_CALLBACK (style_updated_cb), NULL); - g_signal_connect ( + e_signal_connect_notify ( web_view, "notify::load-status", G_CALLBACK (web_view_load_status_changed_cb), NULL); |