diff --git a/src/xviewer-image.c b/src/xviewer-image.c index 5af0ef7..b5ec7a1 100644 --- a/src/xviewer-image.c +++ b/src/xviewer-image.c @@ -647,10 +647,13 @@ xviewer_image_get_file_info (XviewerImage *img, if (mime_type) *mime_type = NULL; - g_set_error (error, - XVIEWER_IMAGE_ERROR, - XVIEWER_IMAGE_ERROR_VFS, - "Error in getting image file info"); + if (error && *error == NULL) + { + g_set_error (error, + XVIEWER_IMAGE_ERROR, + XVIEWER_IMAGE_ERROR_VFS, + "Error in getting image file info"); + } } else { if (bytes) *bytes = g_file_info_get_size (file_info); diff --git a/src/xviewer-list-store.c b/src/xviewer-list-store.c index 04603ec..9dc573c 100644 --- a/src/xviewer-list-store.c +++ b/src/xviewer-list-store.c @@ -375,84 +375,37 @@ file_monitor_changed_cb (GFileMonitor *monitor, GFileMonitorEvent event, XviewerListStore *store) { - const char *mimetype; - GFileInfo *file_info; - GtkTreeIter iter; - XviewerImage *image; + if (event == G_FILE_MONITOR_EVENT_CHANGES_DONE_HINT) + { + const char *mimetype; + GFileInfo *file_info; + GtkTreeIter iter; + XviewerImage *image; - switch (event) { - case G_FILE_MONITOR_EVENT_CHANGES_DONE_HINT: file_info = g_file_query_info (file, G_FILE_ATTRIBUTE_STANDARD_CONTENT_TYPE, 0, NULL, NULL); if (file_info == NULL) { - break; + return; } mimetype = g_file_info_get_content_type (file_info); - - if (is_file_in_list_store_file (store, file, &iter)) { - if (xviewer_image_is_supported_mime_type (mimetype)) { + if (xviewer_image_is_supported_mime_type (mimetype)) { + gboolean found = is_file_in_list_store_file (store, file, &iter); + if (found) { gtk_tree_model_get (GTK_TREE_MODEL (store), &iter, - XVIEWER_LIST_STORE_XVIEWER_IMAGE, &image, - -1); + XVIEWER_LIST_STORE_XVIEWER_IMAGE, &image, + -1); xviewer_image_file_changed (image); g_object_unref (image); - xviewer_list_store_thumbnail_refresh (store, &iter); } else { - xviewer_list_store_remove (store, &iter); - } - } else { - if (xviewer_image_is_supported_mime_type (mimetype)) { xviewer_list_store_append_image_from_file (store, file); + found = is_file_in_list_store_file (store, file, &iter); } + + if (found) + xviewer_list_store_thumbnail_refresh (store, &iter); } g_object_unref (file_info); - break; - case G_FILE_MONITOR_EVENT_DELETED: - if (is_file_in_list_store_file (store, file, &iter)) { - XviewerImage *image; - - gtk_tree_model_get (GTK_TREE_MODEL (store), &iter, - XVIEWER_LIST_STORE_XVIEWER_IMAGE, &image, - -1); - - xviewer_list_store_remove (store, &iter); - } - break; - case G_FILE_MONITOR_EVENT_CREATED: - if (!is_file_in_list_store_file (store, file, NULL)) { - file_info = g_file_query_info (file, - G_FILE_ATTRIBUTE_STANDARD_CONTENT_TYPE, - 0, NULL, NULL); - if (file_info == NULL) { - break; - } - mimetype = g_file_info_get_content_type (file_info); - - if (xviewer_image_is_supported_mime_type (mimetype)) { - xviewer_list_store_append_image_from_file (store, file); - } - g_object_unref (file_info); - } - break; - case G_FILE_MONITOR_EVENT_ATTRIBUTE_CHANGED: - file_info = g_file_query_info (file, - G_FILE_ATTRIBUTE_STANDARD_CONTENT_TYPE, - 0, NULL, NULL); - if (file_info == NULL) { - break; - } - mimetype = g_file_info_get_content_type (file_info); - if (is_file_in_list_store_file (store, file, &iter) && - xviewer_image_is_supported_mime_type (mimetype)) { - xviewer_list_store_thumbnail_refresh (store, &iter); - } - g_object_unref (file_info); - break; - case G_FILE_MONITOR_EVENT_PRE_UNMOUNT: - case G_FILE_MONITOR_EVENT_UNMOUNTED: - case G_FILE_MONITOR_EVENT_MOVED: - break; } } diff --git a/src/xviewer-thumbnail.c b/src/xviewer-thumbnail.c index 9c59aa6..be55f25 100644 --- a/src/xviewer-thumbnail.c +++ b/src/xviewer-thumbnail.c @@ -192,6 +192,7 @@ xviewer_thumb_data_new (GFile *file, GError **error) data->can_read = g_file_info_get_attribute_boolean (file_info, G_FILE_ATTRIBUTE_ACCESS_CAN_READ); } + g_object_unref (file_info); } else { xviewer_thumb_data_free (data); @@ -199,8 +200,6 @@ xviewer_thumb_data_new (GFile *file, GError **error) g_clear_error (&ioerror); } - g_object_unref (file_info); - return data; } diff --git a/src/xviewer-window.c b/src/xviewer-window.c index cd8207c..15903d6 100644 --- a/src/xviewer-window.c +++ b/src/xviewer-window.c @@ -556,10 +556,10 @@ update_status_bar (XviewerWindow *window) g_free (size_string); } - - update_image_pos (window); } + update_image_pos (window); + gtk_statusbar_pop (GTK_STATUSBAR (priv->statusbar), priv->image_info_message_cid);