void gui_layout_window_remove (struct t_gui_layout_window *layout_window) { /* first free children */ if (layout_window->child1) gui_layout_window_remove (layout_window->child1); if (layout_window->child2) gui_layout_window_remove (layout_window->child2); /* free data */ if (layout_window->plugin_name) free (layout_window->plugin_name); if (layout_window->buffer_name) free (layout_window->buffer_name); free (layout_window); }
void gui_layout_window_remove_all (struct t_gui_layout_window **layout_windows) { if (*layout_windows) { gui_layout_window_remove (*layout_windows); *layout_windows = NULL; } }
void gui_layout_window_remove_all (struct t_gui_layout *layout) { if (!layout) return; if (layout->layout_windows) { gui_layout_window_remove (layout->layout_windows); layout->layout_windows = NULL; } }
void gui_layout_window_store (struct t_gui_layout *layout) { if (!layout) return; gui_layout_window_remove (layout->layout_windows); layout->internal_id = 1; layout->internal_id_current_window = -1; gui_layout_window_store_tree (layout, &layout->layout_windows, NULL, gui_windows_tree); }
void gui_layout_free (struct t_gui_layout *layout) { if (!layout) return; /* remove current layout if this is the layout we are removing */ if (gui_layout_current == layout) gui_layout_current = NULL; /* remove buffers and windows */ gui_layout_buffer_remove_all (layout); gui_layout_window_remove (layout->layout_windows); /* free data */ if (layout->name) free (layout->name); free (layout); }