Reusable implementation of the PreviewTabWidget behavior. Widgets that cannot share a
common base class compose this and delegate their preview-related members to it.
It only owns the preview state and its promotion triggers. Detecting a move between tab-bars is
left to the host (e.g. via TabBarTracker), which feeds handleTabBarChange; hosts whose
base class already tracks this (like EditorWidget) reuse that instead.
Reusable implementation of the PreviewTabWidget behavior. Widgets that cannot share a common base class compose this and delegate their preview-related members to it.
It only owns the preview state and its promotion triggers. Detecting a move between tab-bars is left to the host (e.g. via
TabBarTracker), which feeds handleTabBarChange; hosts whose base class already tracks this (likeEditorWidget) reuse that instead.