diff --git a/data/io.elementary.code.appdata.xml.in b/data/io.elementary.code.appdata.xml.in index e7cf8a7018..be9b6bedf5 100644 --- a/data/io.elementary.code.appdata.xml.in +++ b/data/io.elementary.code.appdata.xml.in @@ -46,6 +46,18 @@ + + +

New features:

+
    +
  • New "Close Other Folders" menu item to help clean up your sidebar
  • +
+

Other updates:

+
    +
  • Updated translations
  • +
+
+

New features:

diff --git a/src/FolderManager/FileView.vala b/src/FolderManager/FileView.vala index cb70736b1a..15ccfb9cda 100644 --- a/src/FolderManager/FileView.vala +++ b/src/FolderManager/FileView.vala @@ -143,6 +143,16 @@ namespace Scratch.FolderManager { root.remove (folder_root); write_settings (); }); + + folder_root.close_all_except.connect (() => { + foreach (var child in root.children) { + if (child != folder_root) { + root.remove (child); + } + } + + write_settings (); + }); } private bool is_open (File folder) { diff --git a/src/FolderManager/ProjectFolderItem.vala b/src/FolderManager/ProjectFolderItem.vala index 4ff05f45a8..5e2fe4bbbe 100644 --- a/src/FolderManager/ProjectFolderItem.vala +++ b/src/FolderManager/ProjectFolderItem.vala @@ -23,6 +23,7 @@ namespace Scratch.FolderManager { private const uint GIT_UPDATE_RATE_LIMIT = 300; public signal void closed (); + public signal void close_all_except (); // Static source IDs for each instance of a top level folder, ensures we don't check for git updates too much private static Gee.HashMap git_update_timer_ids; @@ -95,6 +96,10 @@ namespace Scratch.FolderManager { var close_item = new Gtk.MenuItem.with_label (_("Close Folder")); close_item.activate.connect (() => { closed (); }); + var close_all_except_item = new Gtk.MenuItem.with_label (_("Close Other Folders")); + close_all_except_item.activate.connect (() => { close_all_except (); }); + close_all_except_item.sensitive = view.root.children.size > 1; + var delete_item = new Gtk.MenuItem.with_label (_("Move to Trash")); delete_item.activate.connect (() => { closed (); @@ -113,6 +118,7 @@ namespace Scratch.FolderManager { var menu = new Gtk.Menu (); menu.append (close_item); + menu.append (close_all_except_item); menu.append (create_submenu_for_open_in (info, file_type)); menu.append (create_submenu_for_new ()); menu.append (delete_item);