From 7e15674cd9909e1b3e73e0c53f9978e5eaaef0ca Mon Sep 17 00:00:00 2001 From: Michael Natterer Date: Fri, 28 Apr 2006 12:13:04 +0000 Subject: [PATCH] keep a reference to the source buffer while the clipboard contents buffer 2006-04-28 Michael Natterer * gtk/gtktextbuffer.c (create_clipboard_contents_buffer): keep a reference to the source buffer while the clipboard contents buffer exists, because it is needed for serializing the contents buffer. Makes copying from the contents buffer possible even after the resp. text view is destroyed (for example when there is a clipboard manager running on app exit) (bug #339195). --- ChangeLog | 9 +++++++++ ChangeLog.pre-2-10 | 9 +++++++++ gtk/gtktextbuffer.c | 7 +++++++ 3 files changed, 25 insertions(+) diff --git a/ChangeLog b/ChangeLog index 76737fe14a..1fd37f76e2 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,12 @@ +2006-04-28 Michael Natterer + + * gtk/gtktextbuffer.c (create_clipboard_contents_buffer): keep a + reference to the source buffer while the clipboard contents buffer + exists, because it is needed for serializing the contents buffer. + Makes copying from the contents buffer possible even after the + resp. text view is destroyed (for example when there is a + clipboard manager running on app exit) (bug #339195). + 2006-04-27 Behdad Esfahbod * gdk/gdkpango.c (gdk_pango_renderer_draw_glyphs): Cast to double diff --git a/ChangeLog.pre-2-10 b/ChangeLog.pre-2-10 index 76737fe14a..1fd37f76e2 100644 --- a/ChangeLog.pre-2-10 +++ b/ChangeLog.pre-2-10 @@ -1,3 +1,12 @@ +2006-04-28 Michael Natterer + + * gtk/gtktextbuffer.c (create_clipboard_contents_buffer): keep a + reference to the source buffer while the clipboard contents buffer + exists, because it is needed for serializing the contents buffer. + Makes copying from the contents buffer possible even after the + resp. text view is destroyed (for example when there is a + clipboard manager running on app exit) (bug #339195). + 2006-04-27 Behdad Esfahbod * gdk/gdkpango.c (gdk_pango_renderer_draw_glyphs): Cast to double diff --git a/gtk/gtktextbuffer.c b/gtk/gtktextbuffer.c index ea04b885b0..628686c8b5 100644 --- a/gtk/gtktextbuffer.c +++ b/gtk/gtktextbuffer.c @@ -2967,6 +2967,13 @@ create_clipboard_contents_buffer (GtkTextBuffer *buffer) g_object_set_data (G_OBJECT (contents), I_("gtk-text-buffer-clipboard"), GINT_TO_POINTER (1)); + /* Ref the source buffer as long as the clipboard contents buffer + * exists, because it's needed for serializing the contents buffer. + * See http://bugzilla.gnome.org/show_bug.cgi?id=339195 + */ + g_object_ref (buffer); + g_object_weak_ref (G_OBJECT (contents), (GWeakNotify) g_object_unref, buffer); + return contents; }