[tabs] add a close all feature

For the times when you just have too many tabs open!
This commit is contained in:
Andy Williams 2016-02-16 00:15:52 +00:00
parent 49fa89dc03
commit a744f48420
3 changed files with 43 additions and 8 deletions

View File

@ -704,6 +704,13 @@ _edi_menu_close_cb(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED,
edi_mainview_close();
}
static void
_edi_menu_closeall_cb(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED,
void *event_info EINA_UNUSED)
{
edi_mainview_closeall();
}
static void
_edi_menu_settings_cb(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED,
void *event_info EINA_UNUSED)
@ -815,6 +822,7 @@ _edi_menu_setup(Evas_Object *win)
elm_menu_item_add(menu, menu_it, "document-save", "Save", _edi_menu_save_cb, NULL);
elm_menu_item_add(menu, menu_it, "window-new", "New window", _edi_menu_open_window_cb, NULL);
elm_menu_item_add(menu, menu_it, "stock_close", "Close", _edi_menu_close_cb, NULL);
elm_menu_item_add(menu, menu_it, "stock_close", "Close all", _edi_menu_closeall_cb, NULL);
elm_menu_item_separator_add(menu, menu_it);
elm_menu_item_add(menu, menu_it, "preferences-desktop", "Settings", _edi_menu_settings_cb, NULL);
elm_menu_item_separator_add(menu, menu_it);

View File

@ -479,22 +479,42 @@ edi_mainview_new_window()
edi_mainview_open_window_path(item->path);
}
static void
_edi_mainview_close_item(Edi_Mainview_Item *item)
{
if (!item)
return;
elm_naviframe_item_promote(item->view);
elm_naviframe_item_pop(nf);
elm_object_item_del(item->tab);
_edi_mainview_items = eina_list_remove(_edi_mainview_items, item);
_edi_project_config_tab_remove(item->path);
eina_stringshare_del(item->path);
free(item);
}
void
edi_mainview_close()
{
Edi_Mainview_Item *item;
item = edi_mainview_item_current_get();
if (!item)
return;
elm_naviframe_item_pop(nf);
elm_object_item_del(elm_toolbar_selected_item_get(tb));
_edi_mainview_items = eina_list_remove(_edi_mainview_items, item);
_edi_mainview_close_item(item);
}
_edi_project_config_tab_remove(item->path);
eina_stringshare_del(item->path);
free(item);
void
edi_mainview_closeall()
{
Eina_List *list, *next;
Edi_Mainview_Item *item;
EINA_LIST_FOREACH_SAFE(_edi_mainview_items, list, next, item)
{
_edi_mainview_close_item(item);
}
}
void

View File

@ -110,6 +110,13 @@ void edi_mainview_new_window();
*/
void edi_mainview_close();
/**
* Close all open files.
*
* @ingroup Content
*/
void edi_mainview_closeall();
/**
* Cut the current selection into the clipboard.
*