mainview: add method for testing if mainview is empty.

Summary: Also add checks to some GUI functions that crash Edi if there is no panel with no items.

Reviewers: ajwillia.ms

Reviewed By: ajwillia.ms

Differential Revision: https://phab.enlightenment.org/D5083
This commit is contained in:
Al Poole 2017-08-12 17:50:27 +01:00 committed by Andy Williams
parent ea8823a9d1
commit bcd0909ca9
3 changed files with 49 additions and 0 deletions

View File

@ -29,6 +29,16 @@ static void
dummy()
{}
Eina_Bool
edi_mainview_is_empty(void)
{
if (edi_mainview_panel_count() == 1 &&
!edi_mainview_panel_item_count(edi_mainview_panel_by_index(0)))
return EINA_TRUE;
return EINA_FALSE;
}
int
edi_mainview_panel_count(void)
{
@ -324,6 +334,8 @@ edi_mainview_item_close_path(const char *path)
void
edi_mainview_save()
{
if (edi_mainview_is_empty()) return;
edi_mainview_panel_save(_current_panel);
}
@ -342,72 +354,96 @@ edi_mainview_new_window()
void
edi_mainview_close()
{
if (edi_mainview_is_empty()) return;
edi_mainview_panel_close(_current_panel);
}
void
edi_mainview_undo()
{
if (edi_mainview_is_empty()) return;
edi_mainview_panel_undo(_current_panel);
}
Eina_Bool
edi_mainview_can_undo()
{
if (edi_mainview_is_empty()) return EINA_FALSE;
return edi_mainview_panel_can_undo(_current_panel);
}
void
edi_mainview_redo()
{
if (edi_mainview_is_empty()) return;
edi_mainview_panel_redo(_current_panel);
}
Eina_Bool
edi_mainview_can_redo()
{
if (edi_mainview_is_empty()) return EINA_FALSE;
return edi_mainview_panel_can_redo(_current_panel);
}
Eina_Bool
edi_mainview_modified()
{
if (edi_mainview_is_empty()) return EINA_FALSE;
return edi_mainview_panel_modified(_current_panel);
}
void
edi_mainview_cut()
{
if (edi_mainview_is_empty()) return;
edi_mainview_panel_cut(_current_panel);
}
void
edi_mainview_copy()
{
if (edi_mainview_is_empty()) return;
edi_mainview_panel_copy(_current_panel);
}
void
edi_mainview_paste()
{
if (edi_mainview_is_empty()) return;
edi_mainview_panel_paste(_current_panel);
}
void
edi_mainview_search()
{
if (edi_mainview_is_empty()) return;
edi_mainview_panel_search(_current_panel);
}
void
edi_mainview_goto(unsigned int number)
{
if (edi_mainview_is_empty()) return;
edi_mainview_panel_goto(_current_panel, number);
}
void
edi_mainview_goto_position(unsigned int row, unsigned int col)
{
if (edi_mainview_is_empty()) return;
edi_mainview_panel_goto_position(_current_panel, row, col);
}

View File

@ -345,6 +345,15 @@ Edi_Mainview_Panel *edi_mainview_panel_by_index(int index);
*/
int edi_mainview_panel_count(void);
/**
* Return whether the mainview is completely empty.
*
* @return true if there are any items open in any panel.
*
* @ingroup Panels
*/
Eina_Bool edi_mainview_is_empty(void);
/*
* Return the panel id of a given panel instance.
*

View File

@ -535,6 +535,8 @@ edi_mainview_panel_search(Edi_Mainview_Panel *panel)
{
Edi_Editor *editor;
if (edi_mainview_is_empty()) return;
editor = (Edi_Editor *)evas_object_data_get(panel->current->view, "editor");
if (editor)
@ -544,6 +546,8 @@ edi_mainview_panel_search(Edi_Mainview_Panel *panel)
void
edi_mainview_panel_goto(Edi_Mainview_Panel *panel, unsigned int number)
{
if (edi_mainview_is_empty()) return;
edi_mainview_panel_goto_position(panel, number, 1);
}