diff --git a/src/bin/edi_config.c b/src/bin/edi_config.c index d7f39b8..b26d611 100644 --- a/src/bin/edi_config.c +++ b/src/bin/edi_config.c @@ -615,3 +615,25 @@ _edi_project_config_tab_remove(const char *path, Eina_Bool windowed, int panel_i eina_stringshare_del(tab->type); free(tab); } + +void +_edi_project_config_panel_remove(int panel_id) +{ + Edi_Project_Config_Tab *tab; + Edi_Project_Config_Panel *panel = eina_list_nth(_edi_project_config->panels, panel_id); + + _edi_project_config->panels = eina_list_remove(_edi_project_config->panels, panel); + + EINA_LIST_FREE(panel->tabs, tab) + { + if (tab->path) + eina_stringshare_del(tab->path); + if (tab->type) + eina_stringshare_del(tab->type); + free(tab); + } + + free(panel); + + _edi_project_config_save_no_notify(); +} diff --git a/src/bin/edi_config.h b/src/bin/edi_config.h index f2bf278..d6a19fd 100644 --- a/src/bin/edi_config.h +++ b/src/bin/edi_config.h @@ -124,6 +124,7 @@ void _edi_project_config_tab_add(const char *path, const char *type, Eina_Bool windowed, int panel_id); void _edi_project_config_tab_remove(const char *path, Eina_Bool windowed, int panel_id); void _edi_project_config_tab_current_set(int panel_id, int tab_id); +void _edi_project_config_panel_remove(int panel_id); #ifdef __cplusplus } diff --git a/src/bin/mainview/edi_mainview.c b/src/bin/mainview/edi_mainview.c index 0068e2c..be3db01 100644 --- a/src/bin/mainview/edi_mainview.c +++ b/src/bin/mainview/edi_mainview.c @@ -499,6 +499,10 @@ edi_mainview_project_search_popup_show(void) void edi_mainview_panel_remove(Edi_Mainview_Panel *panel) { + int panel_id = edi_mainview_panel_id(panel); + + _edi_project_config_panel_remove(panel_id); + evas_object_del(panel->welcome); evas_object_del(panel->content); evas_object_del(panel->tabs);