app: fix #7682 crash loading xcf with linked text layers

Due to recent changes on master the linked layers concept doesn't exist
anymore. The conversion code checks whether all linked layers are valid.
However, text layers need special handling.

In the past updating the linked_layers wasn't needed when the layer pointer
of a text layer was changed. Now, that has changed because we parse that
list for valid layers. To fix this we update linked_layers in the same
way as already was done for selected_layers.
This commit is contained in:
Jacob Boerema 2022-01-06 15:03:51 -05:00
parent 56d6cf6aa1
commit 1858d72d03
1 changed files with 7 additions and 0 deletions

View File

@ -2082,6 +2082,7 @@ xcf_load_layer (XcfInfo *info,
gboolean edit_mask = FALSE;
gboolean show_mask = FALSE;
GList *selected;
GList *linked;
gboolean floating;
guint32 group_layer_flags = 0;
guint32 text_layer_flags = 0;
@ -2205,6 +2206,7 @@ xcf_load_layer (XcfInfo *info,
/* call the evil text layer hack that might change our layer pointer */
selected = g_list_find (info->selected_layers, layer);
linked = g_list_find (info->linked_layers, layer);
floating = (info->floating_sel == layer);
if (gimp_text_layer_xcf_load_hack (&layer))
@ -2217,6 +2219,11 @@ xcf_load_layer (XcfInfo *info,
info->selected_layers = g_list_delete_link (info->selected_layers, selected);
info->selected_layers = g_list_prepend (info->selected_layers, layer);
}
if (linked)
{
info->linked_layers = g_list_delete_link (info->linked_layers, linked);
info->linked_layers = g_list_prepend (info->linked_layers, layer);
}
if (floating)
info->floating_sel = layer;
}