bool LauncherApp::QuitRequested() { for (int i = 0; BWindow* window = WindowAt(i); i++) { LauncherWindow* webWindow = dynamic_cast<LauncherWindow*>(window); if (!webWindow) continue; if (!webWindow->Lock()) continue; if (webWindow->QuitRequested()) { m_lastWindowFrame = webWindow->Frame(); webWindow->Quit(); i--; } else { webWindow->Unlock(); return false; } } BFile settingsFile; if (openSettingsFile(settingsFile, B_CREATE_FILE | B_ERASE_FILE | B_WRITE_ONLY)) { BMessage settingsArchive; settingsArchive.AddRect("window frame", m_lastWindowFrame); settingsArchive.Flatten(&settingsFile); } return true; }