forked from enlightenment/edi
mainview: fix close_all and close.
Summary: Makes sure all panels close and remain with only one panel. When tab is last in panel, remove the panel also. Also best not to free a NULL panel or its members. Reviewers: ajwillia.ms Reviewed By: ajwillia.ms Tags: #edi Differential Revision: https://phab.enlightenment.org/D5094
This commit is contained in:
parent
7a8119af60
commit
758f74de28
|
@ -622,6 +622,9 @@ _edi_project_config_panel_remove(int panel_id)
|
||||||
Edi_Project_Config_Tab *tab;
|
Edi_Project_Config_Tab *tab;
|
||||||
Edi_Project_Config_Panel *panel = eina_list_nth(_edi_project_config->panels, panel_id);
|
Edi_Project_Config_Panel *panel = eina_list_nth(_edi_project_config->panels, panel_id);
|
||||||
|
|
||||||
|
if (!panel)
|
||||||
|
return;
|
||||||
|
|
||||||
_edi_project_config->panels = eina_list_remove(_edi_project_config->panels, panel);
|
_edi_project_config->panels = eina_list_remove(_edi_project_config->panels, panel);
|
||||||
|
|
||||||
EINA_LIST_FREE(panel->tabs, tab)
|
EINA_LIST_FREE(panel->tabs, tab)
|
||||||
|
|
|
@ -305,10 +305,19 @@ void
|
||||||
edi_mainview_close_all(void)
|
edi_mainview_close_all(void)
|
||||||
{
|
{
|
||||||
Eina_List *item;
|
Eina_List *item;
|
||||||
Edi_Mainview_Panel *it;
|
Edi_Mainview_Panel *panel, *it;
|
||||||
|
|
||||||
|
if (edi_mainview_is_empty()) return;
|
||||||
|
|
||||||
EINA_LIST_FOREACH(_edi_mainview_panels, item, it)
|
EINA_LIST_FOREACH(_edi_mainview_panels, item, it)
|
||||||
|
{
|
||||||
|
if (edi_mainview_panel_item_count(it))
|
||||||
edi_mainview_panel_close_all(it);
|
edi_mainview_panel_close_all(it);
|
||||||
|
edi_mainview_panel_remove(it);
|
||||||
|
}
|
||||||
|
|
||||||
|
panel = edi_mainview_panel_append();
|
||||||
|
edi_mainview_panel_focus(panel);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
@ -354,9 +363,12 @@ edi_mainview_new_window()
|
||||||
void
|
void
|
||||||
edi_mainview_close()
|
edi_mainview_close()
|
||||||
{
|
{
|
||||||
if (edi_mainview_is_empty()) return;
|
if (!_current_panel || edi_mainview_is_empty()) return;
|
||||||
|
|
||||||
edi_mainview_panel_close(_current_panel);
|
edi_mainview_panel_close(_current_panel);
|
||||||
|
if (edi_mainview_panel_count() > 1 &&
|
||||||
|
!edi_mainview_panel_item_count(_current_panel))
|
||||||
|
edi_mainview_panel_remove(_current_panel);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
@ -541,6 +553,8 @@ edi_mainview_panel_remove(Edi_Mainview_Panel *panel)
|
||||||
edi_mainview_panel_free(panel);
|
edi_mainview_panel_free(panel);
|
||||||
|
|
||||||
_edi_mainview_panels = eina_list_remove(_edi_mainview_panels, panel);
|
_edi_mainview_panels = eina_list_remove(_edi_mainview_panels, panel);
|
||||||
|
|
||||||
|
_current_panel = edi_mainview_panel_by_index(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
Edi_Mainview_Panel *
|
Edi_Mainview_Panel *
|
||||||
|
|
Loading…
Reference in New Issue