[Xfce4-commits] <ristretto:master> Make sure unsupported files are not accidently loaded in the image-list.
Stephan Arts
noreply at xfce.org
Sun Dec 18 00:12:01 CET 2011
Updating branch refs/heads/master
to 4de982dab42fdd7f244113f797c8f821a6680b10 (commit)
from 13bff97303470587df2fdb6953aeed6488ea4296 (commit)
commit 4de982dab42fdd7f244113f797c8f821a6680b10
Author: Stephan Arts <stephan at xfce.org>
Date: Sun Dec 18 00:09:09 2011 +0100
Make sure unsupported files are not accidently loaded in the image-list.
src/image_list.c | 43 +++++++++++++++++++++++++++++++++----------
1 files changed, 33 insertions(+), 10 deletions(-)
diff --git a/src/image_list.c b/src/image_list.c
index db0b521..5fb4b9c 100644
--- a/src/image_list.c
+++ b/src/image_list.c
@@ -124,6 +124,7 @@ struct _RsttoImageListPriv
{
GFileMonitor *monitor;
RsttoSettings *settings;
+ GtkFileFilter *filter;
GList *images;
gint n_images;
@@ -169,6 +170,9 @@ rstto_image_list_init(RsttoImageList *image_list)
image_list->priv = g_new0 (RsttoImageListPriv, 1);
image_list->priv->settings = rstto_settings_new ();
+ image_list->priv->filter = gtk_file_filter_new ();
+ g_object_ref_sink (image_list->priv->filter);
+ gtk_file_filter_add_pixbuf_formats (image_list->priv->filter);
image_list->priv->cb_rstto_image_list_compare_func = (GCompareFunc)cb_rstto_image_list_image_name_compare_func;
@@ -240,6 +244,12 @@ rstto_image_list_dispose(GObject *object)
g_object_unref (image_list->priv->settings);
image_list->priv->settings = NULL;
}
+
+ if (image_list->priv->filter)
+ {
+ g_object_unref (image_list->priv->filter);
+ image_list->priv->filter= NULL;
+ }
g_free (image_list->priv);
image_list->priv = NULL;
@@ -259,6 +269,7 @@ rstto_image_list_new (void)
gboolean
rstto_image_list_add_file (RsttoImageList *image_list, RsttoFile *file, GError **error)
{
+ GtkFileFilterInfo filter_info;
GList *image_iter = g_list_find (image_list->priv->images, file);
GSList *iter = image_list->priv->iterators;
@@ -266,21 +277,33 @@ rstto_image_list_add_file (RsttoImageList *image_list, RsttoFile *file, GError *
{
if (file)
{
- image_list->priv->images = g_list_insert_sorted (image_list->priv->images, file, rstto_image_list_get_compare_func (image_list));
+ filter_info.contains = GTK_FILE_FILTER_MIME_TYPE | GTK_FILE_FILTER_URI;
+ filter_info.uri = rstto_file_get_uri (file);
+ filter_info.mime_type = rstto_file_get_content_type (file);
- image_list->priv->n_images++;
-
- g_signal_emit (G_OBJECT (image_list), rstto_image_list_signals[RSTTO_IMAGE_LIST_SIGNAL_NEW_IMAGE], 0, file, NULL);
- /** TODO: update all iterators */
- while (iter)
+ if ( TRUE == gtk_file_filter_filter (image_list->priv->filter, &filter_info))
{
- if (FALSE == RSTTO_IMAGE_LIST_ITER(iter->data)->priv->sticky)
+ image_list->priv->images = g_list_insert_sorted (image_list->priv->images, file, rstto_image_list_get_compare_func (image_list));
+
+ image_list->priv->n_images++;
+
+ g_signal_emit (G_OBJECT (image_list), rstto_image_list_signals[RSTTO_IMAGE_LIST_SIGNAL_NEW_IMAGE], 0, file, NULL);
+ /** TODO: update all iterators */
+ while (iter)
{
- rstto_image_list_iter_find_file (iter->data, file);
+ if (FALSE == RSTTO_IMAGE_LIST_ITER(iter->data)->priv->sticky)
+ {
+ rstto_image_list_iter_find_file (iter->data, file);
+ }
+ iter = g_slist_next (iter);
}
- iter = g_slist_next (iter);
+ return TRUE;
+ }
+ else
+ {
+ g_object_unref (file);
+ return FALSE;
}
- return TRUE;
}
return FALSE;
}
More information about the Xfce4-commits
mailing list