Major
Detail
Major
Detail
An in-app created layout is not theme dependent. For example, if a new tab is created in the main tabbar in 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 tl:DatabaseLayoutCache (a KBCache for the in-app layouts) these entries are read and LayoutTemplateCall is created from them. During creation, the "body" of the template call is created. For this templates are searched and inlined. This is theme dependent, because in different themes, different templates exist. The tl:DatabaseLayoutCache is used however also in the context of other Themes, thus Theme foreign Templates are used here.
In the concrete case, for example, the template "mainTabbar.xml" can be used in the sidebar layout, which has the consequence that instead of the tl:DeckpaneOnlyTabControlProvider, the tl:EmptyLayoutControlProvider is used as tl:LayoutControlProvider for the main tabbar, so that no tabs are displayed.
Test
- Select the sidebar theme.
- Create a new tab in the main tabbar.
- Reboot the application. Make sure that the theme "Modern" appears before the theme "Sidebar-Layout" in the iterator of MultiThemeFactory.getChoosableThemes(). Unfortunately, this can only be done by debugging in Eclipse and variable manipulation.
- Logging in
- Expectation: All main tabs are displayed normally after selection.