LaunchBox: finish saving settings before closing the window (#6347)

This commit is contained in:
Philippe Saint-Pierre
2012-12-12 18:05:18 -05:00
parent d7250540e0
commit 4d6bb87ea7
2 changed files with 22 additions and 16 deletions
+4 -2
View File
@@ -145,12 +145,14 @@ App::_StoreSettingsIfNeeded()
BMessage settings('sett'); BMessage settings('sett');
for (int32 i = 0; BWindow* window = WindowAt(i); i++) { for (int32 i = 0; BWindow* window = WindowAt(i); i++) {
if (MainWindow* padWindow = dynamic_cast<MainWindow*>(window)) { if (MainWindow* padWindow = dynamic_cast<MainWindow*>(window)) {
if (padWindow->Lock()) {
BMessage* windowSettings = padWindow->Settings(); BMessage* windowSettings = padWindow->Settings();
if (windowSettings && padWindow->Lock()) { if (windowSettings) {
padWindow->SaveSettings(windowSettings); padWindow->SaveSettings(windowSettings);
padWindow->Unlock();
settings.AddMessage("window", windowSettings); settings.AddMessage("window", windowSettings);
} }
padWindow->Unlock();
}
} }
} }
settings.AddSize("name panel size", fNamePanelSize); settings.AddSize("name panel size", fNamePanelSize);
+7 -3
View File
@@ -90,9 +90,11 @@ MainWindow::QuitRequested()
if (dynamic_cast<MainWindow*>(window)) if (dynamic_cast<MainWindow*>(window))
padWindowCount++; padWindowCount++;
} }
bool canClose = true;
if (Lock()) {
if (padWindowCount == 1) { if (padWindowCount == 1) {
be_app->PostMessage(B_QUIT_REQUESTED); be_app->PostMessage(B_QUIT_REQUESTED);
return false; canClose = false;
} else { } else {
BAlert* alert = new BAlert(B_TRANSLATE("last chance"), BAlert* alert = new BAlert(B_TRANSLATE("last chance"),
B_TRANSLATE("Really close this pad?\n" B_TRANSLATE("Really close this pad?\n"
@@ -100,9 +102,11 @@ MainWindow::QuitRequested()
B_TRANSLATE("Close"), B_TRANSLATE("Cancel"), NULL); B_TRANSLATE("Close"), B_TRANSLATE("Cancel"), NULL);
alert->SetShortcut(1, B_ESCAPE); alert->SetShortcut(1, B_ESCAPE);
if (alert->Go() == 1) if (alert->Go() == 1)
return false; canClose = false;
} }
return true; Unlock();
}
return canClose;
} }