diff --git a/openlp/core/ui/slidecontroller.py b/openlp/core/ui/slidecontroller.py index 22fd0f4b3..f36e37df5 100644 --- a/openlp/core/ui/slidecontroller.py +++ b/openlp/core/ui/slidecontroller.py @@ -826,8 +826,10 @@ class SlideController(DisplayController, RegistryProperties): old_item = self.service_item # take a copy not a link to the servicemanager copy. self.service_item = copy.copy(service_item) - if old_item and self.is_live and old_item.is_capable(ItemCapabilities.ProvidesOwnDisplay): - self._reset_blank() + # Reset blanking if needed + if old_item and self.is_live and (old_item.is_capable(ItemCapabilities.ProvidesOwnDisplay) or \ + self.service_item.is_capable(ItemCapabilities.ProvidesOwnDisplay)): + self._reset_blank(self.service_item.is_capable(ItemCapabilities.ProvidesOwnDisplay)) if service_item.is_command(): Registry().execute( '%s_start' % service_item.name.lower(), [self.service_item, self.is_live, self.hide_mode(), slide_no]) @@ -1347,7 +1349,11 @@ class SlideController(DisplayController, RegistryProperties): :param item: The service item to be processed """ - self.media_controller.video(self.controller_type, item, self.hide_mode()) + if self.is_live and self.hide_mode() == HideMode.Theme: + self.media_controller.video(self.controller_type, item, HideMode.Blank) + self.on_blank_display(True) + else: + self.media_controller.video(self.controller_type, item, self.hide_mode()) if not self.is_live: self.preview_display.show() self.slide_preview.hide() @@ -1360,16 +1366,22 @@ class SlideController(DisplayController, RegistryProperties): self.preview_display.hide() self.slide_preview.show() - def _reset_blank(self): + def _reset_blank(self, no_theme): """ Used by command items which provide their own displays to reset the screen hide attributes + + :param no_theme: Does the new item support theme-blanking. """ hide_mode = self.hide_mode() if hide_mode == HideMode.Blank: self.on_blank_display(True) elif hide_mode == HideMode.Theme: - self.on_theme_display(True) + # The new item-type doesn't support theme-blanking, so 'switch' to normal blanking. + if no_theme: + self.on_blank_display(True) + else: + self.on_theme_display(True) elif hide_mode == HideMode.Screen: self.on_hide_display(True) else: