diff --git a/src/bin/screen_blanker/ScreenBlanker.cpp b/src/bin/screen_blanker/ScreenBlanker.cpp index 6798b7e23c..b03f9444e9 100644 --- a/src/bin/screen_blanker/ScreenBlanker.cpp +++ b/src/bin/screen_blanker/ScreenBlanker.cpp @@ -284,6 +284,13 @@ ScreenBlanker::QuitRequested() } +bool +ScreenBlanker::IsPasswordWindowShown() const +{ + return fPasswordWindow != NULL && !fPasswordWindow->IsHidden(); +} + + void ScreenBlanker::_Shutdown() { diff --git a/src/bin/screen_blanker/ScreenBlanker.h b/src/bin/screen_blanker/ScreenBlanker.h index 98e4becad3..9f4af7fea4 100644 --- a/src/bin/screen_blanker/ScreenBlanker.h +++ b/src/bin/screen_blanker/ScreenBlanker.h @@ -54,6 +54,7 @@ class ScreenBlanker : public BApplication { BMessageRunner* fStandByScreenRunner; BMessageRunner* fSuspendScreenRunner; BMessageRunner* fTurnOffScreenRunner; + bool IsPasswordWindowShown() const; }; #endif // SCREEN_SAVER_APP_H diff --git a/src/bin/screen_blanker/ScreenSaverWindow.cpp b/src/bin/screen_blanker/ScreenSaverWindow.cpp index 012767172e..eed8025411 100644 --- a/src/bin/screen_blanker/ScreenSaverWindow.cpp +++ b/src/bin/screen_blanker/ScreenSaverWindow.cpp @@ -57,11 +57,14 @@ ScreenSaverFilter::Filter(BMessage* message, BHandler** target) be_app->PostMessage(B_QUIT_REQUESTED); break; } - } else if (message->what == B_KEY_DOWN) { + } else if (message->what == B_KEY_DOWN + && dynamic_cast(be_app)->IsPasswordWindowShown()) { // Handle the escape key when the password window is showing - const char *string = NULL; - if (message->FindString("bytes", &string) == B_OK && string[0] == B_ESCAPE) + const char* string = NULL; + if (message->FindString("bytes", &string) == B_OK + && string[0] == B_ESCAPE) { be_app->PostMessage(kMsgResumeSaver); + } } return B_DISPATCH_MESSAGE;