[gtk+] file chooser: Memory handling fixes
- From: Matthias Clasen <matthiasc src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk+] file chooser: Memory handling fixes
- Date: Mon, 20 Jul 2015 15:13:03 +0000 (UTC)
commit 2dfad2b0d1cad454c4b68625be1e169023aaaed4
Author: Matthias Clasen <mclasen redhat com>
Date: Mon Jul 20 11:11:00 2015 -0400
file chooser: Memory handling fixes
I forgot to clean up the long press gesture, and in additon, creating
the rename popover from the ui template was causing the tree view
to not be disposed when the file chooser goes away. Work around this
by manually unsetting the relative-to widget of the popover in dispose.
gtk/gtkfilechooserwidget.c | 16 +++++++---------
gtk/ui/gtkfilechooserwidget.ui | 1 -
2 files changed, 7 insertions(+), 10 deletions(-)
---
diff --git a/gtk/gtkfilechooserwidget.c b/gtk/gtkfilechooserwidget.c
index 2ddd160..cafb5ab 100644
--- a/gtk/gtkfilechooserwidget.c
+++ b/gtk/gtkfilechooserwidget.c
@@ -649,7 +649,6 @@ gtk_file_chooser_widget_finalize (GObject *object)
{
GtkFileChooserWidget *impl = GTK_FILE_CHOOSER_WIDGET (object);
GtkFileChooserWidgetPrivate *priv = impl->priv;
- GSList *l;
if (priv->location_changed_id > 0)
g_source_remove (priv->location_changed_id);
@@ -658,14 +657,7 @@ gtk_file_chooser_widget_finalize (GObject *object)
g_free (priv->browse_files_last_selected_name);
- for (l = priv->filters; l; l = l->next)
- {
- GtkFileFilter *filter;
-
- filter = GTK_FILE_FILTER (l->data);
- g_object_unref (filter);
- }
- g_slist_free (priv->filters);
+ g_slist_free_full (priv->filters, g_object_unref);
if (priv->current_filter)
g_object_unref (priv->current_filter);
@@ -3526,6 +3518,9 @@ gtk_file_chooser_widget_dispose (GObject *object)
cancel_all_operations (impl);
+ if (priv->rename_file_popover)
+ gtk_popover_set_relative_to (GTK_POPOVER (priv->rename_file_popover), NULL);
+
if (priv->browse_files_popover)
{
gtk_widget_destroy (priv->browse_files_popover);
@@ -3552,6 +3547,8 @@ gtk_file_chooser_widget_dispose (GObject *object)
priv->external_entry = NULL;
}
+ g_clear_object (&priv->long_press_gesture);
+
G_OBJECT_CLASS (gtk_file_chooser_widget_parent_class)->dispose (object);
}
@@ -8452,6 +8449,7 @@ post_process_ui (GtkFileChooserWidget *impl)
gtk_popover_set_default_widget (GTK_POPOVER (impl->priv->new_folder_popover),
impl->priv->new_folder_create_button);
gtk_popover_set_default_widget (GTK_POPOVER (impl->priv->rename_file_popover),
impl->priv->rename_file_rename_button);
+ gtk_popover_set_relative_to (GTK_POPOVER (impl->priv->rename_file_popover),
impl->priv->browse_files_tree_view);
add_actions (impl);
}
diff --git a/gtk/ui/gtkfilechooserwidget.ui b/gtk/ui/gtkfilechooserwidget.ui
index 9718ce5..e86c374 100644
--- a/gtk/ui/gtkfilechooserwidget.ui
+++ b/gtk/ui/gtkfilechooserwidget.ui
@@ -467,7 +467,6 @@
</child>
</object>
<object class="GtkPopover" id="rename_file_popover">
- <property name="relative-to">browse_files_tree_view</property>
<property name="position">bottom</property>
<signal name="closed" handler="rename_file_end"/>
<child>
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]