summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/nautilus-list-base.c6
-rw-r--r--src/nautilus-view-cell.c3
2 files changed, 8 insertions, 1 deletions
diff --git a/src/nautilus-list-base.c b/src/nautilus-list-base.c
index 22440bacd..4aef5b700 100644
--- a/src/nautilus-list-base.c
+++ b/src/nautilus-list-base.c
@@ -432,6 +432,12 @@ on_item_click_stopped (GtkGestureClick *gesture,
g_autoptr (NautilusListBase) self = nautilus_view_cell_get_view (cell);
NautilusListBasePrivate *priv = nautilus_list_base_get_instance_private (self);
+ if (self == NULL)
+ {
+ /* The view may already be gone before the cell finalized. */
+ return;
+ }
+
rubberband_set_state (self, TRUE);
priv->activate_on_release = FALSE;
priv->deny_background_click = FALSE;
diff --git a/src/nautilus-view-cell.c b/src/nautilus-view-cell.c
index 6f28fd8ff..a16f36567 100644
--- a/src/nautilus-view-cell.c
+++ b/src/nautilus-view-cell.c
@@ -86,7 +86,7 @@ nautilus_view_cell_set_property (GObject *object,
{
case PROP_VIEW:
{
- priv->view = g_value_get_object (value);
+ g_set_weak_pointer (&priv->view, g_value_get_object (value));
}
break;
@@ -116,6 +116,7 @@ nautilus_view_cell_finalize (GObject *object)
NautilusViewCellPrivate *priv = nautilus_view_cell_get_instance_private (self);
g_clear_object (&priv->item);
+ g_clear_weak_pointer (&priv->view);
G_OBJECT_CLASS (nautilus_view_cell_parent_class)->finalize (object);
}