ajwillia-ms pushed a commit to branch master.

http://git.enlightenment.org/tools/edi.git/commit/?id=c265dc2693c4538d92259895357a2e0f820d74bc

commit c265dc2693c4538d92259895357a2e0f820d74bc
Author: Al Poole <[email protected]>
Date:   Tue Jul 25 21:43:28 2017 +0100

    config: remove panel from config when we remove a panel from the UI.
    
    Reviewers: ajwillia.ms
    
    Reviewed By: ajwillia.ms
    
    Differential Revision: https://phab.enlightenment.org/D5039
---
 src/bin/edi_config.c            | 22 ++++++++++++++++++++++
 src/bin/edi_config.h            |  1 +
 src/bin/mainview/edi_mainview.c |  4 ++++
 3 files changed, 27 insertions(+)

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);

-- 


Reply via email to