ajwillia-ms pushed a commit to branch master.

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

commit a744f48420f44002d4c4565a75bc27986693fd47
Author: Andy Williams <a...@andywilliams.me>
Date:   Tue Feb 16 00:15:52 2016 +0000

    [tabs] add a close all feature
    
    For the times when you just have too many tabs open!
---
 src/bin/edi_main.c              |  8 ++++++++
 src/bin/mainview/edi_mainview.c | 32 ++++++++++++++++++++++++++------
 src/bin/mainview/edi_mainview.h |  7 +++++++
 3 files changed, 41 insertions(+), 6 deletions(-)

diff --git a/src/bin/edi_main.c b/src/bin/edi_main.c
index d95f0ab..9358574 100644
--- a/src/bin/edi_main.c
+++ b/src/bin/edi_main.c
@@ -705,6 +705,13 @@ _edi_menu_close_cb(void *data EINA_UNUSED, Evas_Object 
*obj EINA_UNUSED,
 }
 
 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);
diff --git a/src/bin/mainview/edi_mainview.c b/src/bin/mainview/edi_mainview.c
index ccd9f07..923e8e0 100644
--- a/src/bin/mainview/edi_mainview.c
+++ b/src/bin/mainview/edi_mainview.c
@@ -479,17 +479,15 @@ edi_mainview_new_window()
    edi_mainview_open_window_path(item->path);
 }
 
-void
-edi_mainview_close()
+static void
+_edi_mainview_close_item(Edi_Mainview_Item *item)
 {
-   Edi_Mainview_Item *item;
-
-   item = edi_mainview_item_current_get();
    if (!item)
      return;
 
+   elm_naviframe_item_promote(item->view);
    elm_naviframe_item_pop(nf);
-   elm_object_item_del(elm_toolbar_selected_item_get(tb));
+   elm_object_item_del(item->tab);
    _edi_mainview_items = eina_list_remove(_edi_mainview_items, item);
 
    _edi_project_config_tab_remove(item->path);
@@ -498,6 +496,28 @@ edi_mainview_close()
 }
 
 void
+edi_mainview_close()
+{
+   Edi_Mainview_Item *item;
+
+   item = edi_mainview_item_current_get();
+
+   _edi_mainview_close_item(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
 edi_mainview_cut()
 {
    Evas_Object *content;
diff --git a/src/bin/mainview/edi_mainview.h b/src/bin/mainview/edi_mainview.h
index b8c26a1..cd815b1 100644
--- a/src/bin/mainview/edi_mainview.h
+++ b/src/bin/mainview/edi_mainview.h
@@ -111,6 +111,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.
  *
  * @ingroup Content

-- 


Reply via email to