Close about window on escape

This commit is contained in:
John Scipione 2013-02-10 19:30:45 -05:00
parent 9f7ac4312a
commit 381629a7b6
1 changed files with 45 additions and 0 deletions

View File

@ -20,7 +20,10 @@
#include <Font.h>
#include <GroupLayoutBuilder.h>
#include <GroupView.h>
#include <InterfaceDefs.h>
#include <LayoutBuilder.h>
#include <Message.h>
#include <MessageFilter.h>
#include <Point.h>
#include <Roster.h>
#include <Screen.h>
@ -42,6 +45,46 @@ using BPrivate::gSystemCatalog;
#define B_TRANSLATION_CONTEXT "AboutWindow"
class EscapeFilter : public BMessageFilter {
public:
EscapeFilter(BWindow* target)
:
BMessageFilter(B_ANY_DELIVERY, B_ANY_SOURCE),
fTarget(target)
{
}
virtual ~EscapeFilter()
{
}
virtual filter_result
Filter(BMessage* message, BHandler** target)
{
filter_result result = B_DISPATCH_MESSAGE;
switch (message->what) {
case B_KEY_DOWN:
case B_UNMAPPED_KEY_DOWN: {
uint32 key;
if (message->FindInt32("raw_char",
(int32*)&key) >= B_OK) {
if (key == B_ESCAPE) {
result = B_SKIP_MESSAGE;
fTarget->PostMessage(
B_QUIT_REQUESTED);
}
}
break;
}
default:
break;
}
return result;
}
private:
BWindow* fTarget;
};
class StripeView : public BView {
public:
StripeView(BBitmap* icon);
@ -366,6 +409,8 @@ BAboutWindow::BAboutWindow(const char* appName, const char* signature)
AddChild(fAboutView);
MoveTo(AboutPosition(Frame().Width(), Frame().Height()));
AddCommonFilter(new EscapeFilter(this));
}