From 0ba045597e1b5d2ef2dfa3a2dd26958cd41ac2d7 Mon Sep 17 00:00:00 2001 From: Igor Montagner Date: Mon, 16 Mar 2020 08:57:01 -0300 Subject: [PATCH 01/12] Fix #774: all documents that were opened in the FileView are closed when their corresponding project is closed. --- src/FolderManager/FileItem.vala | 12 +++++++++++- src/FolderManager/FileView.vala | 7 +++++-- src/FolderManager/FolderItem.vala | 4 ++-- src/MainWindow.vala | 23 +++++++++++++++++++++-- src/Services/Document.vala | 4 +++- 5 files changed, 42 insertions(+), 8 deletions(-) diff --git a/src/FolderManager/FileItem.vala b/src/FolderManager/FileItem.vala index e74f7850b4..7322f3c905 100644 --- a/src/FolderManager/FileItem.vala +++ b/src/FolderManager/FileItem.vala @@ -22,9 +22,19 @@ namespace Scratch.FolderManager { /** * Normal item in the source list, represents a textfile. */ + + internal class FileItem : Item { - public FileItem (File file, FileView view) { + private ProjectFolderItem _root; + public ProjectFolderItem project_root { + get { + return _root; + } + } + + public FileItem (File file, FileView view, ProjectFolderItem root) { Object (file: file, view: view); + this._root = root; } public override Gtk.Menu? get_context_menu () { diff --git a/src/FolderManager/FileView.vala b/src/FolderManager/FileView.vala index 15ccfb9cda..b7925e058b 100644 --- a/src/FolderManager/FileView.vala +++ b/src/FolderManager/FileView.vala @@ -25,7 +25,8 @@ namespace Scratch.FolderManager { internal class FileView : Granite.Widgets.SourceList, Code.PaneSwitcher { private FolderManagerSettings settings; - public signal void select (string file); + public signal void select (string file, string project_root); + public signal void project_closed (string project_root); // This is a workaround for SourceList silliness: you cannot remove an item // without it automatically selecting another one. @@ -52,7 +53,8 @@ namespace Scratch.FolderManager { } if (item is FileItem) { - select ((item as FileItem).file.path); + var it = item as FileItem; + select (it.file.path, it.project_root.file.path ); } } @@ -142,6 +144,7 @@ namespace Scratch.FolderManager { folder_root.closed.connect (() => { root.remove (folder_root); write_settings (); + project_closed (folder_root.file.path); }); folder_root.close_all_except.connect (() => { diff --git a/src/FolderManager/FolderItem.vala b/src/FolderManager/FolderItem.vala index c0fb95106b..f44ea7ede9 100644 --- a/src/FolderManager/FolderItem.vala +++ b/src/FolderManager/FolderItem.vala @@ -183,7 +183,7 @@ namespace Scratch.FolderManager { if (child.is_valid_directory) { item = new FolderItem (child, view); } else if (child.is_valid_textfile) { - item = new FileItem (child, view); + item = new FileItem (child, view, get_root_folder()); } if (item != null) { @@ -288,7 +288,7 @@ namespace Scratch.FolderManager { if (file.is_valid_directory) { item = new FolderItem (file, view); } else if (!file.is_temporary) { - item = new FileItem (file, view); + item = new FileItem (file, view, get_root_folder()); } } diff --git a/src/MainWindow.vala b/src/MainWindow.vala index 9dedecd425..0f16d7b534 100644 --- a/src/MainWindow.vala +++ b/src/MainWindow.vala @@ -331,9 +331,9 @@ namespace Scratch { folder_manager_view = new FolderManager.FileView (); - folder_manager_view.select.connect ((a) => { + folder_manager_view.select.connect ((a, b) => { var file = new Scratch.FolderManager.File (a); - var doc = new Scratch.Services.Document (actions, file.file); + var doc = new Scratch.Services.Document (actions, file.file, b); if (file.is_valid_textfile) { open_document (doc); @@ -342,6 +342,25 @@ namespace Scratch { } }); + + folder_manager_view.project_closed.connect((a) => { + foreach (Scratch.Widgets.DocumentView? v in split_view.views) { + GLib.List to_close = new GLib.List(); + foreach (Services.Document doc in v.docs) { + if (doc.project_folder == a) { + to_close.append (doc); + } + stdout.printf("%s (pasta): %s %s\n", doc.file.get_basename(), doc.project_folder, doc.project_folder == a?"fecha":"não"); + } + + foreach (Services.Document doc in to_close) { + v.close_document (doc); + } + + } + stdout.printf("%s fechou\n", a); + }); + folder_manager_view.root.child_added.connect (() => { if (folder_manager_view.get_n_visible_children (folder_manager_view.root) == 0) { project_pane.add_tab (folder_manager_view); diff --git a/src/Services/Document.vala b/src/Services/Document.vala index fccd8fc7a4..5745e43d5f 100644 --- a/src/Services/Document.vala +++ b/src/Services/Document.vala @@ -90,6 +90,7 @@ namespace Scratch.Services { public string original_content; private string last_save_content; public bool saved = true; + public string project_folder; private Gtk.ScrolledWindow scroll; private Gtk.InfoBar info_bar; @@ -109,9 +110,10 @@ namespace Scratch.Services { // Zeitgeist integration private ZeitgeistLogger zg_log = new ZeitgeistLogger (); #endif - public Document (SimpleActionGroup actions, File? file = null) { + public Document (SimpleActionGroup actions, File? file = null, string? project_folder = null) { this.actions = actions; this.file = file; + this.project_folder = project_folder; page = main_stack; } From 970054caa403caaa9b56c8703055926521fcd6e0 Mon Sep 17 00:00:00 2001 From: Igor Montagner Date: Mon, 16 Mar 2020 09:00:29 -0300 Subject: [PATCH 02/12] =?UTF-8?q?printfs=20in=C3=BAteis?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/MainWindow.vala | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/MainWindow.vala b/src/MainWindow.vala index 0f16d7b534..7cfc17bee5 100644 --- a/src/MainWindow.vala +++ b/src/MainWindow.vala @@ -350,7 +350,6 @@ namespace Scratch { if (doc.project_folder == a) { to_close.append (doc); } - stdout.printf("%s (pasta): %s %s\n", doc.file.get_basename(), doc.project_folder, doc.project_folder == a?"fecha":"não"); } foreach (Services.Document doc in to_close) { @@ -358,7 +357,6 @@ namespace Scratch { } } - stdout.printf("%s fechou\n", a); }); folder_manager_view.root.child_added.connect (() => { From 3eca4ddb56710f4fe82c4e769895006a7b353b90 Mon Sep 17 00:00:00 2001 From: Igor Montagner Date: Wed, 18 Mar 2020 19:34:36 -0300 Subject: [PATCH 03/12] Update src/Services/Document.vala MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Corentin Noël --- src/Services/Document.vala | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Services/Document.vala b/src/Services/Document.vala index 5745e43d5f..deab2ae0f6 100644 --- a/src/Services/Document.vala +++ b/src/Services/Document.vala @@ -90,7 +90,7 @@ namespace Scratch.Services { public string original_content; private string last_save_content; public bool saved = true; - public string project_folder; + public string? project_folder; private Gtk.ScrolledWindow scroll; private Gtk.InfoBar info_bar; From 2825a8e99c9ffc4be0cd2935b8dc2363eb4b7edf Mon Sep 17 00:00:00 2001 From: Igor Montagner Date: Wed, 18 Mar 2020 19:34:49 -0300 Subject: [PATCH 04/12] Update src/MainWindow.vala MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Corentin Noël --- src/MainWindow.vala | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/MainWindow.vala b/src/MainWindow.vala index 7cfc17bee5..6f8917934f 100644 --- a/src/MainWindow.vala +++ b/src/MainWindow.vala @@ -352,7 +352,7 @@ namespace Scratch { } } - foreach (Services.Document doc in to_close) { + foreach (unowned Services.Document doc in to_close) { v.close_document (doc); } From 8d983f456ae8b289898d759462b652cfb5035373 Mon Sep 17 00:00:00 2001 From: Igor Montagner Date: Wed, 18 Mar 2020 19:35:18 -0300 Subject: [PATCH 05/12] Update src/FolderManager/FileView.vala MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Corentin Noël --- src/FolderManager/FileView.vala | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/FolderManager/FileView.vala b/src/FolderManager/FileView.vala index b7925e058b..845ed6146b 100644 --- a/src/FolderManager/FileView.vala +++ b/src/FolderManager/FileView.vala @@ -53,7 +53,7 @@ namespace Scratch.FolderManager { } if (item is FileItem) { - var it = item as FileItem; + unowned FileItem it = (FileItem) item; select (it.file.path, it.project_root.file.path ); } } From b8d5a8fcbbf03658190ca05b5324eb2e8305f2f1 Mon Sep 17 00:00:00 2001 From: Igor Montagner Date: Wed, 18 Mar 2020 19:35:41 -0300 Subject: [PATCH 06/12] Update src/FolderManager/FileItem.vala MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Corentin Noël --- src/FolderManager/FileItem.vala | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/FolderManager/FileItem.vala b/src/FolderManager/FileItem.vala index 7322f3c905..bc2dc59b60 100644 --- a/src/FolderManager/FileItem.vala +++ b/src/FolderManager/FileItem.vala @@ -33,7 +33,7 @@ namespace Scratch.FolderManager { } public FileItem (File file, FileView view, ProjectFolderItem root) { - Object (file: file, view: view); + Object (file: file, view: view, project_root: root); this._root = root; } From 515b36e3064fa6da838f3ee1547d86f3db0f4929 Mon Sep 17 00:00:00 2001 From: Igor Montagner Date: Wed, 18 Mar 2020 19:36:01 -0300 Subject: [PATCH 07/12] Update src/MainWindow.vala MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Corentin Noël --- src/MainWindow.vala | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/MainWindow.vala b/src/MainWindow.vala index 6f8917934f..6e6202af71 100644 --- a/src/MainWindow.vala +++ b/src/MainWindow.vala @@ -331,7 +331,7 @@ namespace Scratch { folder_manager_view = new FolderManager.FileView (); - folder_manager_view.select.connect ((a, b) => { + folder_manager_view.select.connect ((a, project_root) => { var file = new Scratch.FolderManager.File (a); var doc = new Scratch.Services.Document (actions, file.file, b); From 73645359c6470df371dc731b6e86c97311df64fd Mon Sep 17 00:00:00 2001 From: Igor Montagner Date: Wed, 18 Mar 2020 19:36:09 -0300 Subject: [PATCH 08/12] Update src/FolderManager/FolderItem.vala MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Corentin Noël --- src/FolderManager/FolderItem.vala | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/FolderManager/FolderItem.vala b/src/FolderManager/FolderItem.vala index f44ea7ede9..86698a3fdb 100644 --- a/src/FolderManager/FolderItem.vala +++ b/src/FolderManager/FolderItem.vala @@ -288,7 +288,7 @@ namespace Scratch.FolderManager { if (file.is_valid_directory) { item = new FolderItem (file, view); } else if (!file.is_temporary) { - item = new FileItem (file, view, get_root_folder()); + item = new FileItem (file, view, get_root_folder ()); } } From 36d8d7bacdb765096d9ec932561e354c95e8e119 Mon Sep 17 00:00:00 2001 From: Igor Montagner Date: Wed, 18 Mar 2020 19:36:15 -0300 Subject: [PATCH 09/12] Update src/FolderManager/FolderItem.vala MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Corentin Noël --- src/FolderManager/FolderItem.vala | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/FolderManager/FolderItem.vala b/src/FolderManager/FolderItem.vala index 86698a3fdb..b57e99f971 100644 --- a/src/FolderManager/FolderItem.vala +++ b/src/FolderManager/FolderItem.vala @@ -183,7 +183,7 @@ namespace Scratch.FolderManager { if (child.is_valid_directory) { item = new FolderItem (child, view); } else if (child.is_valid_textfile) { - item = new FileItem (child, view, get_root_folder()); + item = new FileItem (child, view, get_root_folder ()); } if (item != null) { From 88e9a334bb9fc8506c58fe26f08f2ec6eaa92bb9 Mon Sep 17 00:00:00 2001 From: Igor Montagner Date: Wed, 18 Mar 2020 19:36:31 -0300 Subject: [PATCH 10/12] Update src/FolderManager/FileItem.vala MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Corentin Noël --- src/FolderManager/FileItem.vala | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/FolderManager/FileItem.vala b/src/FolderManager/FileItem.vala index bc2dc59b60..4408ae988a 100644 --- a/src/FolderManager/FileItem.vala +++ b/src/FolderManager/FileItem.vala @@ -26,7 +26,7 @@ namespace Scratch.FolderManager { internal class FileItem : Item { private ProjectFolderItem _root; - public ProjectFolderItem project_root { + public ProjectFolderItem project_root { get; construct; } get { return _root; } From 1fe69959e48cc820db36bf278d11b98bca9958ef Mon Sep 17 00:00:00 2001 From: Igor Montagner Date: Wed, 18 Mar 2020 19:36:48 -0300 Subject: [PATCH 11/12] Update src/MainWindow.vala MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Corentin Noël --- src/MainWindow.vala | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/MainWindow.vala b/src/MainWindow.vala index 6e6202af71..fc18d332ff 100644 --- a/src/MainWindow.vala +++ b/src/MainWindow.vala @@ -345,7 +345,7 @@ namespace Scratch { folder_manager_view.project_closed.connect((a) => { foreach (Scratch.Widgets.DocumentView? v in split_view.views) { - GLib.List to_close = new GLib.List(); + var to_close = new GLib.List(); foreach (Services.Document doc in v.docs) { if (doc.project_folder == a) { to_close.append (doc); From a30188016da03ba55fe796d255b3332e3dd33261 Mon Sep 17 00:00:00 2001 From: Igor Montagner Date: Wed, 18 Mar 2020 19:43:51 -0300 Subject: [PATCH 12/12] fix last linting problems --- src/MainWindow.vala | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/MainWindow.vala b/src/MainWindow.vala index fc18d332ff..8e1d3d57b1 100644 --- a/src/MainWindow.vala +++ b/src/MainWindow.vala @@ -343,9 +343,9 @@ namespace Scratch { }); - folder_manager_view.project_closed.connect((a) => { + folder_manager_view.project_closed.connect ((a) => { foreach (Scratch.Widgets.DocumentView? v in split_view.views) { - var to_close = new GLib.List(); + var to_close = new GLib.List (); foreach (Services.Document doc in v.docs) { if (doc.project_folder == a) { to_close.append (doc);