aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--libempathy-gtk/empathy-ui-utils.c24
1 files changed, 24 insertions, 0 deletions
diff --git a/libempathy-gtk/empathy-ui-utils.c b/libempathy-gtk/empathy-ui-utils.c
index 5d9551d12..a387160d3 100644
--- a/libempathy-gtk/empathy-ui-utils.c
+++ b/libempathy-gtk/empathy-ui-utils.c
@@ -1825,6 +1825,27 @@ file_manager_send_file_response_cb (GtkDialog *widget,
gtk_widget_destroy (GTK_WIDGET (widget));
}
+static gboolean
+filter_cb (const GtkFileFilterInfo *filter_info,
+ gpointer data)
+{
+ /* filter out socket files */
+ return tp_strdiff (filter_info->mime_type, "inode/socket");
+}
+
+static GtkFileFilter *
+create_file_filter (void)
+{
+ GtkFileFilter *filter;
+
+ filter = gtk_file_filter_new ();
+
+ gtk_file_filter_add_custom (filter, GTK_FILE_FILTER_MIME_TYPE, filter_cb,
+ NULL, NULL);
+
+ return filter;
+}
+
void
empathy_send_file_with_file_chooser (EmpathyContact *contact)
{
@@ -1859,6 +1880,9 @@ empathy_send_file_with_file_chooser (EmpathyContact *contact)
gtk_file_chooser_set_current_folder (GTK_FILE_CHOOSER (widget),
g_get_home_dir ());
+ gtk_file_chooser_add_filter (GTK_FILE_CHOOSER (widget),
+ create_file_filter ());
+
g_signal_connect (widget, "response",
G_CALLBACK (file_manager_send_file_response_cb),
g_object_ref (contact));