LaunchBox: finish saving settings before closing the window (#6347)
This commit is contained in:
@@ -145,11 +145,13 @@ 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)) {
|
||||||
BMessage* windowSettings = padWindow->Settings();
|
if (padWindow->Lock()) {
|
||||||
if (windowSettings && padWindow->Lock()) {
|
BMessage* windowSettings = padWindow->Settings();
|
||||||
padWindow->SaveSettings(windowSettings);
|
if (windowSettings) {
|
||||||
|
padWindow->SaveSettings(windowSettings);
|
||||||
|
settings.AddMessage("window", windowSettings);
|
||||||
|
}
|
||||||
padWindow->Unlock();
|
padWindow->Unlock();
|
||||||
settings.AddMessage("window", windowSettings);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -90,19 +90,23 @@ MainWindow::QuitRequested()
|
|||||||
if (dynamic_cast<MainWindow*>(window))
|
if (dynamic_cast<MainWindow*>(window))
|
||||||
padWindowCount++;
|
padWindowCount++;
|
||||||
}
|
}
|
||||||
if (padWindowCount == 1) {
|
bool canClose = true;
|
||||||
be_app->PostMessage(B_QUIT_REQUESTED);
|
if (Lock()) {
|
||||||
return false;
|
if (padWindowCount == 1) {
|
||||||
} else {
|
be_app->PostMessage(B_QUIT_REQUESTED);
|
||||||
BAlert* alert = new BAlert(B_TRANSLATE("last chance"),
|
canClose = false;
|
||||||
B_TRANSLATE("Really close this pad?\n"
|
} else {
|
||||||
"(The pad will not be remembered.)"),
|
BAlert* alert = new BAlert(B_TRANSLATE("last chance"),
|
||||||
B_TRANSLATE("Close"), B_TRANSLATE("Cancel"), NULL);
|
B_TRANSLATE("Really close this pad?\n"
|
||||||
alert->SetShortcut(1, B_ESCAPE);
|
"(The pad will not be remembered.)"),
|
||||||
if (alert->Go() == 1)
|
B_TRANSLATE("Close"), B_TRANSLATE("Cancel"), NULL);
|
||||||
return false;
|
alert->SetShortcut(1, B_ESCAPE);
|
||||||
|
if (alert->Go() == 1)
|
||||||
|
canClose = false;
|
||||||
|
}
|
||||||
|
Unlock();
|
||||||
}
|
}
|
||||||
return true;
|
return canClose;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user