major
minor
major
minor
A layout created in-app is not theme-dependent. For example, if a new tab is created in the main tab bar within the sidebar theme, an entry is written to the database with the arguments: the template `com.top_logic/maintabbar.template.xml ` and the layout key ` mainTabbar.layout.xml`.
In the `tl:DatabaseLayoutCache` (a KBCache for in-app layouts), these entries are read and used to create a `LayoutTemplateCall`. During creation, the “body” of the TemplateCall is generated. To do this, templates are searched for and inlined. This depends on the theme, since different themes use different templates. However, the tl:DatabaseLayoutCache is also used in the context of other themes, so templates from other themes are used here.
In this specific case, for example, the “mainTabbar.xml” template may be used in the sidebar layout, which results in the tl:EmptyLayoutControlProvider being used as the tl:LayoutControlProvider for the main tab bar, so that no tabs are displayed.
Test
- Select the Sidebar theme.
- Create a new tab in the main tab bar.
- Reboot the application. When doing so, ensure that the “Modern” theme appears before the “Sidebar-Layout” theme in the iterator returned by `MultiThemeFactory.getChoosableThemes()`. Unfortunately, this can only be achieved through debugging in Eclipse and variable manipulation.
- Log in
- Expected Result: All main tabs are displayed normally after selection.