[Xfce4-commits] <thunar:xfce-4.8> Make the clipboard persistence (bug #7060).
Nick Schermer
noreply at xfce.org
Mon May 9 18:02:02 CEST 2011
Updating branch refs/heads/xfce-4.8
to 70b048d81b4ed35f9b3bbc188210b5a9f11b35ab (commit)
from 9a24ec8f222a8eb167dc20a0e0d0a1af8317bde9 (commit)
commit 70b048d81b4ed35f9b3bbc188210b5a9f11b35ab
Author: Nick Schermer <nick at 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.
(cherry picked from commit fa83b6952f3e05cc9c8ef23ce6409b2b50b6b04f)
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;
}
More information about the Xfce4-commits
mailing list