diff --git a/src/psd_tools/api/layers.py b/src/psd_tools/api/layers.py index 76250a5f..d2802559 100644 --- a/src/psd_tools/api/layers.py +++ b/src/psd_tools/api/layers.py @@ -1118,7 +1118,8 @@ def _setting(self) -> Optional[SectionDividerSetting]: @property def blend_mode(self) -> BlendMode: setting = self._setting - if setting is not None: + # Use the blend mode from the section divider setting if present. + if setting is not None and setting.blend_mode is not None: return setting.blend_mode return super(Group, self).blend_mode diff --git a/tests/psd_files/blend-modes/group-divider-blend-mode.psd b/tests/psd_files/blend-modes/group-divider-blend-mode.psd new file mode 100644 index 00000000..ad8d42c2 Binary files /dev/null and b/tests/psd_files/blend-modes/group-divider-blend-mode.psd differ diff --git a/tests/psd_tools/api/test_layers.py b/tests/psd_tools/api/test_layers.py index aabf4c19..02fa7ab9 100644 --- a/tests/psd_tools/api/test_layers.py +++ b/tests/psd_tools/api/test_layers.py @@ -252,6 +252,16 @@ def test_group_extract_bbox(): assert Group.extract_bbox(psd[1:], True) == (25, 34, 83, 134) +def test_group_blend_mode(): + psd = PSDImage.open(full_name("blend-modes/group-divider-blend-mode.psd")) + assert psd[0].blend_mode is not None + blend_mode = psd[0].blend_mode + psd[0].blend_mode = BlendMode.NORMAL + assert psd[0].blend_mode == BlendMode.NORMAL + psd[0].blend_mode = blend_mode + assert psd[0].blend_mode == blend_mode + + def test_sibling_layers(): psd = PSDImage.open(full_name("hidden-groups.psd")) assert psd[0].next_sibling() is psd[1]