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:
@@ -11,8 +11,6 @@
|
|||||||
#include <View.h>
|
#include <View.h>
|
||||||
|
|
||||||
|
|
||||||
const int32 kAboutWindowClosed = 'abwc';
|
|
||||||
|
|
||||||
class AboutView;
|
class AboutView;
|
||||||
class BPoint;
|
class BPoint;
|
||||||
class BHandler;
|
class BHandler;
|
||||||
|
|||||||
@@ -1112,6 +1112,13 @@ ActivityView::MessageReceived(BMessage* message)
|
|||||||
|
|
||||||
switch (message->what) {
|
switch (message->what) {
|
||||||
case B_ABOUT_REQUESTED:
|
case B_ABOUT_REQUESTED:
|
||||||
|
{
|
||||||
|
bool quit = false;
|
||||||
|
if (message->FindBool("quit", &quit) == B_OK && quit) {
|
||||||
|
fAboutWindow = NULL;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
if (fAboutWindow == NULL) {
|
if (fAboutWindow == NULL) {
|
||||||
fAboutWindow = new BAboutWindow(this, kAppName, kSignature);
|
fAboutWindow = new BAboutWindow(this, kAppName, kSignature);
|
||||||
fAboutWindow->AddCopyright(2008, "Haiku, Inc.");
|
fAboutWindow->AddCopyright(2008, "Haiku, Inc.");
|
||||||
@@ -1120,10 +1127,7 @@ ActivityView::MessageReceived(BMessage* message)
|
|||||||
fAboutWindow->Activate();
|
fAboutWindow->Activate();
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
}
|
||||||
case kAboutWindowClosed:
|
|
||||||
fAboutWindow = NULL;
|
|
||||||
break;
|
|
||||||
|
|
||||||
case kMsgUpdateResolution:
|
case kMsgUpdateResolution:
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -270,6 +270,13 @@ CalcView::MessageReceived(BMessage* message)
|
|||||||
|
|
||||||
// (replicant) about box requested
|
// (replicant) about box requested
|
||||||
case B_ABOUT_REQUESTED:
|
case B_ABOUT_REQUESTED:
|
||||||
|
{
|
||||||
|
bool quit = false;
|
||||||
|
if (message->FindBool("quit", &quit) == B_OK && quit) {
|
||||||
|
fAboutWindow = NULL;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
if (fAboutWindow == NULL) {
|
if (fAboutWindow == NULL) {
|
||||||
// create the about window
|
// create the about window
|
||||||
const char* extraCopyrights[] = {
|
const char* extraCopyrights[] = {
|
||||||
@@ -285,10 +292,7 @@ CalcView::MessageReceived(BMessage* message)
|
|||||||
fAboutWindow->Activate();
|
fAboutWindow->Activate();
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
}
|
||||||
case kAboutWindowClosed:
|
|
||||||
fAboutWindow = NULL;
|
|
||||||
break;
|
|
||||||
|
|
||||||
case MSG_UNFLASH_KEY:
|
case MSG_UNFLASH_KEY:
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -426,6 +426,13 @@ ProcessController::MessageReceived(BMessage *message)
|
|||||||
}
|
}
|
||||||
|
|
||||||
case B_ABOUT_REQUESTED:
|
case B_ABOUT_REQUESTED:
|
||||||
|
{
|
||||||
|
bool quit = false;
|
||||||
|
if (message->FindBool("quit", &quit) == B_OK && quit) {
|
||||||
|
fAboutWindow = NULL;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
if (fAboutWindow == NULL) {
|
if (fAboutWindow == NULL) {
|
||||||
const char* extraCopyrights[] = {
|
const char* extraCopyrights[] = {
|
||||||
"1997-2001 Georges-Edouard Berenger",
|
"1997-2001 Georges-Edouard Berenger",
|
||||||
@@ -446,10 +453,7 @@ ProcessController::MessageReceived(BMessage *message)
|
|||||||
fAboutWindow->Activate();
|
fAboutWindow->Activate();
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
}
|
||||||
case kAboutWindowClosed:
|
|
||||||
fAboutWindow = NULL;
|
|
||||||
break;
|
|
||||||
|
|
||||||
default:
|
default:
|
||||||
BView::MessageReceived(message);
|
BView::MessageReceived(message);
|
||||||
|
|||||||
@@ -248,8 +248,12 @@ BAboutWindow::QuitRequested()
|
|||||||
if (fCaller != NULL) {
|
if (fCaller != NULL) {
|
||||||
status_t status;
|
status_t status;
|
||||||
BMessenger messenger(fCaller, NULL, &status);
|
BMessenger messenger(fCaller, NULL, &status);
|
||||||
if (status == B_OK && messenger.IsValid())
|
if (status == B_OK && messenger.IsValid()) {
|
||||||
messenger.SendMessage(new BMessage(kAboutWindowClosed));
|
BMessage* message = new BMessage(B_ABOUT_REQUESTED);
|
||||||
|
message->AddBool("quit", true);
|
||||||
|
messenger.SendMessage(message);
|
||||||
|
delete message;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
|||||||
@@ -73,6 +73,13 @@ LocalePreflet::MessageReceived(BMessage* message)
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case B_ABOUT_REQUESTED:
|
case B_ABOUT_REQUESTED:
|
||||||
|
{
|
||||||
|
bool quit = false;
|
||||||
|
if (message->FindBool("quit", &quit) == B_OK && quit) {
|
||||||
|
fAboutWindow = NULL;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
if (fAboutWindow == NULL) {
|
if (fAboutWindow == NULL) {
|
||||||
const char* authors[] = {
|
const char* authors[] = {
|
||||||
"Axel Dörfler",
|
"Axel Dörfler",
|
||||||
@@ -89,10 +96,7 @@ LocalePreflet::MessageReceived(BMessage* message)
|
|||||||
fAboutWindow->Activate();
|
fAboutWindow->Activate();
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
}
|
||||||
case kAboutWindowClosed:
|
|
||||||
fAboutWindow = NULL;
|
|
||||||
break;
|
|
||||||
|
|
||||||
default:
|
default:
|
||||||
BApplication::MessageReceived(message);
|
BApplication::MessageReceived(message);
|
||||||
|
|||||||
Reference in New Issue
Block a user