seahorse r2238 - in trunk: . libseahorse src



Author: nnielsen
Date: Mon Jun 16 17:29:09 2008
New Revision: 2238
URL: http://svn.gnome.org/viewvc/seahorse?rev=2238&view=rev

Log:
	* libseahorse/seahorse-prefs-keyrings.c:
	* libseahorse/seahorse-util.c:
	* libseahorse/seahorse-util.h: Make seahorse_util_show_error more 
	useful so that accepts any widget as a parent and figues out the 
	appropriate window to use.
	
	* src/seahorse-key-manager.c:
	* src/seahorse-key-manager-store.c:
	* src/seahorse-key-manager-store.h: Support XDS properly. 
	Fixes bug #507366


Modified:
   trunk/ChangeLog
   trunk/libseahorse/seahorse-prefs-keyrings.c
   trunk/libseahorse/seahorse-util.c
   trunk/libseahorse/seahorse-util.h
   trunk/src/seahorse-key-manager-store.c
   trunk/src/seahorse-key-manager-store.h
   trunk/src/seahorse-key-manager.c

Modified: trunk/libseahorse/seahorse-prefs-keyrings.c
==============================================================================
--- trunk/libseahorse/seahorse-prefs-keyrings.c	(original)
+++ trunk/libseahorse/seahorse-prefs-keyrings.c	Mon Jun 16 17:29:09 2008
@@ -240,7 +240,7 @@
         update_default_keyring (swidget);
         
     } else if (result != GNOME_KEYRING_RESULT_CANCELLED) {
-        seahorse_util_show_error (GTK_WINDOW (seahorse_widget_get_top (swidget)),
+        seahorse_util_show_error (seahorse_widget_get_top (swidget),
                                   _("Couldn't get default password keyring"),
                                   gnome_keyring_result_to_message (result));
     }    
@@ -263,7 +263,7 @@
         update_default_keyring (swidget);
         
     } else if (result != GNOME_KEYRING_RESULT_CANCELLED) {
-        seahorse_util_show_error (GTK_WINDOW (seahorse_widget_get_top (swidget)),
+        seahorse_util_show_error (seahorse_widget_get_top (swidget),
                                   _("Couldn't get list of password keyrings"),
                                   gnome_keyring_result_to_message (result));
     }
@@ -319,7 +319,7 @@
         
     /* Setting the default keyring failed */
     } else if (result != GNOME_KEYRING_RESULT_CANCELLED) {     
-        seahorse_util_show_error (GTK_WINDOW (seahorse_widget_get_top (swidget)),
+        seahorse_util_show_error (seahorse_widget_get_top (swidget),
                                   _("Couldn't set default password keyring"),
                                   gnome_keyring_result_to_message (result));
     }
@@ -401,7 +401,7 @@
         
     /* Setting the default keyring failed */
     } else if (result != GNOME_KEYRING_RESULT_CANCELLED) {     
-        seahorse_util_show_error (GTK_WINDOW (seahorse_widget_get_top (swidget)),
+        seahorse_util_show_error (seahorse_widget_get_top (swidget),
                                   _("Couldn't remove keyring"),
                                   gnome_keyring_result_to_message (result));
     }
@@ -467,7 +467,7 @@
         
     /* Setting the default keyring failed */
     } else if (result != GNOME_KEYRING_RESULT_CANCELLED) {     
-        seahorse_util_show_error (GTK_WINDOW (seahorse_widget_get_top (swidget)),
+        seahorse_util_show_error (seahorse_widget_get_top (swidget),
                                   _("Couldn't add keyring"),
                                   gnome_keyring_result_to_message (result));
     }
@@ -524,7 +524,7 @@
         
     /* Setting the default keyring failed */
     } else if (result != GNOME_KEYRING_RESULT_CANCELLED) {     
-        seahorse_util_show_error (GTK_WINDOW (seahorse_widget_get_top (swidget)),
+        seahorse_util_show_error (seahorse_widget_get_top (swidget),
                                   _("Couldn't change keyring password"),
                                   gnome_keyring_result_to_message (result));
     }

Modified: trunk/libseahorse/seahorse-util.c
==============================================================================
--- trunk/libseahorse/seahorse-util.c	(original)
+++ trunk/libseahorse/seahorse-util.c	Mon Jun 16 17:29:09 2008
@@ -51,21 +51,36 @@
 static const gchar *bad_filename_chars = "/\\<>|";
 
 void
-seahorse_util_show_error (GtkWindow *parent, const gchar *heading, const gchar *message)
+seahorse_util_show_error (GtkWidget *parent, const gchar *heading, const gchar *message)
 {
 	GtkWidget *error;
-    gchar *t;
+	gchar *text;
     
-	g_return_if_fail (message);
+	g_return_if_fail (message || heading);
+	if (!message)
+		message = "";
     
-    if (heading)
-        t = g_strconcat("<big><b>", heading, "</b></big>\n\n", message, NULL);
-    else
-        t = g_strdup (message);
+	if (heading)
+		text = g_strconcat("<big><b>", heading, "</b></big>\n\n", message, NULL);
+	else
+		text = g_strdup (message);
 	
-	error = gtk_message_dialog_new_with_markup (parent, GTK_DIALOG_MODAL, GTK_MESSAGE_ERROR,
-		GTK_BUTTONS_CLOSE, t);
-    g_free (t);
+	if (parent) {
+		if (!GTK_IS_WIDGET (parent)) {
+			g_warn_if_reached ();
+			parent = NULL;
+		} else {
+			if (!GTK_IS_WINDOW (parent)) 
+				parent = gtk_widget_get_toplevel (parent);
+			if (!GTK_IS_WINDOW (parent) && GTK_WIDGET_TOPLEVEL (parent))
+				parent = NULL;
+		}
+	}
+	
+	error = gtk_message_dialog_new_with_markup (GTK_WINDOW (parent), 
+	                                            GTK_DIALOG_MODAL, GTK_MESSAGE_ERROR,
+	                                            GTK_BUTTONS_CLOSE, text);
+	g_free (text);
 	
 	gtk_dialog_run (GTK_DIALOG (error));
 	gtk_widget_destroy (error);

Modified: trunk/libseahorse/seahorse-util.h
==============================================================================
--- trunk/libseahorse/seahorse-util.h	(original)
+++ trunk/libseahorse/seahorse-util.h	Mon Jun 16 17:29:09 2008
@@ -56,7 +56,7 @@
 
 GQuark      seahorse_util_error_domain ();
 
-void        seahorse_util_show_error            (GtkWindow          *parent,
+void        seahorse_util_show_error            (GtkWidget          *parent,
                                                  const gchar        *heading,
                                                  const gchar        *message);
                                                  

Modified: trunk/src/seahorse-key-manager-store.c
==============================================================================
--- trunk/src/seahorse-key-manager-store.c	(original)
+++ trunk/src/seahorse-key-manager-store.c	Mon Jun 16 17:29:09 2008
@@ -95,6 +95,21 @@
     G_TYPE_INT
 };
 
+enum {
+	DRAG_INFO_TEXT,
+	DRAG_INFO_XDS,
+};
+
+#define XDS_FILENAME "xds.txt"
+#define MAX_XDS_ATOM_VAL_LEN 4096
+#define XDS_ATOM   gdk_atom_intern  ("XdndDirectSave0", FALSE)
+#define TEXT_ATOM  gdk_atom_intern  ("text/plain", FALSE)
+
+static GtkTargetEntry store_targets[] = {
+	{ "text/plain", 0, DRAG_INFO_TEXT },
+	{ "XdndDirectSave0", 0, DRAG_INFO_XDS }
+};
+
 struct _SeahorseKeyManagerStorePriv {    
     GtkTreeModelFilter      *filter;
     GtkTreeModelSort        *sort;
@@ -102,6 +117,10 @@
     SeahorseKeyManagerStoreMode    filter_mode;
     gchar*                  filter_text;
     guint                   filter_stag;
+    
+	gchar *drag_destination;
+	GError *drag_error;
+	GList *drag_keys;
 };
 
 G_DEFINE_TYPE (SeahorseKeyManagerStore, seahorse_key_manager_store, SEAHORSE_TYPE_KEY_MODEL);
@@ -578,161 +597,269 @@
     return column;
 }
 
-static void  
-drag_begin (GtkWidget *widget, GdkDragContext *context, SeahorseKeyManagerStore *skstore)
+/* The following three functions taken from bugzilla
+ * (http://bugzilla.gnome.org/attachment.cgi?id=49362&action=view)
+ * Author: Christian Neumair
+ * Copyright: 2005 Free Software Foundation, Inc
+ * License: GPL */
+static char *
+xds_get_atom_value (GdkDragContext *context)
+{
+	char *ret;
+
+	g_return_val_if_fail (context != NULL, NULL);
+	g_return_val_if_fail (context->source_window != NULL, NULL);
+
+	gdk_property_get (context->source_window,
+			  XDS_ATOM, TEXT_ATOM,
+			  0, MAX_XDS_ATOM_VAL_LEN,
+			  FALSE, NULL, NULL, NULL,
+			  (unsigned char **) &ret);
+
+	return ret;
+}
+
+static gboolean
+xds_context_offers_target (GdkDragContext *context, GdkAtom target)
 {
-    GtkTreeView *view = GTK_TREE_VIEW (widget);
-    SeahorseKeySource *sksrc;
-    SeahorseMultiOperation *mop = NULL;
-    SeahorseOperation *op = NULL;
-    GList *next, *keys, *sel_keys = NULL;
-    GOutputStream *output = NULL;
-    SeahorseKey *skey;
-    
-    DBG_PRINT (("drag_begin -->\n"));
-    
-    sel_keys = seahorse_key_manager_store_get_selected_keys (view);
-    if(sel_keys != NULL) {
-        
-        /* Sort by key source */
-        keys = g_list_copy (sel_keys);
-        keys = seahorse_util_keylist_sort (keys);
-    
-        while (keys) {
-     
-            /* Break off one set (same keysource) */
-            next = seahorse_util_keylist_splice (keys);
+	return (g_list_find (context->targets, target) != NULL);
+}
 
-            g_assert (SEAHORSE_IS_KEY (keys->data));
-            skey = SEAHORSE_KEY (keys->data);
+static gboolean
+xds_is_dnd_valid_context (GdkDragContext *context)
+{
+	char *tmp;
+	gboolean ret;
 
-            /* Export from this key source */        
-            sksrc = seahorse_key_get_source (skey);
-            g_return_if_fail (sksrc != NULL);
-            
-            if (!mop) 
-                mop = seahorse_multi_operation_new ();
-            
- 			/* The data object where we export to */
-			if (!output) {
-				output = g_memory_output_stream_new (NULL, 0, g_realloc, g_free);
-				g_object_set_data_full (G_OBJECT (mop), "result-data", output,
-				                        (GDestroyNotify)g_object_unref);
-			}
-        
-			/* We pass our own data object, to which data is appended */
-			op = seahorse_key_source_export (sksrc, keys, FALSE, output);
-			g_return_if_fail (op != NULL);
+	g_return_val_if_fail (context != NULL, FALSE);
 
-            g_list_free (keys);
-            keys = next;
+	tmp = NULL;
+	if (xds_context_offers_target (context, XDS_ATOM)) {
+		tmp = xds_get_atom_value (context);
+	}
 
-            seahorse_multi_operation_take (mop, op);
-        }
-        
-        g_object_set_data_full (G_OBJECT (view), "drag-operation", mop,
-                                (GDestroyNotify)g_object_unref);
-        g_object_set_data_full (G_OBJECT (view), "drag-keys", sel_keys,
-                                (GDestroyNotify)g_list_free);
-        g_object_set_data (G_OBJECT (view), "drag-file", NULL);
-    }
+	ret = (tmp != NULL);
+	g_free (tmp);
+
+	return ret;
+}
+
+static gboolean
+drag_begin (GtkWidget *widget, GdkDragContext *context, SeahorseKeyManagerStore *skstore)
+{
+	GtkTreeView *view = GTK_TREE_VIEW (widget);
     
-    DBG_PRINT (("drag_begin <--\n"));
+	DBG_PRINT (("drag_begin -->\n"));
+
+	g_free (skstore->priv->drag_destination);
+	skstore->priv->drag_destination = NULL;
+	
+	g_clear_error (&skstore->priv->drag_error);
+	
+	g_list_free (skstore->priv->drag_keys);
+	skstore->priv->drag_keys = seahorse_key_manager_store_get_selected_keys (view);
+	if (skstore->priv->drag_keys)
+		gdk_property_change (context->source_window, XDS_ATOM, TEXT_ATOM, 
+		                     8, GDK_PROP_MODE_REPLACE, (guchar*)XDS_FILENAME,
+		                     strlen (XDS_FILENAME));
+	
+	DBG_PRINT (("drag_begin <--\n"));
+	return skstore->priv->drag_keys ? TRUE : FALSE;
 }
 
-static void
-cleanup_file (gchar *file)
+static gboolean
+export_keys_to_output (GList *keys, GOutputStream *output, GError **error)
 {
-    g_assert (file != NULL);
-    DBG_PRINT (("deleting temp file: %s\n", file));
-    unlink (file);
-    g_free (file);
+	SeahorseMultiOperation *mop = NULL;
+	SeahorseOperation *op;
+	SeahorseKeySource *sksrc;
+	SeahorseKey *skey;
+	GList *next;
+	gboolean ret;
+	
+	keys = seahorse_util_keylist_sort (keys);
+	DBG_PRINT (("exporting %d keys\n", g_list_length (keys)));
+	
+	while (keys) {
+		
+		/* Break off one set (same keysource) */
+		next = seahorse_util_keylist_splice (keys);
+
+		g_assert (SEAHORSE_IS_KEY (keys->data));
+		skey = SEAHORSE_KEY (keys->data);
+
+		/* Export from this key source */        
+		sksrc = seahorse_key_get_source (skey);
+		g_return_val_if_fail (sksrc != NULL, FALSE);
+
+		if (!mop) 
+			mop = seahorse_multi_operation_new ();
+
+		/* We pass our own data object, to which data is appended */
+		op = seahorse_key_source_export (sksrc, keys, FALSE, output);
+		g_return_val_if_fail (op != NULL, FALSE);
+
+		seahorse_multi_operation_take (mop, op);
+		
+		g_list_free (keys);
+		keys = next;		
+	}
+	
+	/* Make sure it's complete before we can return data */
+	op = SEAHORSE_OPERATION (mop);
+	seahorse_operation_wait (op);
+
+	ret = TRUE;
+	if (!seahorse_operation_is_successful (op)) { 
+		seahorse_operation_copy_error (op, error);
+		ret = FALSE;
+	}
+	
+	g_object_unref (mop);
+	return ret;
 }
 
-static void  
-drag_end (GtkWidget *widget, GdkDragContext *context, SeahorseKeyManagerStore *skstore)
+static gboolean
+export_to_text (SeahorseKeyManagerStore *skstore, GtkSelectionData *selection_data)
 {
-    DBG_PRINT (("drag_end -->\n"));
-    
-    /* This frees the operation and key list if present */
-    g_object_set_data (G_OBJECT (widget), "drag-operation", NULL);
-    g_object_set_data (G_OBJECT (widget), "drag-keys", NULL);
+	GOutputStream *output;
+	gboolean ret;
+	GList *keys;
+	
+	ret = FALSE;
+	
+	g_return_val_if_fail (skstore->priv->drag_keys, FALSE);
+	keys = g_list_copy (skstore->priv->drag_keys);
+
+	DBG_PRINT (("exporting to text\n"));
+
+	output = g_memory_output_stream_new (NULL, 0, g_realloc, g_free);
+	g_return_val_if_fail (output, FALSE);
+
+	/* This modifies and frees keys */
+	ret = export_keys_to_output (keys, output, &skstore->priv->drag_error) &&
+	       g_output_stream_close (output, NULL, &skstore->priv->drag_error);
+	if (ret) {
+		DBG_PRINT (("setting selection text\n"));
+		gtk_selection_data_set_text (selection_data, 
+		                             g_memory_output_stream_get_data (G_MEMORY_OUTPUT_STREAM (output)), 
+		                             seahorse_util_memory_output_length (G_MEMORY_OUTPUT_STREAM (output)));
+	} else {
+		g_message ("error occurred on export: %s", 
+		           skstore->priv->drag_error && skstore->priv->drag_error->message ? 
+		                      skstore->priv->drag_error->message : "");
+	}
+	
+	g_object_unref (output);
+	return ret;
+}
 
-    DBG_PRINT (("drag_end <--\n"));
+static gboolean
+export_to_filename (SeahorseKeyManagerStore *skstore, const gchar *filename)
+{
+	GOutputStream *output;
+	gboolean ret;
+	gchar *uri;
+	GFile *file;
+	GList *keys;
+	
+	DBG_PRINT (("exporting to %s\n", filename));
+
+	ret = FALSE;
+	g_return_val_if_fail (skstore->priv->drag_keys, FALSE);
+	keys = g_list_copy (skstore->priv->drag_keys);
+	
+	uri = seahorse_util_uri_unique (filename);
+
+	/* Create output file */
+	file = g_file_new_for_uri (uri);
+	g_free (uri);
+	output = G_OUTPUT_STREAM (g_file_replace (file, NULL, FALSE, G_FILE_CREATE_NONE, 
+	                                          NULL, &skstore->priv->drag_error));
+	g_object_unref (file);
+	
+	if (output) {
+		/* This modifies and frees keys */
+		ret = export_keys_to_output (keys, output, &skstore->priv->drag_error) &&
+		      g_output_stream_close (output, NULL, &skstore->priv->drag_error);
+		
+		g_object_unref (output);
+	}
+	
+	return ret;
 }
 
-static void  
+static gboolean
 drag_data_get (GtkWidget *widget, GdkDragContext *context, 
                GtkSelectionData *selection_data, guint info, 
                guint time, SeahorseKeyManagerStore *skstore)
 {
-    SeahorseOperation *op;
-    gchar *t, *n;
-    GList *keys;
-    GError *err = NULL;
-    GMemoryOutputStream *output;
-    gchar *text;
-
-    DBG_PRINT (("drag_data_get %d -->\n", info)); 
-
-    op = (SeahorseOperation*)g_object_get_data (G_OBJECT (widget), "drag-operation");
-    if (op == NULL) {
-        DBG_PRINT (("No operation in drag"));
-        return;
-    }
-
-    /* Make sure it's complete before we can return data */
-    seahorse_operation_wait (op);
-
-    if (!seahorse_operation_is_successful (op)) {
-        g_object_set_data (G_OBJECT (widget), "drag-operation", NULL);
-        seahorse_operation_copy_error (op, &err);
-        seahorse_util_handle_error (err, _("Couldn't retrieve key data"));
-        return;
-    }
-    
-    output = g_object_get_data (G_OBJECT (op), "result-data");
-    g_return_if_fail (G_IS_MEMORY_OUTPUT_STREAM (output));
-    
-    text = g_memory_output_stream_get_data (output);
-    g_return_if_fail (text != NULL);
-
-    if (info == TEXT_PLAIN) {
-        DBG_PRINT (("returning key text\n"));
-        gtk_selection_data_set_text (selection_data, text, strlen (text));
-    } else if (info == TEXT_URIS) {
-        t = (gchar*)g_object_get_data (G_OBJECT (widget), "drag-file");
-
-        if (t == NULL) {
-            keys = g_object_get_data (G_OBJECT (widget), "drag-keys");
-            g_return_if_fail (keys != NULL);
-            
-            n = seahorse_util_filename_for_keys (keys);
-            g_return_if_fail (n != NULL);
-            t = g_build_filename(g_get_tmp_dir (), n, NULL);
-            g_free (n);
-
-            g_object_set_data_full (G_OBJECT (widget), "drag-file", t,
-                                    (GDestroyNotify)cleanup_file);
-            
-            DBG_PRINT (("writing to temp file: %s\n", t));
-            
-            if (!g_file_set_contents (t, text, strlen (text), &err)) {
-                seahorse_util_handle_error (err, _("Couldn't write key to file"));
-                g_object_set_data (G_OBJECT (widget), "drag-file", NULL);
-                t = NULL;
-            }
-        }
+	gchar *destination;
+	gboolean ret;
 
-        if (t != NULL) {
-            char *uris[2] = { t, NULL };
-            gtk_selection_data_set_uris (selection_data, uris);
-        }
-    }
-    
-    DBG_PRINT(("drag_data_get <--\n"));
+	DBG_PRINT (("drag_data_get %d -->\n", info)); 
+	
+	g_return_val_if_fail (skstore->priv->drag_keys, FALSE);
+
+	/* The caller wants plain text */
+	if (info == DRAG_INFO_TEXT) {
+		DBG_PRINT (("returning key text\n"));
+		export_to_text (skstore, selection_data);
+		
+	/* The caller wants XDS */
+	} else if (info == DRAG_INFO_XDS) {
+		
+		if (xds_is_dnd_valid_context (context)) {
+			destination = xds_get_atom_value (context);
+			g_return_val_if_fail (destination, FALSE);
+			skstore->priv->drag_destination = g_path_get_dirname (destination);
+			g_free (destination);
+		
+			gtk_selection_data_set (selection_data, selection_data->target, 8, (guchar*)"S", 1);
+			ret = TRUE;
+		}
+		
+	/* Unrecognized format */
+	} else {
+		DBG_PRINT (("Unrecognized format: %d\n", info));
+	}
+	
+	DBG_PRINT(("drag_data_get <--\n"));
+	return ret;
+}
 
-    g_free(text);
+static void
+drag_end (GtkWidget *widget, GdkDragContext *context, SeahorseKeyManagerStore *skstore)
+{
+	gchar *filename, *name;
+	
+	DBG_PRINT (("drag_end -->\n"));
+	
+	if (skstore->priv->drag_destination && !skstore->priv->drag_error) {
+		g_return_if_fail (skstore->priv->drag_keys);
+	
+		name = seahorse_util_filename_for_keys (skstore->priv->drag_keys);
+		g_return_if_fail (name);
+	
+		filename = g_build_filename (skstore->priv->drag_destination, name, NULL);
+		g_free (name);
+	
+		export_to_filename (skstore, filename);
+		g_free (filename);
+	}
+	
+	if (skstore->priv->drag_error) {
+		seahorse_util_show_error (widget, _("Couldn't export keys"),
+		                          skstore->priv->drag_error->message);
+	}
+	
+	g_clear_error (&skstore->priv->drag_error);
+	g_list_free (skstore->priv->drag_keys);
+	skstore->priv->drag_keys = NULL;
+	g_free (skstore->priv->drag_destination);
+	skstore->priv->drag_destination = NULL;
+	
+	DBG_PRINT (("drag_end <--\n"));
 }
 
 static gint 
@@ -922,7 +1049,6 @@
     SeahorseKeyPredicate *pred;
     GtkCellRenderer *renderer;
     gchar *sort;
-    GtkTargetList *targets;
     
     skstore = g_object_new (SEAHORSE_TYPE_KEY_MANAGER_STORE, "keyset", skset, NULL);
 
@@ -1004,13 +1130,8 @@
     g_signal_connect (G_OBJECT (view), "drag_begin",  G_CALLBACK (drag_begin), skstore);
     g_signal_connect (G_OBJECT (view), "drag_end",  G_CALLBACK (drag_end), skstore);
 
-    gtk_drag_source_set (GTK_WIDGET (view), GDK_BUTTON1_MASK | GDK_BUTTON2_MASK,
-                         NULL, 0, GDK_ACTION_COPY);
-    targets = gtk_target_list_new (NULL, 0);
-    gtk_target_list_add_uri_targets (targets, TEXT_URIS);
-    gtk_target_list_add_text_targets (targets, TEXT_PLAIN);
-    gtk_drag_source_set_target_list (GTK_WIDGET (view), targets);
-    gtk_target_list_unref (targets);
+    gtk_drag_source_set (GTK_WIDGET (view), GDK_BUTTON1_MASK,
+                         store_targets, G_N_ELEMENTS (store_targets), GDK_ACTION_COPY);
 
     return skstore;
 }

Modified: trunk/src/seahorse-key-manager-store.h
==============================================================================
--- trunk/src/seahorse-key-manager-store.h	(original)
+++ trunk/src/seahorse-key-manager-store.h	Mon Jun 16 17:29:09 2008
@@ -76,13 +76,4 @@
 SeahorseKey*        seahorse_key_manager_store_get_selected_key  (GtkTreeView *view,
                                                                   guint *uid);
 
-/* -----------------------------------------------------------------------------
- * DRAG AND DROP
- */
-
-enum SeahorseTargetTypes {
-    TEXT_PLAIN,
-    TEXT_URIS
-};
-
 #endif /* __SEAHORSE_KEY_MANAGER_STORE_H__ */

Modified: trunk/src/seahorse-key-manager.c
==============================================================================
--- trunk/src/seahorse-key-manager.c	(original)
+++ trunk/src/seahorse-key-manager.c	Mon Jun 16 17:29:09 2008
@@ -56,6 +56,11 @@
 #include "gkr/seahorse-gkeyring-item.h"
 #include "gkr/seahorse-gkeyring-source.h"
 
+enum SeahorseTargetTypes {
+    TEXT_PLAIN,
+    TEXT_URIS
+};
+
 #define TRACK_SELECTED_KEY    "track-selected-keyid"
 #define TRACK_SELECTED_TAB    "track-selected-tabid"
 
@@ -460,7 +465,7 @@
     g_object_unref (mop);
         
     if (errmsg->len) {
-        seahorse_util_show_error (GTK_WINDOW (seahorse_widget_get_top (swidget)),
+        seahorse_util_show_error (seahorse_widget_get_top (swidget),
                                   _("Couldn't import keys"), errmsg->str);
     }
     
@@ -483,7 +488,7 @@
     /* Figure out what key format we're dealing with here */
     ktype = seahorse_util_detect_data_type (text, len);
     if (!ktype) {
-        seahorse_util_show_error (GTK_WINDOW (seahorse_widget_get_top (swidget)),
+        seahorse_util_show_error (seahorse_widget_get_top (swidget),
                 _("Couldn't import keys"), _("Unrecognized key type, or invalid data format"));
         return;
     }



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]