Fix crash for external images

This commit is contained in:
daleclack 2024-02-05 22:04:24 +08:00
parent eb31743007
commit 74aa1188b2
1 changed files with 30 additions and 23 deletions

View File

@ -197,6 +197,7 @@ static void images_list_default(GListStore *store1)
static void update_images_list(MyPrefs *prefs1) static void update_images_list(MyPrefs *prefs1)
{ {
GtkDirectoryList *dir_list = prefs1->file_list;
// if the store is not empty, clear it // if the store is not empty, clear it
if (g_list_model_get_n_items(G_LIST_MODEL(prefs1->images_list))) if (g_list_model_get_n_items(G_LIST_MODEL(prefs1->images_list)))
{ {
@ -204,13 +205,13 @@ static void update_images_list(MyPrefs *prefs1)
} }
// Iterate the objects and add to the list // Iterate the objects and add to the list
for (int i = 0; i < g_list_model_get_n_items(G_LIST_MODEL(prefs1->file_list)); i++) for (int i = 0; i < g_list_model_get_n_items(G_LIST_MODEL(dir_list)); i++)
{ {
if (mime_type_supported()) if (mime_type_supported())
{ {
// Get file info // Get file info
GFileInfo *info = G_FILE_INFO(g_list_model_get_item( GFileInfo *info = G_FILE_INFO(g_list_model_get_item(
G_LIST_MODEL(prefs1->file_list), i)); G_LIST_MODEL(dir_list), i));
const char *content_type = g_file_info_get_content_type(info); const char *content_type = g_file_info_get_content_type(info);
// Append image file info to the list // Append image file info to the list
@ -230,7 +231,7 @@ static void update_images_list(MyPrefs *prefs1)
{ {
// Get file info // Get file info
GFileInfo *info = G_FILE_INFO(g_list_model_get_item( GFileInfo *info = G_FILE_INFO(g_list_model_get_item(
G_LIST_MODEL(prefs1->file_list), i)); G_LIST_MODEL(dir_list), i));
const char *content_type = g_file_info_get_content_type(info); const char *content_type = g_file_info_get_content_type(info);
char *pattern = g_strdup_printf("*%s", content_type); char *pattern = g_strdup_printf("*%s", content_type);
@ -615,6 +616,7 @@ void my_prefs_first_load(MyPrefs *self)
// File name and properties // File name and properties
const char *folder_name = my_item_get_path(MY_ITEM(folder_item)); const char *folder_name = my_item_get_path(MY_ITEM(folder_item));
gboolean is_internal = my_item_get_internal(MY_ITEM(folder_item)); gboolean is_internal = my_item_get_internal(MY_ITEM(folder_item));
// g_print("%s", folder_name);
if (is_internal) if (is_internal)
{ {
@ -636,6 +638,8 @@ void my_prefs_first_load(MyPrefs *self)
auto item = gtk_single_selection_get_selected_item(self->image_select); auto item = gtk_single_selection_get_selected_item(self->image_select);
// File name and properties // File name and properties
if (item != NULL)
{
const char *file_name = my_item_get_path(MY_ITEM(item)); const char *file_name = my_item_get_path(MY_ITEM(item));
is_internal = my_item_get_internal(MY_ITEM(item)); is_internal = my_item_get_internal(MY_ITEM(item));
// Update image // Update image
@ -661,6 +665,7 @@ void my_prefs_first_load(MyPrefs *self)
update_external_image(self, file_name); update_external_image(self, file_name);
} }
} }
}
// static void my_prefs_close_request(GtkWindow *self, gpointer user_data) // static void my_prefs_close_request(GtkWindow *self, gpointer user_data)
// { // {
@ -791,6 +796,8 @@ static void my_prefs_init(MyPrefs *self)
self->spin_height, "sensitive", G_BINDING_DEFAULT); self->spin_height, "sensitive", G_BINDING_DEFAULT);
g_object_bind_property(self->radio_custom, "active", g_object_bind_property(self->radio_custom, "active",
self->spin_width, "sensitive", G_BINDING_DEFAULT); self->spin_width, "sensitive", G_BINDING_DEFAULT);
g_object_bind_property(self->radio_custom, "active",
self->btnGet, "sensitive", G_BINDING_DEFAULT);
g_object_bind_property(self->radio_default, "active", g_object_bind_property(self->radio_default, "active",
self->sizes_drop, "sensitive", G_BINDING_DEFAULT); self->sizes_drop, "sensitive", G_BINDING_DEFAULT);