From 4d6bb87ea72eebfcda0c1733788503aa91f067f1 Mon Sep 17 00:00:00 2001 From: Philippe Saint-Pierre Date: Wed, 12 Dec 2012 18:03:31 -0500 Subject: [PATCH] LaunchBox: finish saving settings before closing the window (#6347) --- src/apps/launchbox/App.cpp | 10 ++++++---- src/apps/launchbox/MainWindow.cpp | 28 ++++++++++++++++------------ 2 files changed, 22 insertions(+), 16 deletions(-) diff --git a/src/apps/launchbox/App.cpp b/src/apps/launchbox/App.cpp index c13756b2d2..fcf5447852 100644 --- a/src/apps/launchbox/App.cpp +++ b/src/apps/launchbox/App.cpp @@ -145,11 +145,13 @@ App::_StoreSettingsIfNeeded() BMessage settings('sett'); for (int32 i = 0; BWindow* window = WindowAt(i); i++) { if (MainWindow* padWindow = dynamic_cast(window)) { - BMessage* windowSettings = padWindow->Settings(); - if (windowSettings && padWindow->Lock()) { - padWindow->SaveSettings(windowSettings); + if (padWindow->Lock()) { + BMessage* windowSettings = padWindow->Settings(); + if (windowSettings) { + padWindow->SaveSettings(windowSettings); + settings.AddMessage("window", windowSettings); + } padWindow->Unlock(); - settings.AddMessage("window", windowSettings); } } } diff --git a/src/apps/launchbox/MainWindow.cpp b/src/apps/launchbox/MainWindow.cpp index 3d3edd8af8..690fd90717 100644 --- a/src/apps/launchbox/MainWindow.cpp +++ b/src/apps/launchbox/MainWindow.cpp @@ -90,19 +90,23 @@ MainWindow::QuitRequested() if (dynamic_cast(window)) padWindowCount++; } - if (padWindowCount == 1) { - be_app->PostMessage(B_QUIT_REQUESTED); - return false; - } else { - BAlert* alert = new BAlert(B_TRANSLATE("last chance"), - B_TRANSLATE("Really close this pad?\n" - "(The pad will not be remembered.)"), - B_TRANSLATE("Close"), B_TRANSLATE("Cancel"), NULL); - alert->SetShortcut(1, B_ESCAPE); - if (alert->Go() == 1) - return false; + bool canClose = true; + if (Lock()) { + if (padWindowCount == 1) { + be_app->PostMessage(B_QUIT_REQUESTED); + canClose = false; + } else { + BAlert* alert = new BAlert(B_TRANSLATE("last chance"), + B_TRANSLATE("Really close this pad?\n" + "(The pad will not be remembered.)"), + B_TRANSLATE("Close"), B_TRANSLATE("Cancel"), NULL); + alert->SetShortcut(1, B_ESCAPE); + if (alert->Go() == 1) + canClose = false; + } + Unlock(); } - return true; + return canClose; }