From 34bdaab8bdd636b513c79517fd3a612acf85a26a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jonas=20Sundstr=C3=B6m?= Date: Sun, 15 Nov 2009 15:07:55 +0000 Subject: [PATCH] Simplified quitting. Propagate settings from window to application/settings when they change instead of collecting them when quitting. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34060 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- src/preferences/locale/Locale.cpp | 14 -------- src/preferences/locale/Locale.h | 2 +- src/preferences/locale/LocaleWindow.cpp | 47 +++++++++++++------------ src/preferences/locale/LocaleWindow.h | 2 +- 4 files changed, 27 insertions(+), 38 deletions(-) diff --git a/src/preferences/locale/Locale.cpp b/src/preferences/locale/Locale.cpp index 7d89f2bdc4..b4ac1d2221 100644 --- a/src/preferences/locale/Locale.cpp +++ b/src/preferences/locale/Locale.cpp @@ -52,7 +52,6 @@ public: virtual void MessageReceived(BMessage* message); virtual void AboutRequested(); - virtual bool QuitRequested(); private: Settings fSettings; @@ -187,19 +186,6 @@ LocalePreflet::AboutRequested() } -bool -LocalePreflet::QuitRequested() -{ - if (fLocaleWindow != NULL) { - fLocaleWindow->PostMessage(B_QUIT_REQUESTED); - fLocaleWindow = NULL; - return false; - } - - return true; -} - - // #pragma mark - diff --git a/src/preferences/locale/Locale.h b/src/preferences/locale/Locale.h index bc31164466..fb072b0370 100644 --- a/src/preferences/locale/Locale.h +++ b/src/preferences/locale/Locale.h @@ -13,7 +13,7 @@ extern const char* kSignature; static const uint32 kMsgCountrySelection = 'csel'; static const uint32 kMsgSettingsChanged = 'SeCh'; -static const uint32 kMsgSelectLanguage = 'slng'; +static const uint32 kMsgPrefLanguagesChanged = 'lang'; static const uint32 kMsgDefaults = 'dflt'; static const uint32 kMsgRevert = 'revt'; diff --git a/src/preferences/locale/LocaleWindow.cpp b/src/preferences/locale/LocaleWindow.cpp index 0ab8b643bc..9906159c3f 100644 --- a/src/preferences/locale/LocaleWindow.cpp +++ b/src/preferences/locale/LocaleWindow.cpp @@ -107,6 +107,7 @@ class LanguageListView: public BListView fDropIndex = -1; } } + Invoke(new BMessage(kMsgPrefLanguagesChanged)); } else BListView::MessageReceived(message); } private: @@ -297,7 +298,8 @@ LanguageListView::MouseMoved(BPoint where, uint32 transit, const BMessage* msg) LocaleWindow::LocaleWindow() : BWindow(BRect(0, 0, 0, 0), "Locale", B_TITLED_WINDOW, B_NOT_RESIZABLE - | B_NOT_ZOOMABLE | B_ASYNCHRONOUS_CONTROLS | B_AUTO_UPDATE_SIZE_LIMITS) + | B_NOT_ZOOMABLE | B_ASYNCHRONOUS_CONTROLS | B_AUTO_UPDATE_SIZE_LIMITS + | B_QUIT_ON_WINDOW_CLOSE) { BCountry* defaultCountry; be_locale_roster->GetDefaultCountry(&defaultCountry); @@ -453,27 +455,6 @@ LocaleWindow::LocaleWindow() } -bool -LocaleWindow::QuitRequested() -{ - BMessage update(kMsgSettingsChanged); - update.AddPoint("window_location", Frame().LeftTop()); - int index = 0; - while (index < fPreferredListView->CountItems()) { - update.AddString("language", static_cast - (fPreferredListView->ItemAt(index))->LanguageCode()); - index++; - } - // TODO also save Country tab settings - be_app_messenger.SendMessage(&update); - - be_app_messenger.SendMessage(B_QUIT_REQUESTED); - be_app_messenger.SendMessage(B_QUIT_REQUESTED); - // app eats the first message - return true; -} - - void LocaleWindow::MessageReceived(BMessage* message) { @@ -486,6 +467,19 @@ LocaleWindow::MessageReceived(BMessage* message) // TODO break; + case kMsgPrefLanguagesChanged: + { + BMessage update(kMsgSettingsChanged); + int index = 0; + while (index < fPreferredListView->CountItems()) { + update.AddString("language", static_cast + (fPreferredListView->ItemAt(index))->LanguageCode()); + index++; + } + be_app_messenger.SendMessage(&update); + break; + } + case kMsgCountrySelection: { // Country selection changed. @@ -511,3 +505,12 @@ LocaleWindow::MessageReceived(BMessage* message) } } + +void +LocaleWindow::FrameMoved(BPoint newPosition) +{ + BMessage update(kMsgSettingsChanged); + update.AddPoint("window_location", newPosition); + be_app_messenger.SendMessage(&update); +} + diff --git a/src/preferences/locale/LocaleWindow.h b/src/preferences/locale/LocaleWindow.h index 26ec889fbe..b6fc1bafa5 100644 --- a/src/preferences/locale/LocaleWindow.h +++ b/src/preferences/locale/LocaleWindow.h @@ -17,8 +17,8 @@ class LocaleWindow : public BWindow { public: LocaleWindow(); - virtual bool QuitRequested(); virtual void MessageReceived(BMessage* message); + virtual void FrameMoved(BPoint newPosition); private: BButton* fRevertButton;