Use a quit bool in B_ABOUT_REQUESTED to indicate that the about window has quit instead of using kAboutWindowClosed message. This prevents message signature clashes.

This commit is contained in:
John Scipione
2012-11-12 23:57:27 -05:00
parent 3fdab58446
commit 12a9a71db6
6 changed files with 38 additions and 20 deletions
-2
View File
@@ -11,8 +11,6 @@
#include <View.h>
const int32 kAboutWindowClosed = 'abwc';
class AboutView;
class BPoint;
class BHandler;
+8 -4
View File
@@ -1112,6 +1112,13 @@ ActivityView::MessageReceived(BMessage* message)
switch (message->what) {
case B_ABOUT_REQUESTED:
{
bool quit = false;
if (message->FindBool("quit", &quit) == B_OK && quit) {
fAboutWindow = NULL;
break;
}
if (fAboutWindow == NULL) {
fAboutWindow = new BAboutWindow(this, kAppName, kSignature);
fAboutWindow->AddCopyright(2008, "Haiku, Inc.");
@@ -1120,10 +1127,7 @@ ActivityView::MessageReceived(BMessage* message)
fAboutWindow->Activate();
break;
case kAboutWindowClosed:
fAboutWindow = NULL;
break;
}
case kMsgUpdateResolution:
{
+8 -4
View File
@@ -270,6 +270,13 @@ CalcView::MessageReceived(BMessage* message)
// (replicant) about box requested
case B_ABOUT_REQUESTED:
{
bool quit = false;
if (message->FindBool("quit", &quit) == B_OK && quit) {
fAboutWindow = NULL;
break;
}
if (fAboutWindow == NULL) {
// create the about window
const char* extraCopyrights[] = {
@@ -285,10 +292,7 @@ CalcView::MessageReceived(BMessage* message)
fAboutWindow->Activate();
break;
case kAboutWindowClosed:
fAboutWindow = NULL;
break;
}
case MSG_UNFLASH_KEY:
{
@@ -426,6 +426,13 @@ ProcessController::MessageReceived(BMessage *message)
}
case B_ABOUT_REQUESTED:
{
bool quit = false;
if (message->FindBool("quit", &quit) == B_OK && quit) {
fAboutWindow = NULL;
break;
}
if (fAboutWindow == NULL) {
const char* extraCopyrights[] = {
"1997-2001 Georges-Edouard Berenger",
@@ -446,10 +453,7 @@ ProcessController::MessageReceived(BMessage *message)
fAboutWindow->Activate();
break;
case kAboutWindowClosed:
fAboutWindow = NULL;
break;
}
default:
BView::MessageReceived(message);
+6 -2
View File
@@ -248,8 +248,12 @@ BAboutWindow::QuitRequested()
if (fCaller != NULL) {
status_t status;
BMessenger messenger(fCaller, NULL, &status);
if (status == B_OK && messenger.IsValid())
messenger.SendMessage(new BMessage(kAboutWindowClosed));
if (status == B_OK && messenger.IsValid()) {
BMessage* message = new BMessage(B_ABOUT_REQUESTED);
message->AddBool("quit", true);
messenger.SendMessage(message);
delete message;
}
}
return true;
+8 -4
View File
@@ -73,6 +73,13 @@ LocalePreflet::MessageReceived(BMessage* message)
break;
case B_ABOUT_REQUESTED:
{
bool quit = false;
if (message->FindBool("quit", &quit) == B_OK && quit) {
fAboutWindow = NULL;
break;
}
if (fAboutWindow == NULL) {
const char* authors[] = {
"Axel Dörfler",
@@ -89,10 +96,7 @@ LocalePreflet::MessageReceived(BMessage* message)
fAboutWindow->Activate();
break;
case kAboutWindowClosed:
fAboutWindow = NULL;
break;
}
default:
BApplication::MessageReceived(message);