@@ -25,7 +25,8 @@ module treemap_renderer |
| 25 | 25 | get_node_center_by_index, find_node_in_direction, register_progress_callback, & |
| 26 | 26 | scan_directory, invalidate_layout, get_current_view_node, remove_selected_node_from_view, & |
| 27 | 27 | clear_cache, toggle_file_extensions, toggle_age_based_coloring, toggle_size_display_mode, & |
| 28 | | - toggle_hidden_files, toggle_render_mode, set_redraw_widget, register_scan_completion_callback |
| 28 | + toggle_hidden_files, toggle_render_mode, set_redraw_widget, register_scan_completion_callback, & |
| 29 | + set_renderer_state_from_tab |
| 29 | 30 | |
| 30 | 31 | ! Callback interfaces for progress updates |
| 31 | 32 | abstract interface |
@@ -209,6 +210,33 @@ contains |
| 209 | 210 | node_ptr => current_view_node |
| 210 | 211 | end function get_current_view_node |
| 211 | 212 | |
| 213 | + ! Set renderer state from tab (for tab switching) |
| 214 | + subroutine set_renderer_state_from_tab(tab_root, tab_current_view, tab_has_data) |
| 215 | + type(file_node), pointer, intent(in) :: tab_root, tab_current_view |
| 216 | + logical, intent(in) :: tab_has_data |
| 217 | + |
| 218 | + print *, "=== SET_RENDERER_STATE_FROM_TAB ===" |
| 219 | + print *, " tab_has_data: ", tab_has_data |
| 220 | + |
| 221 | + ! Update global renderer state to match the tab |
| 222 | + has_data = tab_has_data |
| 223 | + |
| 224 | + if (tab_has_data .and. associated(tab_root)) then |
| 225 | + ! Copy tab's tree data to renderer globals |
| 226 | + root_node = tab_root |
| 227 | + current_view_node => tab_current_view |
| 228 | + print *, " Synced renderer to tab's tree data" |
| 229 | + else |
| 230 | + ! Empty tab - nullify current view |
| 231 | + current_view_node => null() |
| 232 | + has_data = .false. |
| 233 | + print *, " Tab is empty - cleared renderer state" |
| 234 | + end if |
| 235 | + |
| 236 | + ! Invalidate layout to force recalculation |
| 237 | + layout_calculated = .false. |
| 238 | + end subroutine set_renderer_state_from_tab |
| 239 | + |
| 212 | 240 | ! Scan directory and prepare for rendering |
| 213 | 241 | subroutine scan_directory(path) |
| 214 | 242 | use, intrinsic :: iso_c_binding |