Updating branch refs/heads/master to fa83b6952f3e05cc9c8ef23ce6409b2b50b6b04f (commit) from e91c529ec0830023758cd6aa3a84ab158cdfff44 (commit)
commit fa83b6952f3e05cc9c8ef23ce6409b2b50b6b04f Author: Nick Schermer <n...@xfce.org> Date: Mon May 9 17:56:30 2011 +0200 Make the clipboard persistence (bug #7060). This is required to implement copy/paste if the thunar daemon is not running. It does require a properly implemented clipboard manager, like the one in xfsettingd. thunar/thunar-clipboard-manager.c | 26 ++++++++++++++++++++++++++ 1 files changed, 26 insertions(+), 0 deletions(-) diff --git a/thunar/thunar-clipboard-manager.c b/thunar/thunar-clipboard-manager.c index f5dceca..747ef03 100644 --- a/thunar/thunar-clipboard-manager.c +++ b/thunar/thunar-clipboard-manager.c @@ -59,6 +59,7 @@ enum static void thunar_clipboard_manager_finalize (GObject *object); +static void thunar_clipboard_manager_dispose (GObject *object); static void thunar_clipboard_manager_get_property (GObject *object, guint prop_id, GValue *value, @@ -136,6 +137,7 @@ thunar_clipboard_manager_class_init (ThunarClipboardManagerClass *klass) GObjectClass *gobject_class; gobject_class = G_OBJECT_CLASS (klass); + gobject_class->dispose = thunar_clipboard_manager_dispose; gobject_class->finalize = thunar_clipboard_manager_finalize; gobject_class->get_property = thunar_clipboard_manager_get_property; @@ -180,6 +182,27 @@ thunar_clipboard_manager_init (ThunarClipboardManager *manager) static void +thunar_clipboard_manager_dispose (GObject *object) +{ + ThunarClipboardManager *manager = THUNAR_CLIPBOARD_MANAGER (object); + + /* store the clipboard if we still own it and a clipboard + * manager is running (gtk_clipboard_store checks this) */ + if (gtk_clipboard_get_owner (manager->clipboard) == object + && manager->files != NULL) + { + gtk_clipboard_set_can_store (manager->clipboard, clipboard_targets, + G_N_ELEMENTS (clipboard_targets)); + + gtk_clipboard_store (manager->clipboard); + } + + (*G_OBJECT_CLASS (thunar_clipboard_manager_parent_class)->dispose) (object); +} + + + +static void thunar_clipboard_manager_finalize (GObject *object) { ThunarClipboardManager *manager = THUNAR_CLIPBOARD_MANAGER (object); @@ -533,6 +556,9 @@ thunar_clipboard_manager_get_for_display (GdkDisplay *display) g_signal_connect (G_OBJECT (manager->clipboard), "owner-change", G_CALLBACK (thunar_clipboard_manager_owner_changed), manager); + /* look for usable data on the clipboard */ + thunar_clipboard_manager_owner_changed (manager->clipboard, NULL, manager); + return manager; } _______________________________________________ Xfce4-commits mailing list Xfce4-commits@xfce.org http://foo-projects.org/mailman/listinfo/xfce4-commits