diff -up seahorse-plugins-2.30.1/plugins/applet/seahorse-applet.c.clipboard seahorse-plugins-2.30.1/plugins/applet/seahorse-applet.c
--- seahorse-plugins-2.30.1/plugins/applet/seahorse-applet.c.clipboard	2010-09-03 14:12:07.671035002 -0400
+++ seahorse-plugins-2.30.1/plugins/applet/seahorse-applet.c	2010-09-03 14:19:06.757035002 -0400
@@ -151,6 +151,9 @@ typedef struct _SeahorseAppletPrivate {
     GtkClipboard        *board;
     GtkWidget           *menu;
     SeahorseTextType    clipboard_contents;
+
+    gulong clipboard_owner_change_id;
+    gulong primary_owner_change_id;
 } SeahorseAppletPrivate;
 
 #define SEAHORSE_APPLET_GET_PRIVATE(obj)  (G_TYPE_INSTANCE_GET_PRIVATE ((obj), SEAHORSE_TYPE_APPLET, SeahorseAppletPrivate))
@@ -898,14 +901,15 @@ seahorse_applet_init (SeahorseApplet *ap
     atom = gdk_atom_intern ("CLIPBOARD", FALSE);
     board = gtk_clipboard_get (atom);
     handle_clipboard_owner_change (board, NULL, applet);
-    g_signal_connect (board, "owner-change",
-                      G_CALLBACK (handle_clipboard_owner_change), applet);
+    priv->clipboard_owner_change_id =
+      g_signal_connect (board, "owner-change",
+                        G_CALLBACK (handle_clipboard_owner_change), applet);
     
     atom = gdk_atom_intern ("PRIMARY", FALSE);
     board = gtk_clipboard_get (atom);
-    g_signal_connect (board, "owner-change",
-                      G_CALLBACK (handle_clipboard_owner_change), applet);
-                      
+    priv->primary_owner_change_id =
+      g_signal_connect (board, "owner-change",
+                        G_CALLBACK (handle_clipboard_owner_change), applet);
 }
 
 static void
@@ -944,6 +948,17 @@ static void
 seahorse_applet_finalize (GObject *object)
 {
     SeahorseAppletPrivate *priv = SEAHORSE_APPLET_GET_PRIVATE (object);
+    GtkClipboard *board;
+
+    if (priv->clipboard_owner_change_id) {
+        g_signal_handler_disconnect (gdk_clipboard_get (GDK_SELECTION_CLIPBOARD),
+                                     priv->clipboard_owner_change_id);
+    }
+
+    if (priv->primary_owner_change_id) {
+        g_signal_handler_disconnect (gdk_clipboard_get (GDK_SELECTION_PRIMARY),
+                                     priv->primary_owner_change_id);
+    }
 
     if (priv) {
         if (priv->menu)
