@@ -129,8 +129,33 @@ def _render(state: GuiState) -> None: # pragma: no cover - manual UI
129129
130130
131131def _dockspace_fullscreen () -> None :
132- dock_flags = imgui .DockNodeFlags_ .passthru_central_node
133- return imgui .dock_space_over_viewport (0 , None , dock_flags , None )
132+ # Follow Dear ImGui's recommended fullscreen dockspace pattern.
133+ dockspace_flags = imgui .DockNodeFlags_ .none
134+ window_flags = (
135+ imgui .WindowFlags_ .no_title_bar
136+ | imgui .WindowFlags_ .no_collapse
137+ | imgui .WindowFlags_ .no_resize
138+ | imgui .WindowFlags_ .no_move
139+ | imgui .WindowFlags_ .no_bring_to_front_on_focus
140+ | imgui .WindowFlags_ .no_nav_focus
141+ | imgui .WindowFlags_ .no_docking
142+ )
143+ viewport = imgui .get_main_viewport ()
144+ imgui .set_next_window_pos (viewport .pos )
145+ imgui .set_next_window_size (viewport .size )
146+ imgui .set_next_window_viewport (viewport .id_ )
147+ imgui .push_style_var (imgui .StyleVar_ .window_rounding , 0.0 )
148+ imgui .push_style_var (imgui .StyleVar_ .window_border_size , 0.0 )
149+ imgui .push_style_var (imgui .StyleVar_ .window_padding , (0.0 , 0.0 ))
150+ if dockspace_flags & imgui .DockNodeFlags_ .passthru_central_node :
151+ window_flags |= imgui .WindowFlags_ .no_background
152+
153+ imgui .begin ("MainDockSpaceHost" , flags = window_flags )
154+ imgui .pop_style_var (3 )
155+ dockspace_id = imgui .get_id ("MainDockSpace" )
156+ imgui .dock_space (dockspace_id , (0.0 , 0.0 ), dockspace_flags )
157+ imgui .end ()
158+ return dockspace_id
134159
135160
136161def main (argv : list [str ] | None = None ) -> None :
0 commit comments