[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