diff options
author | Felix Riemann <friemann@gnome.org> | 2023-05-06 18:13:11 +0000 |
---|---|---|
committer | Felix Riemann <friemann@gnome.org> | 2023-05-06 18:13:11 +0000 |
commit | 72cf0c5f222a5536020ab935a09202f21c7a9cbe (patch) | |
tree | c3d7aa520679ea7d9e77bfab08eb1ab0b4e0cd1d | |
parent | 2426629c719deb53fb8a1a2f3254e42d0c7c3f99 (diff) | |
parent | e6e68c09d48b8a48e7afbe7a863aea257191139a (diff) | |
download | eog-72cf0c5f222a5536020ab935a09202f21c7a9cbe.tar.gz |
EogWindow: Fix refcount and signal handler issues around GSettings handles
Closes #291
See merge request GNOME/eog!153
-rw-r--r-- | src/eog-metadata-sidebar.c | 2 | ||||
-rw-r--r-- | src/eog-window.c | 28 |
2 files changed, 19 insertions, 11 deletions
diff --git a/src/eog-metadata-sidebar.c b/src/eog-metadata-sidebar.c index 1363a6e5..c5757fc2 100644 --- a/src/eog-metadata-sidebar.c +++ b/src/eog-metadata-sidebar.c @@ -464,6 +464,8 @@ eog_metadata_sidebar_dispose (GObject *object) g_clear_object (&priv->image); + g_clear_object (&priv->parent_window); + G_OBJECT_CLASS (eog_metadata_sidebar_parent_class)->dispose (object); } diff --git a/src/eog-window.c b/src/eog-window.c index ddbeff59..1c8b54d0 100644 --- a/src/eog-window.c +++ b/src/eog-window.c @@ -343,6 +343,9 @@ eog_window_set_gallery_mode (EogWindow *window, if (priv->mode != EOG_WINDOW_MODE_UNKNOWN) { update_action_groups_state (window); } + + g_object_unref (priv->nav); + g_object_unref (hpaned); } static void @@ -4581,17 +4584,20 @@ eog_window_init (EogWindow *window) * not trigger the state changed handler since the state is updated directly * via the "state" property. Requesting a state change via these callbacks, * however, works. */ - g_signal_connect (priv->ui_settings, "changed::"EOG_CONF_UI_IMAGE_GALLERY, - G_CALLBACK (eog_window_ui_settings_changed_cb), - g_action_map_lookup_action (G_ACTION_MAP (window), "view-gallery")); - - g_signal_connect (priv->ui_settings, "changed::"EOG_CONF_UI_SIDEBAR, - G_CALLBACK (eog_window_ui_settings_changed_cb), - g_action_map_lookup_action (G_ACTION_MAP (window), "view-sidebar")); - - g_signal_connect (priv->ui_settings, "changed::"EOG_CONF_UI_STATUSBAR, - G_CALLBACK (eog_window_ui_settings_changed_cb), - g_action_map_lookup_action (G_ACTION_MAP (window), "view-statusbar")); + g_signal_connect_object (priv->ui_settings, "changed::"EOG_CONF_UI_IMAGE_GALLERY, + G_CALLBACK (eog_window_ui_settings_changed_cb), + g_action_map_lookup_action (G_ACTION_MAP (window), "view-gallery"), + G_CONNECT_DEFAULT); + + g_signal_connect_object (priv->ui_settings, "changed::"EOG_CONF_UI_SIDEBAR, + G_CALLBACK (eog_window_ui_settings_changed_cb), + g_action_map_lookup_action (G_ACTION_MAP (window), "view-sidebar"), + G_CONNECT_DEFAULT); + + g_signal_connect_object (priv->ui_settings, "changed::"EOG_CONF_UI_STATUSBAR, + G_CALLBACK (eog_window_ui_settings_changed_cb), + g_action_map_lookup_action (G_ACTION_MAP (window), "view-statusbar"), + G_CONNECT_DEFAULT); action = g_action_map_lookup_action (G_ACTION_MAP (window), "current-image"); |