diff options
-rw-r--r-- | src/nautilus-list-base.c | 6 | ||||
-rw-r--r-- | src/nautilus-view-cell.c | 3 |
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); } |