Browse Source

Add DestroyAllWindows helper that uses vector copy

Kevin Sawicki 8 years ago
parent
commit
8311aa667c
3 changed files with 11 additions and 2 deletions
  1. 1 2
      atom/browser/browser.cc
  2. 7 0
      atom/browser/window_list.cc
  3. 3 0
      atom/browser/window_list.h

+ 1 - 2
atom/browser/browser.cc

@@ -71,8 +71,7 @@ void Browser::Exit(mate::Arguments* args) {
     } else {
       // Unlike Quit(), we do not ask to close window, but destroy the window
       // without asking.
-      for (NativeWindow* window : *window_list)
-        window->CloseContents(nullptr);  // e.g. Destroy()
+      atom::WindowList::DestroyAllWindows();
     }
   }
 }

+ 7 - 0
atom/browser/window_list.cc

@@ -76,6 +76,13 @@ void WindowList::CloseAllWindows() {
       window->Close();
 }
 
+// static
+void WindowList::DestroyAllWindows() {
+  WindowVector windows = GetInstance()->windows_;
+  for (const auto& window : windows)
+    window->CloseContents(nullptr);  // e.g. Destroy()
+}
+
 WindowList::WindowList() {
 }
 

+ 3 - 0
atom/browser/window_list.h

@@ -51,6 +51,9 @@ class WindowList {
   // Closes all windows.
   static void CloseAllWindows();
 
+  // Destroy all windows.
+  static void DestroyAllWindows();
+
  private:
   WindowList();
   ~WindowList();