summaryrefslogtreecommitdiff
path: root/libnautilus/nautilus-clipboard.c
diff options
context:
space:
mode:
authorRamiro Estrugo <ramiro@src.gnome.org>2000-05-09 00:40:23 +0000
committerRamiro Estrugo <ramiro@src.gnome.org>2000-05-09 00:40:23 +0000
commitc0ed560dddb9cc83dd6a6201c0f9f5f86787b824 (patch)
tree0da0d92d92b1eb3b7d823a9ba18b6cfced1481a6 /libnautilus/nautilus-clipboard.c
parent6329071a4aad05dd92e40f0c398a63cc9ad12d97 (diff)
downloadnautilus-c0ed560dddb9cc83dd6a6201c0f9f5f86787b824.tar.gz
Reference the view on set_view_frame() and unreference on
destruction. This fixes a problem where the clipboard code was trying to use a view that has already been trashed. Thanks to Carbamide <linuxfan@ionet.net> for finding the problem.
Diffstat (limited to 'libnautilus/nautilus-clipboard.c')
-rw-r--r--libnautilus/nautilus-clipboard.c15
1 files changed, 14 insertions, 1 deletions
diff --git a/libnautilus/nautilus-clipboard.c b/libnautilus/nautilus-clipboard.c
index e985a0e78..86bf1da79 100644
--- a/libnautilus/nautilus-clipboard.c
+++ b/libnautilus/nautilus-clipboard.c
@@ -110,9 +110,14 @@ nautilus_clipboard_info_initialize_class (NautilusClipboardInfoClass *klass)
void
nautilus_clipboard_info_destroy (NautilusClipboardInfo *info)
{
-
+
g_free (info->details->component_name);
gtk_widget_unref (info->details->clipboard_owner);
+
+ if (info->details->view != NULL) {
+ bonobo_object_unref (BONOBO_OBJECT (info->details->view));
+ }
+
g_free (info->details);
NAUTILUS_CALL_PARENT_CLASS (GTK_OBJECT_CLASS, destroy, (GTK_OBJECT (info)));
@@ -163,7 +168,15 @@ nautilus_clipboard_info_get_clipboard_owner (NautilusClipboardInfo *info)
void
nautilus_clipboard_info_set_view_frame (NautilusClipboardInfo *info, NautilusViewFrame *view)
{
+ g_return_if_fail (info != NULL);
+ g_return_if_fail (NAUTILUS_CLIPBOARD_INFO (info));
+ g_return_if_fail (view != NULL);
+ g_return_if_fail (NAUTILUS_IS_VIEW_FRAME (view));
+
+ bonobo_object_ref (BONOBO_OBJECT (view));
+
info->details->view = view;
+
}
NautilusViewFrame*